9.19. 添付

JBoss-WS4EE は SwA (SOAP with Attachments) と呼ばれる廃止された添付に依存しています。 SwA には WS-I Basic Profile では禁止されている soap/encoding を使用する必要があります。 JBossWS は WS-I AP 1.0と MTOM へのサポートを提供します。

9.19.1. MTOM/XOP

本セクションでは、 特定タイプのコンテンツを持つ XML 情報セットの連続化をより効率的に行う方法として Message Transmission Optimization Mechanism (MTOM) および XML-binary Optimized Packaging (XOP) について説明していきます。 関連する仕様は以下の通りです。

9.19.1.1. 対応 MTOM パラメータータイプ

image/jpeg
java.awt.Image
text/xml
javax.xml.transform.Source
application/xml
javax.xml.transform.Source
application/octet-stream
javax.activation.DataHandler
上記の表では対応エンドポイントパラメーターのタイプ一覧を示しています。 推奨される手段は javax.activation.DataHandler クラスを使用してバイナリデータをサービスエンドポイントパラメーターとして表す方法です。

注記

Microsoft エンドポイントはあらゆるデータを application/octet-stream として送信する傾向にあります。 この曖昧性に容易に対処できる唯一の Java タイプは javax.activation.DataHandler になります。

9.19.1.2. エンドポイントごとに MTOM を有効にする方法

サーバー側で、 MTOM 処理は@BindingType アノテーションで有効にされます。 JBossWS は SOAP1.1 および SOAP1.2 を処理します。 いずれも MTOM があってもなくても使用できます。
MTOM が有効化されたサービス実装
package org.jboss.test.ws.jaxws.samples.xop.doclit;
  
import javax.ejb.Remote;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.BindingType;
  
@Remote
@WebService(targetNamespace = "http://org.jboss.ws/xop/doclit")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, parameterStyle = SOAPBinding.ParameterStyle.BARE)
@BindingType(value="http://schemas.xmlsoap.org/wsdl/soap/http?mtom=true")                         (1)
public interface MTOMEndpoint
{
...
}
  1. MTOM 有効の SOAP 1.1 バインディング ID
MTOM が有効化されたクライアント
Web サービスクライアントは前述と同じ方法を使用するか、 または MTOM の有効化を Binding API に依存することができます (org.jboss.test.ws.jaxws.samples.xop.doclit.XOPTestCase からの抜粋):
...
Service service = Service.create(wsdlURL, serviceName);
port = service.getPort(MTOMEndpoint.class);
  
// enable MTOM
binding = (SOAPBinding)((BindingProvider)port).getBinding();
binding.setMTOMEnabled(true);

注記

デプロイメントのデフォルト設定に JBossWS 設定テンプレートを使用します。