Spring-WS を使用する場合、私は常にアノテーションを使用しているため、構成は非常に最小限です。最近、SOAP 応答に添付ファイルを含める方法をテストし、それを機能させる方法をテストしようとしていましたが、最終的に次の構成になりました。
<bean id="messageReceiver"
class="org.springframework.ws.soap.server.SoapMessageDispatcher">
<property name="endpointAdapters">
<list>
<ref bean="defaultMethodEndpointAdapter" />
</list>
</property>
</bean>
<bean id="defaultMethodEndpointAdapter"
class="org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter">
<property name="methodArgumentResolvers">
<list>
<!-- Be careful here! You might need to add more processors if you do
more than webservices! -->
<ref bean="marshallingPayloadMethodProcessor" />
</list>
</property>
<property name="methodReturnValueHandlers">
<list>
<ref bean="marshallingPayloadMethodProcessor" />
</list>
</property>
</bean>
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="com.mypackage.ws" />
<property name="mtomEnabled" value="true" />
</bean>
<bean id="marshallingPayloadMethodProcessor"
class="org.springframework.ws.server.endpoint.adapter.method.MarshallingPayloadMethodProcessor">
<constructor-arg ref="marshaller" />
<constructor-arg ref="marshaller" />
</bean>
上記で、添付ファイル付きの SOAP 応答を生成できます。問題は、何が起こっているのか本当に理解していないことです。(つまり、MTOM 添付ファイルを有効にする上記の構成は何ですか。
添付ファイルを有効にするには:
JAXB マーシャラーを構成する必要があるのはなぜですか? 添付ファイルを使用しないすべての Web サービスは、この構成がなくても正常に動作します。@EndPoint アノテーションを使用するだけです。非添付 Web サービスの要求/応答オブジェクトも JAXB ベースであるため、これはおそらく私がこれを正しく行っていないことを示唆しています (たとえそれが機能していても)。
上記の構成に示されている messageReceiver および defaultmethodEndpointAdapter Bean の目的は何ですか? 非添付エンドポイントは、これらがなくても正常に機能します。
最後に、XML の代わりに上記の構成のいずれかに注釈を付けることができますか? JAX-WS には @MTOM アノテーションがあることに気付きましたが、Spring-WS に相当するものが見つかりませんでした
サービスは期待どおりに機能しますが、構成が正しくない可能性があるのではないかと少し心配しています。これらが必要な理由を理解したいので、自分のしていることは正しいか間違っているかについて、より良い判断を下すことができるかもしれません。
前もって感謝します