2011-06-16 2 views
1

Я хочу создать свой wsdl с помощью spring-ws автоматически, и я вставил код ниже в свой контекстный файл приложения, но я получил ошибку;динамическое создание wsdl по ошибке spring-ws

«Не удается найти BeanDefinitionParser для элемента [динамическом] WSDL»

что это значит и что мне делать? Того

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:sws="http://www.springframework.org/schema/web-services" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org /schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-2.0.xsd 
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 


<bean id="payloadMapping" 
     class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping"> 
    <property name="defaultEndpoint" ref="inferenceEndPoint" /> 
    <property name="interceptors"> 
     <list> 
      <ref local="validatingInterceptor" /> 
      <ref local="payLoadInterceptor" /> 
     </list> 
    </property> 
</bean> 

<bean id="payLoadInterceptor" 
    class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor" /> 

<bean id="validatingInterceptor" 
    class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor"> 
    <description> 
     This interceptor validates the incoming 
     message contents 
     according to the 'Request.xsd' XML 
     Schema file. 
    </description> 
    <property name="schema" value="/WEB-INF/schemas/Request.xsd" /> 
    <property name="validateRequest" value="true" /> 
    <property name="validateResponse" value="false" /> 
</bean> 

<bean id="inferenceEndPoint" class="com.mywebsite.ws.web.InferenceEndPoint"> 
    <property name="messageService" ref="messageService" /> 
</bean> 

<bean id="messageService" class="com.mywebsite.ws.service.MessageService"> 
    <property name="inferenceService" ref="inferenceService" /> 
</bean> 

<bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema"> 
    <property name="xsd" value="/WEB-INF/schemas/Request.xsd" /> 
</bean> 

    <sws:dynamic-wsdl id="mtwsdl" 
    portTypeName="mtWS" 
    locationUri="http://localhost:8080/mws/"> 
<sws:xsd location="/WEB-INF/schemas/Request.xsd" /> 
    </sws:dynamic-wsdl> 
<bean id="inferenceService" class="com.mywebsite.ws.im.InferenceService"> 
    <property name="webServiceConfiguration" ref="playerConfiguration" /> 
</bean> 

<!-- <bean id="inferenceConfig" class="com.mywebsite.ws.im.InferenceService"> 
    <constructor-arg ref="playerConfiguration"/> </bean> --> 

<!-- ~~~~~~~ Application beans ~~~~~~~ --> 
<bean id="playerConfiguration" 
    class="com.mywebsite.ws.configuration.WebServiceConfiguration" 
    init-method="init"> 
    <property name="playerConfigXml" value="/WEB-INF/config/webserviceconfiguration.xml" /> 
    <property name="executingPathResource" value="/WEB-INF" /> 
    <property name="developmentMode" value="true" /> 
</bean> 

ответ

0

Я предлагаю вам взглянуть на пути класса, а также запустить сервер время путь, я думаю, вы можете имеют как (spring-ws 1.5.x, так и spring-ws 2.x) версии файлов jar либо в пути компиляции/времени выполнения. Если это не так, очистите оба класса и путь времени выполнения и добавьте только файлы jar Spring-ws 2.x.

Что касается различий, когда имя Spring Framework пространства обработчика (WebServicesNamespaceHandler) встречи (динамического WSDL тега в весной контексте файла), он будет регистрировать (DynamicWsdlBeanDefinitionParser) боб со всеми свойствами, указанных в динамическом тег wsdl. Это по сути то же самое, что вы регистрируете bean-компонент (DefaultWsdl11Definition) в весеннем контексте.

1

Заменить первую часть вашего контекста приложения, где вы определяете пространство имен:

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:sws="http://www.springframework.org/schema/web-services" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-2.0.xsd 
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 
+0

еще такая же ошибка, в то время как автоматическое создание WSDL, что является разница между использованием подхода выше, и использовать что-то вроде этого <боба ид = «wsdlGeneration» \t класс = "org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition "> \t имя \t <свойство =" схема "исх = "схема"/> \t \t <имя свойства = "portTypeName" значение = "MyWS"/> \t \t <свойство имя = "" значение =" locationUri/mws/"/> \t \t Spring

+0

Обновление, очистка, повторное развертывание, вы не можете иметь одинаковую ошибку, ваши определения схемы были неправильными, и они являются правильными. (Воспроизведена ваша точная ошибка и после замены определений схемы они исчезли) - какую IDE вы используете? – abalogh

+0

Eclipse, Нет, он не работал с такими же ошибками, пожалуйста, проверьте, что я редактировал мой файл конфигурации выше, вы можете увидеть весь файл выше – Spring

1

Я настоятельно рекомендую использовать Maven. Ошибка, которую вы получаете, связана с отсутствующей библиотекой. В Maven у вас должна быть запись вроде следующего.

<dependency> 
     <groupId>org.springframework.ws</groupId> 
     <artifactId>spring-ws-core</artifactId> 
     <version>2.1.0.RELEASE</version> 
    </dependency> 
Смежные вопросы