0

このようなスプリング構成を使用して CustomHandler を追加しています。正常に動作しています。ドキュメントによると、 customHandlerResolverはプロキシごとに 1 回呼び出されます 。

ここに問題があります。SOAP リクエストごとに動的なセキュリティ トークン ヘッダーを追加する必要があります。ハンドラーは 1 回しか呼び出されないため、トークンは一定時間後に期限切れになり、更新されたトークンを設定できません。

   <bean id="myServicePort" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean">
        <property name="serviceInterface" value="org.my.myService" />
        <property name="wsdlDocumentUrl" value="classpath:wsdl/mysoap.wsdl" />
        <property name="namespaceUri" value="http://services.mycom.org" />
        <property name="serviceName" value="OrderService" />
        <property name="endpointAddress" ref="OrderEndPoint" />
        <property name="handlerResolver" ref="customHandlerResolver"/>
   </bean>
4

2 に答える 2

0

前述したように、Bean のスコープに関係なく、HandlerResolver は 1 回だけ呼び出されます。Spring 自体がプロキシを作成する上記の Spring プロキシとは異なり、Bean の作成をより詳細に制御できるように、CXF - org.apache.cxf.jaxws.JaxWsProxyFactoryBean を使用しました。

 <bean id="proxyFactory"
    class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
    <property name="serviceClass" value="org.my.myService"/>
    <property name="address" value="http://localhost:9002/HelloWorld"/>
  </bean>

私のクライアントコードでは

//Set a handler 
proxyFactory.setHandlers( Arrays.asList((Handler) new TokenHandler(Token)));
OrderService orderServicePort=  (myService) proxyFactory.create();

//Call service method, as SOAP message has desired dynamic header
orderServicePort.getXXX()

これは完全に機能し、最初の春の設定よりも冗長ではありません

于 2013-10-29T17:11:40.747 に答える
0

Bean スコープ プロトタイプを使用してみましたか。

<bean id="myServicePort" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean" scope="prototype">
    <property name="serviceInterface" value="org.my.myService" />
    <property name="wsdlDocumentUrl" value="classpath:wsdl/mysoap.wsdl" />
    <property name="namespaceUri" value="http://services.mycom.org" />
    <property name="serviceName" value="OrderService" />
    <property name="endpointAddress" ref="OrderEndPoint" />
    <property name="handlerResolver" ref="customHandlerResolver"/>

于 2013-10-26T11:08:39.323 に答える