Menu Close
41.2. サービスプロバイダーでの XML の使用
概要
Provider インターフェースは低レベル JAX-WS API で、未加工の XMLとしてメッセージと直接連携するサービスプロバイダーを実装できます。メッセージは、Provider インターフェースを実装するオブジェクトに渡される前に JAXB オブジェクトにパッケージ化されることはありません。
41.2.1. メッセージングモード
概要
Provider インターフェースを実装するオブジェクトには 2 つの メッセージングモード があります。
メッセージングモードの指定により、実装に渡されるメッセージングの詳細レベルが決定されます。
メッセージモード
メッセージモード の使用時には、Provider 実装は完全なメッセージと共に機能します。完全なメッセージには、バインディング固有のヘッダーおよびラッパーが含まれます。たとえば、SOAP バインディングを使用する Provider 実装は、完全に指定された SOAP メッセージとしてリクエストを受け取ります。実装から返されるすべての応答は、完全に指定された SOAP メッセージである必要があります。
Provider 実装がメッセージモードを使用するように指定するには、例41.9「メッセージモードを使用する Provider 実装の指定」に示すように、値 java.xml.ws.Service.Mode.MESSAGE を javax.xml.ws.ServiceMode
アノテーションの値として提供します。
例41.9 メッセージモードを使用する Provider 実装の指定
@WebServiceProvider @ServiceMode(value=Service.Mode.MESSAGE) public class stockQuoteProvider implements Provider<SOAPMessage> { ... }
ペイロードモード
ペイロードモード では、Provider 実装はメッセージのペイロードとのみ動作します。たとえば、ペイロードモードで動作している Provider 実装は、SOAP メッセージのボディーとのみ動作します。バインディングレイヤーは、バインディングレベルのラッパーおよびヘッダーを処理します。
Apache CXF XML バインディングなどの特別なラッパーを使用しないバインディングを操作する場合は、ペイロードモードとメッセージモードで同じ結果が得られます。
Provider 実装がペイロードモードを使用するように指定するには、例41.10「ペイロードモードを使用する Provider 実装の指定」に示すように、値 java.xml.ws.Service.Mode.PAYLOAD を javax.xml.ws.ServiceMode
アノテーションの値として提供します。
例41.10 ペイロードモードを使用する Provider 実装の指定
@WebServiceProvider @ServiceMode(value=Service.Mode.PAYLOAD) public class stockQuoteProvider implements Provider<DOMSource> { ... }
@ServiceMode
アノテーションの値を指定しない場合、Provider 実装はペイロードモードを使用します。