Hitachi

Cosminexus V11 アプリケーションサーバ Webサービス開発ガイド


36.9.1 Webサービス側のハンドラチェインの設定

Webサービス側でハンドラチェインを設定する場合,javax.jws.HandlerChainアノテーションでSEI,Webサービス実装クラス,またはプロバイダ実装クラスをアノテートし,javax.jws.HandlerChainアノテーションのfile要素でハンドラチェイン設定ファイルを指定します。

javax.jws.HandlerChainアノテーションでWebサービス実装クラスをアノテートした例を示します。

package com.sample;
 
@javax.jws.WebService
@javax.jws.HandlerChain(file="handlers.xml")
public class AddNumbersImpl{
 
    public int add( int number1, int number2 ) throws AddNumbersFault{
      ...
    }
 
}

この例では,Webサービス実装クラスcom.sample.AddNumbersImplにハンドラチェイン設定ファイルhandlers.xmlで定義されたハンドラチェインを関連づけています。

ハンドラチェイン設定ファイルは,Webサービスごとに必要になります。複数のWebサービスで共有してもかまいませんが,その場合は,同じ設定が適用されます。

javax.jws.HandlerChainアノテーションについては,「16.2.3 javax.jws.HandlerChainアノテーション」を参照してください。

〈この項の構成〉

(1) ハンドラチェイン設定ファイル

ハンドラチェイン設定ファイルは,ハンドラを使用してWebサービスに処理を追加した場合に,ハンドラチェインの構成を定義するファイルです。javax.jws.HandlerChainアノテーションのfile要素で指定します。

ハンドラチェイン設定ファイルのサポート範囲については,「19.4 ハンドラチェイン設定ファイルのサポート範囲」を参照してください。ここでは,ハンドラチェイン設定ファイルの構文および配置について説明します。

(a) ハンドラチェイン設定ファイルの構文

ハンドラチェイン設定ファイルの構文は,Java EE 5仕様の標準スキーマ(Java EE Web Services Metadata Handler Chain Schema),およびApplication ServerのJAX-WS機能でサポートされる範囲で記述します。

標準のスキーマは,Java EE 5の名前空間URI(http://java.sun.com/xml/ns/javaee/)にアクセスすることで参照できます。ハンドラチェイン設定ファイルの記述例を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
  <handler-chain>
    <handler>
      <handler-class>org.test.handler.LoggingHandler</handler-class>
    </handler>
  </handler-chain>
</handler-chains>

(b) ハンドラチェイン設定ファイルの配置

ハンドラチェイン設定ファイルは,次に示す場所に格納します。

  • POJOのWebサービスの場合:WARファイルのWEB-INFディレクトリ以下

  • EJBのWebサービスの場合:EJB JAR

OSのファイルシステムの制限とJava EE 5仕様に従っていて,WARファイルまたはEJB JARファイルに格納できれば,ファイル名,WEB-INFディレクトリ以下のディレクトリ名,EJB JARのディレクトリ名,およびパスの長さに制限はありません。

(2) SOAPロールとアクタの設定

SOAPロールおよびアクタの設定を省略した場合,または空文字を指定した場合は,デフォルトの値が設定されます。デフォルトの値は,SOAP 1.1仕様のSOAPメッセージの場合は"http://schemas.xmlsoap.org/soap/actor/next",SOAP 1.2仕様のSOAPメッセージの場合は"http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"です。

(3) soap:mustUnderstand属性の設定

soap:mustUnderstand属性には,"0","1","true",または"false"を設定してください。それ以外の値を設定した場合は,"0"または"false"が設定されているものと見なされます。