ナビゲーションをスキップ

WebLogic Web サービス プログラマーズ ガイド

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

source2wsdd タグのリファレンス

この章では、source2wsdd の Javadoc タグについて説明します。

 


source2wsdd タグの使い方の概要

source2wsdd Ant タスクは、ステートレス セッション EJB または Java クラスを使用して実装される WebLogic Web サービスの Java ソース ファイルから web-services.xml デプロイメント記述子ファイルを生成します。web-services.xml デプロイメント記述子ファイルには、1 つまたは複数の WebLogic Web サービスを記述する情報が入っています。この情報には、Web サービスのオペレーションを実装するバックエンド コンポーネント、パラメータおよび戻り値として使用される非組み込みデータ型、SOAP メッセージをインターセプトする SOAP メッセージ ハンドラなどの詳細情報が含まれます。他のすべてのデプロイメント記述子の場合と同様に、web-services.xml も XML ファイルです。

この章では、source2wsdd Ant タスクが web-services.xml ファイルを自動的に生成するために使用する Java ソース ファイルで使用できるオプションの Javadoc タグを説明します。Java ソース ファイルに Javadoc タグがない場合、source2wsdd Ant タスクは要素をファイルに追加するときに最適な推測を行います (Web サービスの名前やエクスポーズすべきオペレーションなど)。ただし、生成される web-services.xml ファイルをより細かく操作する必要がある場合は、source2wsdd Javadoc タグで Web サービスがどのようなものかを正確に指定します。

以下の 3 つの source2wsdd Javadoc タグがあります。

各タグには、それが記述する web-services.xml ファイルの適切な要素に対応する属性のセットがあります。

 


@wlws:webservice

source2wsdd Ant タスクは、@wlws:webservice タグを使用して、生成された web-services.xml ファイルの <web-service> 要素を設定します。

@wlws:webservice タグは、Web サービスを実装するクラスの Javadoc で指定します。

次の例は、Java クラスをドキュメント化する Javadoc で @wlws:webservice タグを使用する方法を示しています。

/** 
* PurchaseOrderService - WebLogic Web サービスのさまざまな機能を
* 見せるサービス
*
* @wlws:webservice
* targetNamespace="http://www.bea.com/po-service/"
* name="PurchaseOrderService"
* portName="POPort"
* portTypeName="POPort"
* protocol="https"
*/
public class POService {
...
}

この例の POService Java クラスは、PurchaseOrderService (@wls:webservice タグの name 属性で指定) という名前の Web サービスを実装するバックエンド コンポーネントです。Web サービスの生成された WSDL の <port> 要素と <portType> 要素は、両方とも POPort です。クライアント アプリケーションは、デフォルトの HTTP ではなく HTTPS を使用して Web サービスにアクセスします。

次の表は、@wlws:webservice タグのすべての属性のリストです。

表 C-1 @wlws:webservice source2wsdd タグの属性

属性名

説明

属性を指定しない場合のデフォルト値

Name

WSDL でパブリッシュされた Web サービスの名前。

アノテーション付きソース コードにあるクラスの名前。

portName

この Web サービスの動的に生成された WSDL の <service> 要素の <port> 子要素の名前。

Web サービスの名前に Port を付けたもの。たとえば、この Web サービスの名前が TraderService の場合、デフォルトのポート名は TraderServicePort になる。

portTypeName

この Web サービスの動的に生成された WSDL で、デフォルトの <portType> 要素の名前。

この Web サービスの名前に Port を付けたもの。たとえば、この Web サービスの名前が TraderService の場合、デフォルトの portType 名は TraderServicePort になる。

protocol

Web サービスの呼び出しに使用されるプロトコル。

有効な値は http および https

デフォルト値は http

Style

Web サービスのオペレーションが RPC 指向かドキュメント指向かを指定する。

RPC 指向の WebLogic Web サービス オペレーションでは、SOAP エンコーディングを使用する。ドキュメント指向の WebLogic Web サービス オペレーションでは、リテラル エンコーディングを使用する。

documentdocumentwrapped を使用すると、ドキュメント指向の Web サービス オペレーションを生成できる。

document を指定した場合、Web サービスはパラメータを 1 つしか取らない。このため、このオペレーションを実装するメソッドもパラメータを 1 つしか取らない。この場合、source2wsdd が複数のパラメータを持つメソッドに遭遇すると、source2wsdd はそのメソッドを無視し、対応する Web サービス オペレーションが生成されない。

documentwrapped を指定した場合、Web サービス オペレーションはパラメータをいくつでも取ることができる。ただし、これらのパラメータの値は、SOAP メッセージの中に 1 つの複合データ型としてラップされる。Web サービスを実装するステートレス セッション EJB または Java クラスの複数のメソッドが同じパラメータ数とデータ型を取り、オペレーションをドキュメント指向にしたい場合、この属性値として document ではなく documentwrapped を指定する必要がある。

