0

私が間違った用語を使用していたらすみません、私はこれに少し慣れていません。Sun の JAX-WS RI "Provider" 実装を使用して Web サービスを作成しました。このサービスにプレーンな XML を送信すると、プレーンな XML で応答します。これを Spring に移動しようとしたので、Spring コンテキストを介してサービスにアクセスできますが、現在は使用していない SOAP エンベロープを探しています。SOAP を使用していないことをどのように伝えますか?

私の web.xml は次のようになります。

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
    <display-name>MyServiceImpl</display-name>
    <servlet-name>MyServiceImpl</servlet-name>
    <servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>MyServiceImpl</servlet-name>
    <url-pattern>/myServiceUrl</url-pattern>
</servlet-mapping>

そして、ここに私のapplicationContext.xmlがあります:

<!-- this bean implements web service methods -->
<bean id="myService" class="com.acme.MyServiceImpl" />

<bean class="com.sun.xml.ws.transport.http.servlet.SpringBinding">
    <property name="url" value="/myServiceUrl" />
    <property name="service">
        <bean class="org.jvnet.jax_ws_commons.spring.SpringService">
            <property name="bean">
                <ref local="myService" />
            </property>
            <property name="impl" value="com.acme.MyServiceImpl" />
        </bean>
    </property>
</bean>

私のサービスクラスは次のようになります。

@javax.xml.ws.WebServiceProvider
@javax.xml.ws.ServiceMode(value=javax.xml.ws.Service.Mode.MESSAGE)
public class MyServiceImpl implements Provider<Source> {

@Override
public Source invoke(Source source) {
... // unmarshal the source object using JAXB, do work, marshall a response back
}

基本的な XML をサービスに送信したときに受け取るエラー メッセージは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope"><faultcode>S:Client</faultcode><faultstring>Couldn't create SOAP message due to exception: unexpected XML tag. expected: {http://schemas.xmlsoap.org/soap/envelope/}Envelope but found: {}Request</faultstring></S:Fault></S:Body></S:Envelope>

SOAP を削除するにはどうすればよいですか?

4

1 に答える 1

0

それを見つけた; Web サービス Bean で bindingId (以前に sun-jaxws.xml で定義されたもの) を指定する必要があります。

<property name="service">
    <bean class="org.jvnet.jax_ws_commons.spring.SpringService">
        <property name="bean">
            <ref local="myService" />
        </property>
        <property name="impl" value="com.acme.MyServiceImpl" />
        <property name="bindingID" value="http://www.w3.org/2004/08/wsdl/http" />
    </bean>
</property>
于 2013-08-14T15:47:06.697 に答える