2011-06-17 14 views
5

この問題はまだ3日以降解決されていません。本当にありがとうございます。WSDLファイルでXsdスキーマの場所が見つかりません

問題:私のeclipseプロジェクトディレクトリにあるwsdlファイルをハードディスクからsoapUIに表示すると、このWebサービスは正常に動作します。これは正しくWSDLを公開するが、スキーマを見つけるカント

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

、私はあるsoapUIからエラーを取得:

ERROR:失敗したロードするが、それは、私のようにURLを与える場合には要求スキーマファイルを見つけることができませんURL [にhttp:// localhost:8080/MWP/MWS/Request.xsd]

これは春の設定ファイル

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

です

これは、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>     

、これは私が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> 

答えて

8

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

へ:

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

は、Request.xsdのスキーマ解決を機能させる必要があります。 MessageDispatcherServletはXsdSchema型を探し、id/nameに基づいてxsdのスキーマへの要求を解決します。

+0

うわー、私はあなたにこれを100ポイント、Tnx今働きたいと思います!私のResponse.xsdはwsdlの作成中にRequest.xsdと同じようにインポートされますか?私はrequest.xmlの妥当性を検証するだけなので、response.xsdはクライアントのためのもので、レスポンスの見え方を知っていますか? – Spring

関連する問題