2016-06-15 7 views
1

私はゲートウェイとサービスをセットアップしましたが、Webメソッドはラップされたオブジェクトではなく、わずか4つのストリングです。 java.lang.Stringで "として -Spring統合アウトバウンドゲートウェイによって4つの文字列パラメータでWebサービスメソッドを使用するにはどうすればよいですか?

JAXBはエラー

「: [com.sun.istack.internal.SAXException2タイプをマーシャリングすることができませんでしリンクされた例外とjavax.xml.bind.MarshalException " を提起しましたそれはそれはない@XmlRootElement注釈]」

public interface WebMethodGateway { 

    @Gateway 
    @Payload("#args[0] + #args[1] + #args[2] + #args[3]") 
    public Response invoke(String arg1, String arg2, String arg3, String arg4); 

} 

integration.xmlすべての

<int-ws:outbound-gateway id="outboundGateway" 
    request-channel="requestChannel" 
    reply-channel="responseChannel" 
    uri="http://localhost:8080/Service?wsdl" 
    message-sender="messageSender" 
    marshaller="marshaller" 
    unmarshaller="marshaller"/> 

<bean id="messageSender" class="org.springframework.ws.transport.http.HttpComponentsMessageSender"> 
    <property name="connectionTimeout" value="5000"/> 
    <property name="readTimeout" value="10000"/> 
</bean> 


<int:channel id="requestChannel"/> 
<int:channel id="responseChannel"/> 

<oxm:jaxb2-marshaller id="marshaller" context-path="myProject.ws.bean" /> 

<int:gateway id="webMethodGateway" 
    default-request-channel="requestChannel" 
    default-reply-channel="responseChannel" 
    service-interface="myProject.ws.gateway.WebMethodGateway" /> 

答えて

0

ファーストが欠落しているので、要素4 Strings、それは単一の連結された文字列です:

​​

もう一つの懸念です。

<int-ws:outbound-gateway>はWebサービス用SOAPです。したがってXML。 右のJaxBはXMLを生成しますが、これはドメインエンティティのためのものであり、単純な文字列ではありません。

文字列​​でJaxBをバイパスすることはできますが、実際には<soap:body>のコンテンツを表すXMLである必要があります。

関連する問題