2011-06-17 12 views
5

Este problema aún no se resuelve desde hace 3 días, realmente lo agradezco si alguien puede ayudar, aquí está todo el código siguiente.La ubicación del esquema de Xsd no se puede encontrar en el archivo WSDL

El problema es que este servicio web funciona bien si muestro el archivo wsdl (que está en mi directorio de proyectos de eclipse) a la soapUI del disco duro. Pero no puede encontrar el archivo de solicitud de esquema si yo dé la URL como:

http://localhost:8080/mwp/mws/mwsid.wsdl 

Este exponga el WSDL correctamente, pero no puede encontrar el esquema, me sale el error de soapUI:

ERROR: No se pudo cargar url [http: // localhost: 8080/MWp/MWS/Request.xsd]

este es el archivo de configuración de la primavera

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sws="http://www.springframework.org/schema/web-services" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:aop="http://www.springframework.org/schema/aop" 
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 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> 

<description> 
</description> 

<bean id="webServicePluginDescriptor" 
    class="com.mywebsite.ws.configuration.mtchWebservicePluginDescriptor" /> 

<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"> 

    <property name="schema" 
     value="classpath:/wsdl/Request.xsd" /> 
    <property name="validateRequest" value="true" /> 
    <property name="validateResponse" value="false" /> 
</bean> 

<bean id="PropertyResource" class="com.mywebsite.ws.im.PropertyResource"> 
    <property name="resource" 
     value="/WEB-INF/client-specific/InferenceMachine.properties" /> 
</bean> 

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

<bean id="messageWebService" class="com.mywebsite.ws.service.MessageWebService" 
    scope="request"> 
    <aop:scoped-proxy /> 
    <property name="inferenceService" ref="inferenceService" /> 
</bean> 

<bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema"> 
    <property name="xsd" value="classpath:/wsdl/Request.xsd" /> 
</bean> 

<bean id="mwsid" 
    class="org.springframework.ws.wsdl.wsdl11.SimpleWsdl11Definition"> 
    <constructor-arg value="classpath:/wsdl/mtchwsdl.wsdl" /> 
</bean> 

<bean id="inferenceService" class="com.mywebsite.ws.im.InferenceService" 
    scope="request"> 
    <aop:scoped-proxy /> 
    <property name="webServiceConfiguration" ref="wsPlayerConfiguration" /> 

    <property name="properties"> 
     <bean class="com.mywebsite.ws.im.PropertyResource"> 
      <property name="resource" 
       value="/WEB-INF/client-specific/InferenceMachine.properties" /> 
     </bean> 
    </property> 
</bean> 

<!-- ~~~~~~~ Application beans ~~~~~~~ --> 
<bean id="wsPlayerConfiguration" 
    class="com.mywebsite.ws.configuration.WebServiceConfiguration" 
    scope="request"> 
    <aop:scoped-proxy /> 
    <property name="playerConfiguration" ref="playerConfiguration"></property> 
    <property name="configurationSetup" ref="configurationSetup"></property> 
</bean> 

Este es el archivo WSDL:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
       xmlns:schema="http://www.mywebsitex.com/xml/webservice" 
       xmlns:tns="http://www.mywebsitex.com/xml/webservice" 
       targetNamespace="http://www.mywebsitex.com/xml/webservice"> 


<wsdl:types> 
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <xsd:import namespace="http://www.mywebsitex.com/xml/webservice"      
      schemaLocation="Request.xsd"/> 
    </xsd:schema> 

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <xsd:import namespace="http://www.mywebsitex.com/xml/webservice"      
      schemaLocation="Response.xsd"/> 
    </xsd:schema> 

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <xsd:import namespace="http://www.mywebsitex.com/xml/webservice"      
      schemaLocation="Error.xsd"/> 
    </xsd:schema> 
</wsdl:types> 


<wsdl:message name="inferencerequest">             
    <!-- <wsdl:part element="schema:inferencerequest" name="inferencerequest"/> -->    
</wsdl:message> 
<wsdl:message name="inferenceresponse">             
    <!-- <wsdl:part element="schema:inferenceresponse" name="inferenceresponse"/> -->    
</wsdl:message> 
<wsdl:message name="errorresponse">             
    <!-- <wsdl:part element="schema:errorresponse" name="errorresponse"/> -->    
</wsdl:message> 

<wsdl:portType name="mtchWS">             
    <wsdl:operation name="inference"> 
     <wsdl:input message="tns:inferencerequest" name="inferencerequest"/> 
     <wsdl:output message="tns:inferenceresponse" name="inferenceresponse"/> 
     <wsdl:fault message="tns:errorresponse" name="errorresponse"/>    
    </wsdl:operation> 
</wsdl:portType> 

<wsdl:binding name="mtchWSBinding" type="tns:mtchWS">     
    <soap:binding style="document"             
     transport="http://schemas.xmlsoap.org/soap/http"/>       
    <wsdl:operation name="inference"> 
     <soap:operation soapAction="http://www.mywebsitex.com/webservice"/>   
     <wsdl:input name="inferencerequest"> 
      <soap:body use="literal"/>            
     </wsdl:input> 
     <wsdl:output name="inferenceresponse"> 
      <soap:body use="literal"/> 
     </wsdl:output> 
     <wsdl:fault name="errorreponse"> 
      <!-- <soap:fault use="literal"/>--> 
     </wsdl:fault> 
    </wsdl:operation> 
</wsdl:binding> 

<wsdl:service name="mtchWSService"> 
    <wsdl:port binding="tns:mtchWSBinding" name="mtchWSPort">   
     <soap:address location="http://localhost:8080/mwp/mws"/>    
    </wsdl:port> 
</wsdl:service>     

y esto es como defino en el web.xml:

<servlet> 
    <servlet-name>mws</servlet-name> 
    <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
      <param-value>classpath:/resources/mtchwebservice/applicationContext-MtchWebService.xml</param-value> 
    </init-param> 

    <init-param> 
     <param-name>transformWsdlLocations</param-name> 
     <param-value>true</param-value> 
    </init-param> 

    <load-on-startup>2</load-on-startup> 
</servlet> 

Respuesta

8

cambiante:

<bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema"> 
    <property name="xsd" value="classpath:/wsdl/Request.xsd" /> 
</bean> 

a:

<bean id="Request" class="org.springframework.xml.xsd.SimpleXsdSchema"> 
    <property name="xsd" value="classpath:/wsdl/Request.xsd" /> 
</bean> 

debe obtener la resolución de esquema de Request.xsd para que funcione. El MessageDispatcherServlet busca los tipos de XsdSchema y resuelve la solicitud de un xsd para el esquema según el id/nombre.

+0

Wow, me gustaría darle un punto 100 para esto, Tnx trabajando ahora! ¿Mi Response.xsd es tan importante como Request.xsd mientras crea wsdl? Como solo valida el request.xml, response.xsd es algo para los clientes que buscan y saben cómo se ve una respuesta. – Spring

Cuestiones relacionadas