この属性の有効な値は rpcdocumentwrapped、および documentstyle 属性は Web サービス全体に適用されるので、1 つの WebLogic Web サービスのすべてのオペレーションが RPC 指向またはドキュメント指向のいずれかである必要がある。同じ Web サービスで 2 つのスタイルを混在させることはできない。

デフォルト値は rpc


targetNameSpace

Web サービスのネームスペース URI。

デフォルト値は http://tempuri.org

Uri

クライアント アプリケーションが Web サービスの呼び出しに使用する URL の Web サービス URI 部分。

注意 : /TraderService のように、先頭に「/」を必ず指定すること。

注意 : source2wsdd Ant タスクの serviceURI 属性を使用して URI を指定することもできる。両方で異なる URI を指定した場合は、@wlws:webservice Javadoc タグで指定された URI が優先する。

@wlws:webservice タグの Uri 属性を指定する必要はないが、source2wsdd Ant タスクの serviceURI は必ず指定する。つまり、デフォルト値はなく、Web サービスの URI は必ず指定する必要があるということ。

 


@wlws:operation

source2wsdd Ant タスクは、@wlws:operation タグを使用して、生成された web-services.xml ファイルの対応する <operation> 要素を設定します。

デフォルトでは、Web サービスを実装する Java クラスまたは EJB のすべてのパブリック メソッドは、生成された WSDL でオペレーションとしてエクスポーズされます。source2wsdd Ant タスクは、メソッドの情報 (シグネチャなど) を利用して <operation> 要素を設定します。@wlws:operation Javadoc タグを使用すると、デフォルト情報の一部 (オペレーション名など) を変更できます。@wlws:exclude タグを使用すると、パブリック メソッドが Web サービスのオペレーションとしてエクスポーズされないように設定できます。

@wlws:operation タグは、オペレーションを実装するメソッドの Javadoc で指定します。

次の例は、メソッドをドキュメント化する Javadoc で @wlws:operatione タグを使用する方法を示しています。

/** 
* 一方向の呼び出し。 クライアントはこのメソッドの呼び出しを
   * 待たない
*
* 注意 : 一方向の呼び出しには戻り値の型として void が必要
   *
* @wlws:operation
* invocation-style="one-way"
* Name="sendTime"
*/
public void oneWayCall( long time ){
.....
}

この例の oneWayCall メソッドは、sendTime (WSDL でパブリッシュされたオペレーションの名前) という Web サービスのオペレーションを実装します。このオペレーションは一方向です。つまり、クライアント アプリケーションは戻り値を受け取りません。

次の表は、@wlws:operation タグのすべての属性のリストです。

表 C-2 @wlws:operation source2wsdd タグの属性

属性名

説明

属性を指定しない場合のデフォルト値

Handler-chain

メソッドと一緒にオペレーションを実装する SOAP メッセージ ハンドラ チェーンの名前。

この属性の名前は、SOAP ハンドラ チェーンの情報が含まれているファイルの適切な <handler-chain> 要素の name 属性に対応する。このファイルは手作業で作成する必要があり、その位置は source2wsdd Ant タスクの handlerInfo 属性で指定する。


この属性を指定しないと、web-services.xml ファイルの <operation> 要素にハンドラ チェーンの情報は追加されない。

invocation-style

オペレーションが SOAP リクエストの受信と SOAP 応答の送信の両方を行うか (request-response)、または SOAP 応答の返信は行わずに SOAP リクエストの受信のみを行うか (one-way) を指定する。

有効な値は request-responseone-way

注意 : このオペレーションを実装するバックエンド コンポーネントが、ステートレス セッション EJB または Java クラスのメソッドである場合にこの属性を one-way に設定すると、メソッドにより void が返される。

デフォルト値は request-response

Name

オペレーションの名前。これは、Web サービスの WSDL でパブリッシュされる名前。

Java ソース ファイルにあるメソッドの名前。

 


@wlws:part partname

source2wsdd Ant タスクは、@wlws:part タグを利用して、生成された web-services.xml ファイルでオペレーションのパラメータと戻り値を記述する <param> 要素と <return-param> 要素を設定します。

Web サービスを実装する Java クラスまたは EJB のすべてのパブリック メソッドは、生成された WSDL でオペレーションとしてエクスポーズされます。source2wsdd Ant タスクは、メソッドのシグネチャの情報を使用してオペレーションのパラメータと戻り値に関する基本情報を確認します。ただし、このデフォルト情報の一部を変更する必要がある場合は、メソッドの Javadoc で @wlws:part タグを指定します。特に、以下の場合にタグの属性を使用します。

@wlws:part タグは、オペレーションを実装するメソッドの Javadoc で使用します。パラメータの名前は、次のようにタグの直後で属性の前に指定します。

@wlws:part paramName attribute="value" 

戻り値を指定するには、次のようにハードコード化された単語 return を使用します。

