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