@wlws:part return attribute="value" 

次の例は、メソッドをドキュメント化する Javadoc で @wlws:part タグを使用する方法を示しています。

/** 
* ヘッダのオペレーション
   *
* @wlws:part addressInHeader location="header"
* @wlws:part dataInHeader location="header"
*
* @wlws:part return location="body"
*/
public BaseData methodWithHeaders( String addressInHeader,
int idInBody, BaseData dataInHeader ){
    dataInHeader.setAddress( addressInHeader );
dataInHeader.setId( idInBody );
    return dataInHeader;
}

この例では、クライアント アプリケーションが methodWithHeaders オペレーションを呼び出すと、addressInHeaderdataInHeader の入力パラメータが SOAP リクエストのヘッダに配置されます。WebLogic Server がオペレーションの呼び出しに応答するときには、戻り値が SOAP 応答の本文に配置されます。

次の表は、@wlws:part タグのすべての属性のリストです。

表 C-3 @wlws:part source2wsdd タグの属性

属性名

説明

属性を指定しない場合のデフォルト値

class-name

入力または戻りパラメータのデータ型の Java 表現の Java クラス名。

オペレーションのパラメータまたは戻り値のデータ型。

注意 : パラメータまたは戻り値の XML 表現と Java 表現の間のマッピングがあいまいで (xsd:intint Java プリミティブまたは java.lang.Integer へのマッピングなど)、この属性を指定しない場合、WebLogic Server はどのマッピングが適切なのかについて最適な推測を行う。

location

入力または戻りパラメータの値が配置されるリクエストまたは応答 SOAP メッセージの部分 (ヘッダ、本文、または添付ファイル)。

この属性の有効な値は、Body、Header、または attachment

Body を指定すると、入力または戻りパラメータの値は (パラメータが入力と戻りのどちらであるかに応じてリクエストまたは応答の) SOAP の本文に配置される。Header を指定すると、type 属性の値を名前に持つ SOAP ヘッダ要素に値が配置される。

attachment を指定すると、SOAP エンベロープではなく SOAP 添付ファイルにパラメータの値が配置される。JAX-RPC 仕様で指定されているように、SOAP 添付ファイルに配置できるのは以下の Java データ型のみ。

  • java.awt.Image

  • java.lang.String

  • javax.mail.internet.MimeMultiport

  • javax.xml.transform.Source

  • javax.activation.DataHandler

デフォルト値は Body。

name

パラメータの名前。これは、<part> 要素の Web サービスの WSDL でパブリッシュされる名前。

入力パラメータの場合、デフォルト値はメソッドのシグネチャにあるパラメータの名前。

戻りパラメータのデフォルト値は results

style

in パラメータ (標準入力パラメータ、戻り値として使用される out パラメータ、または値の入出力の両方に使用される inout パラメータ) のスタイル。

この属性の有効な値は、inout、または inout

パラメータを out または inout に指定すると、バックエンド コンポーネントのメソッド内のパラメータの Java クラスが javax.xml.rpc.holders.Holder インタフェースを実装する。

デフォルト値は in

type

パラメータの XML スキーマデータ型。

@wlws:part タグのこの属性を指定する場合は、source2wsdd Ant タスクの typesInfo 属性を使用して types.xml ファイルを指定することも必要。また、このタグで指定した XML スキーマ データ型が types.xml ファイルに存在し、2 つの要素の名前が正確に一致するようにすることも必要。source2wsdd Ant タスクが types.xml ファイルでこの XML スキーマ データ型の名前を見つけられない場合、Ant タスクはそれ独自のデータ型マッピング情報を生成する (その場合は Web サービスの動作がおかしくなることがある)。

この属性を指定しないと、XML データ型はパラメータの Java データ型に基づくことになる。

 


@wlws:exclude

source2wsdd Ant タスクでは @wlws:exclude タグを使用して、生成された Web サービスのオペレーションのリストから Java ソース ファイルのパブリック メソッドを除外します。

デフォルトでは、Web サービスを実装する Java クラスまたは EJB のすべてのパブリック メソッドは、生成された WSDL でオペレーションとしてエクスポーズされます。パブリック メソッドをエクスポーズしない場合には、そのメソッドの Javadoc に @wlws:exclude タグを明示的に追加する必要があります。

@wlws:exclude タグの使用例を次に示します。

  /**
* Web サービスのオペレーションとしてエクスポーズしないパブリック メソッド
   *
* @wlws:exclude
*/
public void dontExposeThisMethod(){
  }

この例では source2wsdd は、生成された webservices.xml ファイル内の Web サービスのオペレーションのリストに dontExposeThisMethod() パブリック メソッドを追加しません。そのため、このメソッドは生成された WSDL ファイルにも現れません。

@wlws:exclude タグは、属性を持ちません。

 

フッタのナビゲーションのスキップ  ページの先頭 前 次