ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server WebLogic Webサービス・リファレンス
11g リリース1 (10.3.6)
B61641-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

3 JWSアノテーション・リファレンス

この章では、WebLogic固有のJWSアノテーションに関するリファレンスを提供します。

この章では、以下のトピックについて説明します。

JWSアノテーション・タグの概要

WebLogic Webサービスのプログラミング・モデルは、JDK 5.0メタデータ・アノテーション機能(http://www.jcp.org/en/jsr/detail?id=175JSR-175で指定されている)を使用します。このプログラミング・モデルでは、アノテーション付きのJavaファイルを作成し、Antタスクを使用してそのファイルをJavaクラスにコンパイルし、関連するアーティファクトをすべて生成します。

アノテーション付きのJava Webサービス(JWS)ファイルは、Webサービスの中核部分です。このファイルにはWebサービスの動作を決定するJavaコードが含まれています。JWSファイルは、アノテーションを使用してWebサービスの形式や特性を指定した、通常のJavaクラス・ファイルです。

サポートされるJWSアノテーションは、JAX-WSを作成しているか、JAX-RPC Webサービスを作成しているかによって異なります。次の表は、JAX-WSとJAX-RPCにおけるWebサービスのアノテーション・サポートの比較を示しています。

JWSアノテーションは、JWSファイルのクラス、メソッド、またはパラメータのいずれかのレベルでターゲット指定できます。アノテーションの中には、複数のレベルでターゲット指定できるものもあります。たとえば、@SecurityRolesは、クラスとメソッドの両方のレベルでターゲット指定できます。

次に、標準JSR-181(太字で表示)を使用した簡単なJWSファイルの例を挙げます。

package examples.webservices.complex;
// Import the standard JWS annotation interfaces
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
// Import the BasicStruct JavaBean
import examples.webservices.complex.BasicStruct;
// Standard JWS annotation that specifies that the portType name of the Web
// Service is "ComplexPortType", its public service name is "ComplexService",
// and the targetNamespace used in the generated WSDL is "http://example.org"
@WebService(serviceName="ComplexService", name="ComplexPortType",
            targetNamespace="http://example.org")
// Standard JWS annotation that specifies this is a document-literal-wrapped
// Web Service
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT,
             use=SOAPBinding.Use.LITERAL,
             parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
/**
 * This JWS file forms the basis of a WebLogic Web Service.  The Web Services
 * has two public operations:
 *
 *  - echoInt(int)
 *  - echoComplexType(BasicStruct)
 *
 * The Web Service is defined as a "document-literal" service, which means
 * that the SOAP messages have a single part referencing an XML Schema element
 * that defines the entire body.
 *
*/
public class ComplexImpl {
  // Standard JWS annotation that specifies that the method should be exposed
  // as a public operation.  Because the annotation does not include the
  // member-value "operationName", the public name of the operation is the
  // same as the method name: echoInt.
  //
  // The WebResult annotation specifies that the name of the result of the
  // operation in the generated WSDL is "IntegerOutput", rather than the
  // default name "return".   The WebParam annotation specifies that the input
  // parameter name in the WSDL file is "IntegerInput" rather than the Java
  // name of the parameter, "input".
  @WebMethod()
  @WebResult(name="IntegerOutput",
             targetNamespace="http://example.org/complex")
  public int echoInt(
      @WebParam(name="IntegerInput",
                targetNamespace="http://example.org/complex")
      int input)
  {
    System.out.println("echoInt '" + input + "' to you too!");
    return input;
  }
  // Standard JWS annotation to expose method "echoStruct" as a public operation
  // called "echoComplexType"
  // The WebResult annotation specifies that the name of the result of the
  // operation in the generated WSDL is "EchoStructReturnMessage",
  // rather than the default name "return".
  @WebMethod(operationName="echoComplexType")
  @WebResult(name="EchoStructReturnMessage",
             targetNamespace="http://example.org/complex")
  public BasicStruct echoStruct(BasicStruct struct)
  {
    System.out.println("echoComplexType called");
    return struct;
  }
}

次の項では、サポートされるJWSアノテーションについて説明します。

Webサービス・メタデータ・アノテーション(JSR-181)

次の表は、Webサービスの形態と動作を指定するためにJWSファイルで使用できる標準JSR-181アノテーションをまとめたものです。これらの各アノテーションは、javax.jws (http://docs.oracle.com/javaee/5/api/javax/jws/package-summary.html)またはjavax.jws.soap (http://docs.oracle.com/javaee/5/api/javax/jws/soap/package-summary.html)パッケージにより使用できます。詳細な説明は、Web Services Metadata for the Java Platform (JSR-181)仕様(http://www.jcp.org/en/jsr/detail?id=181)にあります。

表3-2 標準JSR-181 JWSアノテーション

このアノテーションは... 次を指定します
javax.jws.WebService

クラス・レベルで、JWSファイルがWebサービスを実装すること。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』または『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のJWSファイルがWebサービスを実装することの指定(@WebServiceアノテーション)に関する項を参照してください。

javax.jws.WebMethod

JWSファイルのメソッドをWebサービスのパブリック操作として公開する必要があること。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』または『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のJWSメソッドをパブリック操作として公開することの指定(@WebMethodおよび@OneWayアノテーション)に関する項を参照してください。

javax.jws.OneWay

操作が呼出し側アプリケーションに値を戻さないこと。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』または『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のJWSメソッドをパブリック操作として公開することの指定(@WebMethodおよび@OneWayアノテーション)に関する項を参照してください。

javax.jws.WebParam

Webサービス操作の入力パラメータと生成されたWSDLファイルの要素のマッピング、およびパラメータの動作。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』または『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』の操作のパラメータとWSDL要素のマッピングのカスタマイズ(@WebParamアノテーション)に関する項を参照してください。

javax.jws.WebResult

Webサービス操作の戻り値と生成されたWSDLファイルの対応する要素のマッピング。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』または『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』の操作の戻り値とWSDL要素のマッピングのカスタマイズ(@WebResultアノテーション)に関する項を参照してください。

javax.jws.HandlerChain

外部ハンドラ・チェーン。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』または『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のSOAPメッセージ・ハンドラの作成と使用に関する項を参照してください。

javax.jws.soap.SOAPBinding

クラス・レベルでWebサービスのSOAPバインディング(document-encodeddocument-literal-wrappedなど)。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』または『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のWebサービスとSOAPメッセージ・プロトコルのマッピングの指定(@SOAPBindingアノテーション)に関する項を参照してください。


JAX-WSアノテーション(JSR-224)


注意:

JAX-WS JWSアノテーションは、JAX-WS Webサービスにのみ関連します。この項の内容は、JAX-RPC Webサービスには適用されません。


次の表は、Webサービスの形態と動作を指定するためにJWSファイルで使用できるJAX-WS (JSR-224)アノテーションをまとめたものです。これらの各アノテーションは、javax.xml.wsパッケージ(http://docs.oracle.com/javaee/5/api/javax/xml/ws/package-summary.html)により使用できます。詳細な説明は、JAX-WS 2.1アノテーション(http://jax-ws.java.net/nonav/2.1.5/docs/annotations.html)にあります。

表3-3 JAX-WS (JSR-244)アノテーション

このアノテーションは... 次を指定します
javax.xml.ws.Action

WS-Addressing Actionメッセージ・アドレッシング・プロパティと、マップされたWSDL操作のinputoutput、およびfaultメッセージの明示的な関連付けを許可するかどうか。

javax.xml.ws.BindingType

Webサービスの実装クラスに使用するバインディング。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のエンドポイントに使用するバインディング・タイプの指定(@BindingTypeアノテーション)に関する項を参照してください。

javax.xml.ws.FaultAction

WS-Addressing Actionメッセージ・アドレッシング・プロパティと、例外クラスからマップされたWSDL操作のフォールト・メッセージの明示的な関連付けを許可するかどうか。@FaultActionアノテーションは、@Actionアノテーションの内部で使用されます。

javax.xml.ws.RequestWrapper

実行時にエンドポイント・インタフェースのメソッドに使用されるリクエスト・ラッパーBean。

javax.xml.ws.ResponseWrapper

実行時にエンドポイント・インタフェースのメソッドに使用されるレスポンス・ラッパーBean。

javax.xml.ws.ServiceMode

プロバイダ実装がプロトコル・メッセージ全体を対象とするのか、ペイロードのみを対象にするのか。

javax.xml.ws.WebEndpoint

生成されたサービス・インタフェースのgetPortName()メソッド。

javax.xml.ws.WebFault

フォールト要素のローカルおよびネームスペース名、フォールトBeanの名前をそれぞれカスタマイズするためのサーバー固有の例外クラス。

javax.xml.ws.WebServiceClient

生成されたサービス・インタフェース。

javax.xml.ws.WebServiceProvider

プロバイダ実装クラス。

javax.xml.ws.WebServiceRef

Webサービスへの参照。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』の@WebServiceRefアノテーションを使用したWebサービス参照の定義に関する項を参照してください。


JAXBアノテーション(JSR-222)


注意:

JAXB JWSアノテーションは、JAX-WS Webサービスにのみ関連します。この項の内容は、JAX-RPC Webサービスには適用されません。


JAXB (JSR-222)(http://jcp.org/en/jsr/detail?id=222)仕様は、Webサービスの形態と動作を指定するためにJWSファイルで使用可能なJAXBアノテーションを定義しています。次の表は、JAXBアノテーションをまとめたものです。これらの各アノテーションは、javax.xml.bind.annotationパッケージ(http://docs.oracle.com/javaee/5/api/javax/xml/bind/annotation/package-summary.html)により使用できます。詳細な説明は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のJAXBアノテーションを使用したJava-to-XMLスキーマ・マッピングのカスタマイズに関する項またはJAXB (JSR-222)仕様(http://jcp.org/en/jsr/detail?id=222)にあります。

表3-4 JAXBマッピング・アノテーション(JSR-222)

このアノテーションは... 次を指定します
java.xml.bind.annotation.XmlAccessorType

デフォルトでフィールドまたはプロパティをシリアライズするかどうか。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のフィールドおよびプロパティのデフォルト・シリアライゼーションの指定(@XmlAccessorType)に関する項を参照してください。

java.xml.bind.annotation.XmlElement

クラスに格納されているプロパティを、格納しているクラスがマップされているXMLスキーマの複合型のローカル要素へマップすること。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のプロパティとローカル要素のマッピング(@XmlElement)に関する項を参照してください。

java.xml.bind.annotation.XmlRootElement

WebサービスのWSDLによって使用されるXMLスキーマのグローバル要素に最上位クラスをマップすること。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』の最上位クラスとグローバル要素のマッピング(@XmlRootElement)に関する項を参照してください。

java.xml.bind.annotation.XmlSeeAlso

現在のクラスをバインドするときにバインドする他のクラス。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』の複数のクラスのバインディング(@XmlSeeAlso)に関する項を参照してください。

java.xml.bind.annotation.XmlType

クラス型または列挙型をXMLスキーマ型にマップすること。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』の値クラスとスキーマ型のマッピング(@XmlType)に関する項を参照してください。


共通アノテーション(JSR-250)

次の表は、Webサービスの形態と動作を指定するためにJWSファイルで使用可能なJAX-WS (JSR-250)アノテーションをまとめたものです。

これらの各アノテーションは、javax.annotationパッケージ(http://docs.oracle.com/javaee/5/api/javax/annotation/package-summary.html)により使用できます。詳細な説明は、Common Annotations for the Java Platform (JSR-250)仕様(http://jcp.org/en/jsr/detail?id=250)にあります。

表3-5 共通アノテーション(JSR-250)

このアノテーションは... 次を指定します
javax.annotation.Resource

アプリケーションが必要とするリソース。アノテーションは、アプリケーション・コンポーネント・クラス、コンポーネント・クラスのフィールドまたはメソッドに適用できます。

javax.annotation.PostConstruct

依存関係インジェクションが完了した後に、初期化を実行するために呼び出す必要のあるメソッド。

javax.annotation.PreDestroy

コンテナがインスタンスを削除しようとしていることを知らせるコールバック通知を受信するメソッド。


WebLogic固有のアノテーション

WebLogic Webサービスでは、JSR-181の標準JWSアノテーションに加え、さらに動作と機能を指定するのに使用できるJWSアノテーションのセットが定義されます。次の表は、WebLogic固有のアノテーションを要約し、JAX-WSまたはJAX-RPCでサポートされるかどうかを示しています。(ほとんどのアノテーションはJAX-RPCでのみサポートされます。)各アノテーションの詳細については、後の節で説明します。

表3-6 WebLogic固有のアノテーション

このアノテーションは... 次を指定します JAX-WS/JAX-RPC/両方

weblogic.jws.AsyncFailure


メインJWSファイルが別のWebサービス操作を非同期的に呼び出したときに発生する可能性のある障害を処理するメソッド。

JAX-RPC

weblogic.jws.AsyncResponse


メインJWSファイルが別のWebサービス操作を非同期的に呼び出したときのレスポンスを処理するメソッド。

JAX-RPC

weblogic.jws.Binding


SOAP (Simple Object Access Protocol)メッセージの送受信時に、WebサービスがSOAP実装のバージョン1.1または1.2を使うか。

JAX-RPC

weblogic.jws.BufferQueue


WebLogic Serverが次を格納する宛先となるJMSキューのJNDI名:

  • バッファ付きWebサービス操作の呼出し。

  • 信頼性のあるWebサービス操作の呼出し。

JAX-RPC

weblogic.jws.Callback


アノテーション付き変数がコールバックであること(つまり、その変数を使用して、ターゲットWebサービスの操作を呼び出したクライアントWebサービスにコールバック・イベントを返送できること)。

JAX-RPC

weblogic.jws.CallbackMethod


コールバックWebサービスから受け取るメッセージを処理する、クライアントWebサービスのメソッド。

JAX-RPC

weblogic.jws.CallbackService


JWSファイルが実際に、コールバックWebサービスを記述するJavaインタフェースであること。

JAX-RPC

weblogic.jws.Context


アノテートされたフィールドがWebサービスの実行時コンテキストへのアクセスを提供するように指定します。

JAX-RPC

weblogic.jws.Conversation


@Conversationアノテーション付きのメソッドが、2つのWebLogic Webサービスの間の会話、またはスタンドアロンJavaクライアントと会話形式のWebサービスとの間の会話の一部として呼び出すことができるように指定します。

JAX-RPC

weblogic.jws.Conversational


JWSファイルが会話形式のWebサービスを実装するように指定します。

JAX-RPC

weblogic.jws.FileStore


会話状態などの内部状態情報の格納に、WebLogic Serverのデフォルト・ファイル・ストアではなく、プログラマ指定のファイル・ストアを使用すること。

JAX-RPC

weblogic.jws.MessageBuffer


JWSのどのパブリック・メソッドがバッファされるか。クラス・レベルで指定した場合、すべてのパブリック・メソッドがバッファされます。一部のメソッドのみバッファする場合、適切なメソッド・レベルでアノテーションを指定します。

JAX-RPC

weblogic.jws.Policies


@weblogic.jws.Policyアノテーションの配列。

両方

weblogic.jws.Policy


デジタル署名、暗号化、またはWebサービスの信頼性のあるメッセージングに関する情報を格納しているWS-PolicyファイルをリクエストまたはレスポンスSOAPメッセージに適用するように指定します。

両方

weblogic.jws.ReliabilityBuffer


WebLogic ServerによるJMSキューからWebサービス実装へのメッセージ配信試行回数、およびサーバーが待機すべき再試行間隔など、信頼性のあるWebサービス操作に対する信頼性のあるメッセージングのプロパティ。

JAX-RPC

weblogic.jws.ReliabilityErrorHandler


クライアントWebサービスが信頼性のあるWebサービスを呼び出したが、信頼性のあるWebサービスが実際にそのメッセージを受け取ったという確認応答をそのクライアントが受信しなかった場合に発生するエラーを処理するメソッド。

JAX-RPC

weblogic.jws.ServiceClient


JWSファイルのアノテーション付き変数が、以下の機能を使用するときに、別のWebLogic Webサービスを呼び出すスタブであることを指定します。

  • Webサービスの信頼性のあるメッセージング

  • 非同期のリクエスト/レスポンス

  • 会話

JAX-RPC

weblogic.jws.StreamAttachments


WebLogic Webサービス・ランタイムで、Webサービスのすべてのメソッド・パラメータを読み込む際にStreaming APIを使用するように指定します。

JAX-RPC

weblogic.jws.Transactional


アノテーション付きの操作、またはアノテーションがクラス・レベルで指定されている場合はJWSファイルのすべての操作がトランザクション内で実行されるかどうか。

JAX-RPC

weblogic.jws.Types


戻り値またはパラメータの代替データ型の完全修飾Javaクラス名のカンマ区切りリスト。

JAX-RPC

weblogic.jws.WildcardBinding


javax.xml.soap.SOAPElementまたはorg.apache.xmlbeans.XmlObjectなどのワイルドカード・クラスがバインドする先のXMLスキーマ・データ型。

JAX-RPC

weblogic.jws.WildcardBindings


@weblogic.jws.WildcardBindingアノテーションの配列。

JAX-RPC

weblogic.jws.WLHttpTransport


生成されたWSDLのポート名に加え、HTTPトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクション。

JAX-RPC

weblogic.jws.WLHttpsTransport


生成されたWSDLのポート名に加え、HTTPSトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクション。

JAX-RPC

weblogic.jws.WLJmsTransport


生成されたWSDLのポート名に加え、JMSトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクション。

JAX-RPC

weblogic.jws.WSDL


デプロイされたWebLogic WebサービスのWSDLを公開するかどうか。

JAX-RPC

weblogic.jws.security.CallbackRolesAllowed


Webサービスのコールバック・メソッドを呼び出す許可を与えられたロールをリストする@SecurityRole JWSアノテーションの配列。

JAX-RPC

weblogic.jws.security.RolesAllowed


Webサービスの基本認証を有効にするかどうか。

JAX-RPC

weblogic.jws.security.RolesReferenced


Webサービスの呼出しが許可されている実際のロールを参照する、ロール名のリスト。

JAX-RPC

weblogic.jws.security.RunAs


WebLogic ServerでWebサービスを実際に実行するロールおよびユーザーのアイデンティティ。

JAX-RPC

weblogic.jws.security.SecurityRole


Webサービスの呼出しを許可されているロールの名前。

JAX-RPC

weblogic.jws.security.SecurityRoleRef


Webサービスの呼出しを許可されている、指定済のロールにリンクするロール名参照。

JAX-RPC

weblogic.jws.security.UserDataConstraint


クライアントがWebサービスを呼び出す際に、HTTPSトランスポートの使用が必要であるかどうか。

JAX-RPC

weblogic.jws.security.WssConfiguration


Webサービスで使用するWebサービス・セキュリティ構成の名前。

両方

weblogic.jws.soap.SOAPBinding


SOAPメッセージ・プロトコルに対するWebサービス操作のマッピング。

JAX-RPC

weblogic.jws.security.SecurityRoles (非推奨)


Webサービス操作にアクセスできるロール。

JAX-RPC

weblogic.jws.security.SecurityIdentity (非推奨)


呼び出されたときにWebサービスが想定するアイデンティティ。

JAX-RPC

weblogic.wsee.jws.jaxws.owsm.SecurityPolicies


@weblogic.jws.SecurityPolicyアノテーションの配列。

JAX-WS

weblogic.wsee.jws.jaxws.owsm.SecurityPolicy


デジタル署名または暗号化に関する情報を格納しているOracle Web Services Manager (Oracle WSM) WS-PolicyファイルをリクエストまたはレスポンスSOAPメッセージに適用するように指定します。

JAX-WS

weblogic.wsee.wstx.wsat.Transactional


アノテーション付きのクラスまたはメソッドをWebサービス原子性トランザクション内で実行するかどうか。

JAX-WS


weblogic.jws.AsyncFailure

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: メソッド

メインJWSファイルが別のWebサービス操作を非同期的に呼び出したときに発生する可能性のある障害を処理するメソッドを指定します。

JWSファイルの内部からWebサービス操作を非同期的に呼び出すと、レスポンス(または障害の場合は例外)は、操作呼出しの直後ではなく、多少遅れて返されます。操作呼出しはレスポンスを待たないので、JWSファイル内の別のメソッドは、レスポンスが返された時点でそのレスポンスを処理する必要があります。同様に、さらに別のメソッドは障害を処理する必要があります。@AsyncFailureアノテーションは、非同期操作呼出しによって発生する可能性がある障害を処理する、JWSファイル内のメソッドを指定するために使用します。

@AsyncFailureアノテーションは、呼出し対象となるWebサービスのスタブの名前と、非同期的に呼び出す操作の名前の2つのパラメータを取ります。スタブは、@ServiceClientアノテーションが付けられているスタブです。

非同期障害を処理するメソッドは、以下のガイドラインに従う必要があります。

  • voidを返します。

  • onMethodNameAsyncFailureという名前が付けられています。このうち、MethodNameは、非同期的に呼び出すメソッドの名前(先頭の文字は常に大文字)です。

    メインJWSファイルで、非同期メソッドの呼出しは次のような形式になります。

    port.getQuoteAsync (apc, symbol);
    

    getQuoteはメソッドの非同期名ではない名前、apcは非同期呼出し前のコンテキスト、symbolgetQuote操作に対する標準的なパラメータです。

  • 非同期呼出し後のコンテキスト(weblogic.wsee.async.AsyncPostCallContextオブジェクトに格納)、および非同期操作呼出しでスローされる可能性があるThrowable例外の2つのパラメータを持っています。

メソッド自体の内部では、コンテキストからメソッド障害に関する詳細を入手し、特定の型の障害を問い合わせ、それに従って処理を実行できます。

通常、非同期操作障害を処理するメソッドを明示的に指定する場合は、必ず@AsyncFailureアノテーションを使用します。このアノテーションを使用しない唯一のケースは、単一のメソッドで、別のWebサービスを呼び出す複数のスタブの障害を処理する場合です。この場合、スタブは別のWebサービスに接続しますが、Webサービス・ランタイムは、アノテーションではなくメソッドの名前を基に(onMethodNameAsyncFailure)非同期障害の処理方法を判別するので、各Webサービスは、名前が似ているメソッドを持っている必要があります。ただし、操作のいずれか1つから非同期障害を処理するメソッドとスタブとの間に必ず1対1の対応が必要な場合は、@AsyncFailureを明示的に使用することをお薦めします。

このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の非同期のリクエストとレスポンスを使用したWebサービスの呼出しに関する項を参照してください。

属性

表3-7 weblogic.jws.AsyncFailure JWSアノテーション・タグの属性

名前 説明 データ型 必須?
target

操作を非同期的に呼び出すWebサービスのスタブの名前。

スタブは、@ServiceClientフィールド・レベルのアノテーションが付けられているものです。

String

はい

operation

非同期的に呼び出す操作の名前。

この名前は、WSDLファイルで示されている操作の実際の名前です。JWSファイルのメイン・コードでこの操作を呼び出すときに、その操作名にAsyncを追加します。

たとえば、operation="getQuote"と設定した場合、JWSファイルでは、操作を次のように非同期的に呼び出します。

port.getQuoteAsync (apc, symbol);

String

はい


以下のサンプル・スニペットでは、別のWebサービス操作を非同期的に呼び出す、JWSファイル内の@AsyncFailureアノテーションの使い方を示します。ここでは、関連するJavaコードのみを示します。

package examples.webservices.async_req_res;
...
public class StockQuoteClientImpl {
  @ServiceClient(wsdlLocation="http://localhost:7001/async/StockQuote?WSDL",
                 serviceName="StockQuoteService", portName="StockQuote")
  private StockQuotePortType port;
  @WebMethodpublic void getQuote (String symbol) {
    AsyncPreCallContext apc = AsyncCallContextFactory.getAsyncPreCallContext();
    apc.setProperty("symbol", symbol);
    try {
      port.getQuoteAsync(apc, symbol );
      System.out.println("in getQuote method of StockQuoteClient WS");
    }
    catch (RemoteException e) {
      e.printStackTrace();
    }
  }
...
  @AsyncFailure(target="port", operation="getQuote")
  public void onGetQuoteAsyncFailure(AsyncPostCallContext apc, Throwable e) {
    System.out.println("-------------------");
    e.printStackTrace();
    System.out.println("-------------------");
  }
}

この例では、portというスタブが、http://localhost:7001/async/StockQuoteにあるWebサービスを呼び出すために使用されています。getQuote操作が非同期的に呼び出され、この呼出しで例外が発生すると、@AsyncFailureアノテーションで指定されているonGetQuoteAsyncFailureメソッドによって処理されます。

weblogic.jws.AsyncResponse

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: メソッド

メインJWSファイルが別のWebサービス操作を非同期的に呼び出したときのレスポンスを処理するメソッドを指定します。

JWSファイルの内部からWebサービス操作を非同期的に呼び出すと、レスポンスは、操作呼出しの直後ではなく、多少遅れて返されます。操作呼出しはレスポンスを待たないので、JWSファイル内の別のメソッドは、レスポンスが最終的に返された時点でそのレスポンスを処理する必要があります。@AsyncResponseアノテーションは、非同期操作呼出しのレスポンスを処理する、JWSファイル内のメソッドを指定するために使用します。

@AsyncResponseアノテーションは、呼出し対象となるWebサービスのスタブの名前と、非同期的に呼び出す操作の名前の2つのパラメータを取ります。スタブは、@ServiceClientアノテーションが付けられているスタブです。

非同期レスポンスを処理するメソッドは、以下のガイドラインに従う必要があります。

  • voidを返します。

  • OnMethodNameAsyncResponseという名前が付けられています。このうち、MethodNameは、非同期的に呼び出すメソッドの名前(先頭の文字は常に大文字)です。

    メインJWSファイルで、非同期メソッドの呼出しは次のような形式になります。

    port.getQuoteAsync (apc, symbol);
    

    getQuoteはメソッドの非同期名ではない名前、apcは非同期呼出し前のコンテキスト、symbolgetQuote操作に対する標準的なパラメータです。

  • 非同期呼出し後のコンテキスト(weblogic.wsee.async.AsyncPostCallContextオブジェクトに格納)、および操作の通常の戻り値の2つのパラメータを持っています。

非同期レスポンス・メソッド自体の内部では、レスポンスを処理するコードを追加します。また、コンテキストからメソッド呼出しに関する詳細を入手できます。

通常、非同期操作レスポンスを処理するメソッドを明示的に指定する場合は、必ず@AsyncResponseアノテーションを使用します。このアノテーションを使用しない唯一のケースは、単一のメソッドで、別のWebサービスを呼び出す複数のスタブのレスポンスを処理する場合です。この場合、スタブは別のWebサービスに接続しますが、Webサービス・ランタイムは、アノテーションではなくメソッドの名前を基に(onMethodNameAsyncResponse)非同期レスポンスの処理方法を判別するので、各Webサービスは、名前が似ているメソッドを持っている必要があります。ただし、操作のいずれか1つから非同期レスポンスを処理するメソッドとスタブとの間に必ず1対1の対応が必要な場合は、@AsyncResponseを明示的に使用することをお薦めします。

このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の非同期のリクエストとレスポンスを使用したWebサービスの呼出しに関する項を参照してください。

属性

表3-8 weblogic.jws.AsyncResponse JWSアノテーション・タグの属性

名前 説明 データ型 必須?
target

操作を非同期的に呼び出すWebサービスのスタブの名前。

スタブは、@ServiceClientフィールド・レベルのアノテーションが付けられているものです。

String

はい

operation

非同期的に呼び出す操作の名前。

この名前は、WSDLファイルで示されている操作の実際の名前です。JWSファイルのメイン・コードでこの操作を呼び出すときに、その操作名にAsyncを追加します。

たとえば、operation="getQuote"と設定した場合、JWSファイルでは、操作を次のように非同期的に呼び出します。

port.getQuoteAsync (apc, symbol);

String

はい


以下のサンプル・スニペットでは、別のWebサービス操作を非同期的に呼び出す、JWSファイル内の@AsyncResponseアノテーションの使い方を示します。ここでは、関連するJavaコードのみを示します。

package examples.webservices.async_req_res;
...
public class StockQuoteClientImpl {
  @ServiceClient(wsdlLocation="http://localhost:7001/async/StockQuote?WSDL",
                 serviceName="StockQuoteService", portName="StockQuote")
  private StockQuotePortType port;
  @WebMethodpublic void getQuote (String symbol) {
    AsyncPreCallContext apc = AsyncCallContextFactory.getAsyncPreCallContext();
    apc.setProperty("symbol", symbol);
    try {
      port.getQuoteAsync(apc, symbol );
      System.out.println("in getQuote method of StockQuoteClient WS");
    }
    catch (RemoteException e) {
      e.printStackTrace();
    }
  }
...
  @AsyncResponse(target="port", operation="getQuote")
  public void onGetQuoteAsyncResponse(AsyncPostCallContext apc, int quote) {
    System.out.println("-------------------");
    System.out.println("Got quote " + quote );
    System.out.println("-------------------");
  }
}

この例では、portというスタブが、http://localhost:7001/async/StockQuoteにあるWebサービスを呼び出すために使用されています。getQuote操作が非同期的に呼び出され、この呼出しに対するレスポンスは、@AsyncResponseアノテーションで指定されているonGetQuoteAsyncResponseメソッドによって処理されます。

weblogic.jws.Binding

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

SOAP (Simple Object Access Protocol)メッセージの送受信時に、WebサービスでSOAP実装のバージョン1.1を使うのか、バージョン1.2を使うのかを指定します。デフォルトでは、WebLogic WebサービスはSOAP 1.1を使用します。

属性

表3-9 weblogic.jws.Binding JWSアノテーション・タグの属性

名前 説明 データ型 必須?
value

Webサービスを呼び出す際に、リクエストおよびレスポンスのSOAPメッセージにおいて使用するSOAPのバージョンを指定します。

この属性の有効な値は次のとおりです:

  • Type.SOAP11

  • Type.SOAP12

デフォルト値はType.SOAP11です。

enum

いいえ


次に、SOAP 1.2を指定する例を示します(関連するコードのみ示されています)。

package examples.webservices.soap12;
...
import javax.jws.WebMethod;
import javax.jws.WebService;
import weblogic.jws.Binding;
@WebService(name="SOAP12PortType",
            serviceName="SOAP12Service",
            targetNamespace="http://example.org")
@Binding(Binding.Type.SOAP12)
public class SOAP12Impl {
  @WebMethod()
  public String sayHello(String message) {
...
  }
}

weblogic.jws.BufferQueue

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

JMSキューのJNDI名を指定します。WebLogic Serverは、それに対して以下の操作を行います。

  • バッファ付きWebサービス操作の呼出しを格納します。

  • 信頼性のあるWebサービス操作の呼出しを格納します。

バッファ付きWebサービスで使用する場合、このアノテーションは、バッファリングされたJWSのメソッドを指定する@MessageBufferと組み合せて使用します。信頼性のあるWebサービスで使用する場合、このアノテーションは、Webサービスに関連付けられた、信頼性のあるメッセージングWS-Policyファイルを指定する@Policyと組み合せて使用します。

Webサービスに対してバッファ付きまたは信頼性のあるメッセージングを有効にしているが、@BuffereQueueアノテーションを指定していない場合、WebLogic Serverは、デフォルトのWebサービスJMSキュー(weblogic.wsee.DefaultQueue)を使用して、バッファ付きまたは信頼性のある操作の呼出しを格納します。このJMSキューは、JMSトランスポート機能のデフォルト・キューでもあります。これらの機能のいずれかに対してこのJMSキューを使用する場合は、JMSキューをあらかじめ作成していることが前提となります。

バッファ付きまたは信頼性のあるWebサービスの作成の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のバッファ付きWebサービスの作成に関する項とWebサービスの信頼性のあるメッセージングの使用に関する項を参照してください。

属性

表3-10 weblogic.jws.BufferQueue JWSアノテーション・タグの属性

名前 説明 データ型 必須?
name

バッファ付きまたは信頼性のある操作の呼出しを入れるJMSキューのJNDI名。

String

はい


以下の例では、JWSファイルのコード・スニペットを示します。ここでは、パブリック操作がバッファ付きで、WebLogic Serverが操作の呼出しを入れているJMSキューがmy.buffere.queueと呼ばれています。関連するJavaコードのみを示します。

package examples.webservices.buffered;
...
@WebService(name="BufferedPortType",
            serviceName="BufferedService",
            targetNamespace="http://example.org")
@BufferQueue(name="my.buffer.queue")
public class BufferedImpl {
...
  @WebMethod()
  @MessageBuffer(retryCount=10, retryDelay="10 seconds")
  @Oneway()
  public void sayHelloNoReturn(String message) {
    System.out.println("sayHelloNoReturn: " + message);
  }
}

weblogic.jws.Callback

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: フィールド

アノテーション付き変数がコールバックであることを指定します。つまり、アノテーション付き変数を使って、ターゲットWebサービス操作を呼び出したクライアントWebサービスにコールバック・イベントを返送できます。

ターゲットWebサービスにおいて@Callbackアノテーションを指定すると、クライアントWebサービスにコールバックできます。アノテーション付き変数のデータ型は、コールバック・インタフェースです。

コールバック機能は、2つのWebLogic Webサービス間で機能します。ただし、この機能をプログラミングする際、次の3つのJavaファイルを作成します:

  • コールバック・インタフェース: コールバック・メソッドを定義するJavaインタフェース・ファイル。このファイルは、明示的に実装するのではなく、jwsc Antタスクによってこのインタフェースの実装が自動的に生成されます。この実装によって、ターゲットWebサービスからクライアントWebサービスにメッセージが返送されます。生成されたWebサービスは、クライアントWebサービスをホストする同じWebLogic Serverにデプロイされます。

  • ターゲットWebサービスを実装するJWSファイル: ターゲットWebサービスには、コールバック・インタフェースで定義されたメソッドを呼び出す1つまたは複数の標準操作が含まれます。このメソッドによって、ターゲットWebサービス操作の呼出し元のクライアントWebサービスにメッセージが返送されます。

  • クライアントWebサービスを実装するJWSファイル: クライアントWebサービスは、ターゲットWebサービス操作を呼び出します。このWebサービスには、コールバック・メソッドを介してターゲットWebサービスからコールバック・メッセージを受け取ったときに、クライアントが実行すべき動作を指定する1つまたは複数のメソッドが含まれます。

コールバックのプログラミングの詳細および手順は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のコールバックによるクライアントへのイベントの通知に関する項を参照してください。

@Callbackアノテーションには、属性はありません。

次に、callbackという変数に@Callbackアノテーションを付けた非常に簡単なターゲットWebサービスの例を示します。この変数のデータ型はCallbackInterfaceで、これは、コールバックWebサービスがこの名前で存在する必要があることを意味します。変数にコールバック情報が注入された後で、CallbackInterfaceで定義されているコールバック・メソッドを呼び出すことができます。この例では、callbackOperation()がコールバック・メソッドです。

関連コードは、太字で示しています。

package examples.webservices.callback;
import weblogic.jws.WLHttpTransport;
import weblogic.jws.Callback;
import javax.jws.WebService;
import javax.jws.WebMethod;
@WebService(name="CallbackPortType",
            serviceName="TargetService",
            targetNamespace="http://examples.org/")
@WLHttpTransport(contextPath="callback",
                 serviceUri="TargetService",
                 portName="TargetServicePort")
public class TargetServiceImpl {
  @Callback
  CallbackInterface callback;
  @WebMethod
  public void targetOperation (String message) {
        callback.callbackOperation (message);
  }
}

weblogic.jws.CallbackMethod

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: メソッド

コールバックWebサービスから受け取るメッセージを処理する、クライアントWebサービスのメソッドを指定します。この属性を使うと、クライアントWebサービス内のコールバック・メッセージ・ハンドラ・メソッドと、コールバック・インタフェース内のコールバック・メソッドをリンクできます。

コールバック機能は、2つのWebLogic Webサービス間で機能します。ただし、この機能をプログラミングする際、次の3つのJavaファイルを作成します:

  • コールバック・インタフェース: コールバック・メソッドを定義するJavaインタフェース・ファイル。このファイルは、明示的に実装するのではなく、jwsc Antタスクによってこのインタフェースの実装が自動的に生成されます。この実装によって、ターゲットWebサービスからクライアントWebサービスにメッセージが返送されます。生成されたWebサービスは、クライアントWebサービスをホストする同じWebLogic Serverにデプロイされます。

  • ターゲットWebサービスを実装するJWSファイル: ターゲットWebサービスには、コールバック・インタフェースで定義されたメソッドを呼び出す1つまたは複数の標準操作が含まれます。このメソッドによって、ターゲットWebサービス操作の呼出し元のクライアントWebサービスにメッセージが返送されます。

  • クライアントWebサービスを実装するJWSファイル: クライアントWebサービスは、ターゲットWebサービス操作を呼び出します。このWebサービスには、コールバック・メソッドを介してターゲットWebサービスからコールバック・メッセージを受け取ったときに、クライアントが実行すべき動作を指定する1つまたは複数のメソッドが含まれます。

コールバックのプログラミングの詳細および手順は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のコールバックによるクライアントへのイベントの通知に関する項を参照してください。

属性

表3-11 weblogic.jws.CallbackMethod JWSアノテーション・タグの属性

名前 説明 データ型 必須?
operation

このメソッドで処理するコールバック・メッセージのコールバック・インタフェース内のコールバック・メソッドの名前を指定します。

String

はい

target

コールバックを受け取るスタブの名前を指定します。

スタブは、@ServiceClientフィールド・レベルのアノテーションが付けられているものです。

String

はい


次に、@CallbackMethodアノテーションが付けられているクライアントWebサービスのメソッドを示します。この属性では、portという変数に前もってスタブ情報が注入されていること、およびアノテーション付きメソッドがcallbackOperation()というコールバック操作から受信したメッセージを処理することが示されています。

  @CallbackMethod(target="port", operation="callbackOperation")
  @CallbackRolesAllowed(@SecurityRole(role="engineer",  mapToPrincipals="shackell"))
  public void callbackHandler(String msg) {
        System.out.println (msg);
  }

weblogic.jws.CallbackService

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

JWSファイルが実際に、コールバックWebサービスを記述するJavaインタフェースであることを指定します。このアノテーションは、@javax.jws.WebServiceに似ていますが、コールバックに限定され、属性の数も制限されています。

コールバック機能は、2つのWebLogic Webサービス間で機能します。ただし、この機能をプログラミングする際、次の3つのJavaファイルを作成します:

  • コールバック・インタフェース: コールバック・メソッドを定義するJavaインタフェース・ファイル。このファイルは、明示的に実装するのではなく、jwsc Antタスクによってこのインタフェースの実装が自動的に生成されます。この実装によって、ターゲットWebサービスからクライアントWebサービスにメッセージが返送されます。生成されたWebサービスは、クライアントWebサービスをホストする同じWebLogic Serverにデプロイされます。

  • ターゲットWebサービスを実装するJWSファイル: ターゲットWebサービスには、コールバック・インタフェースで定義されたメソッドを呼び出す1つまたは複数の標準操作が含まれます。このメソッドによって、ターゲットWebサービス操作の呼出し元のクライアントWebサービスにメッセージが返送されます。

  • クライアントWebサービスを実装するJWSファイル: クライアントWebサービスは、ターゲットWebサービス操作を呼び出します。このWebサービスには、コールバック・メソッドを介してターゲットWebサービスからコールバック・メッセージを受け取ったときに、クライアントが実行すべき動作を指定する1つまたは複数のメソッドが含まれます。

@CallbackInterfaceアノテーションを使うと、Javaファイルがコールバック・インタフェース・ファイルであることが指定されます。

コールバック・インタフェースをプログラミングする際、標準の非コールバックWebサービスと同様に、1つまたは複数のコールバック・メソッドを指定し、これらのメソッドに@javax.jws.WebMethodアノテーションを付け、それらがWebサービス操作であることを指定します。ただし、非コールバック・メソッドとは異なり、これらのコールバック・メソッドの実際の実装コードを記述する必要はありません。代わりに、jwsc Antタスクを使ったクライアントWebサービスのコンパイル時に、そのタスクで自動的にコールバック・インタフェースの実装が作成され、それがWebサービスにパッケージ化されます。こうして生成された実装によって、コールバック・メソッドがすべて同じ処理を行う(コールバック・メソッドを呼び出すターゲットWebサービスからクライアントWebサービスにメッセージを返送する)ことが指定されます。

コールバックのプログラミングの詳細および手順は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のコールバックによるクライアントへのイベントの通知に関する項を参照してください。

属性

表3-12 weblogic.jws.CallbackService JWSアノテーション・タグの属性

名前 説明 データ型 必須?
name

コールバックWebサービスの名前。WSDLファイルの<wsdl:portType>要素に対応しています。

デフォルト値は、JWSファイルのJavaクラスの未修飾名です。

String

いいえ

serviceName

コールバックWebサービスのサービス名。WSDLファイルの<wsdl:service>要素に対応しています。

デフォルト値は、JWSファイルのJavaクラスの未修飾名に、文字列Serviceを付けた値です。

String

いいえ


次に、非常に簡単なコールバック・インタフェースの例を示します。結果のコールバックWebサービスは、callbackOperation()というコールバック・メソッドを1つ持ちます。

package examples.webservices.callback;
import weblogic.jws.CallbackService;
import javax.jws.Oneway;
import javax.jws.WebMethod;
@CallbackService
public interface CallbackInterface {
  @WebMethod
  @Oneway
  public void callbackOperation (String msg);
}

weblogic.jws.Context

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: フィールド

アノテートされたフィールドがWebサービスの実行時コンテキストへのアクセスを提供するように指定します。

クライアント・アプリケーションが、JWSファイルで実装されたWebLogic Webサービスを呼び出すと、WebLogic Serverは、Webサービスが、サービスに関する実行時情報のアクセス、および場合によっては変更に使用できるコンテキストを自動的に作成します。この情報の多くは、現在の会話が終了したか、会話のプロパティの現在の値、実行時の会話のプロパティの変更など、会話に関連しています。コンテキストを介してアクセス可能な情報には、Webサービスの呼出しに使用されたプロトコル(HTTP/SまたはJMS)、SOAPメッセージ・リクエスト内にあったSOAPヘッダーなど、より一般的なものもあります。。アノテーション・フィールドのデータ型はweblogic.wsee.jws.JwsContextです。これは、コンテキストを問い合わせるメソッドを含むWebLogic WebサービスAPIです。

このアノテーションの使用の詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のWebサービスの実行時情報へのアクセスに関する項を参照してください。

このアノテーションには、属性はありません。

以下のJWSファイルのスニペットでは、@Contextアノテーションの使い方を示します。ここでは、ファイルの一部のみを示し、該当するコード箇所は太字になっています。

...
import weblogic.jws.Context;
import weblogic.wsee.jws.JwsContext;

...
public class JwsContextImpl {
  @Context
  private JwsContext ctx;
  @WebMethod()
  public String getProtocol() {
...

weblogic.jws.Conversation

説明

ターゲット: メソッド

@Conversationアノテーション付きのメソッドが、2つのWebLogic Webサービスの間の会話、またはスタンドアロンJavaクライアントと会話形式のWebサービスとの間の会話の一部として呼び出すことができるように指定します。

会話形式のWebサービスは通常、3つのメソッドを指定します。各メソッドには、会話の開始、継続、終了の各フェーズに対応する@Conversationアノテーションが付けられています。@Conversationalアノテーションは、Webサービスが会話形式になるようにクラス・レベルで指定する場合、および最大アイドル時間などの会話のプロパティを構成する場合に使用します。

2つのWebサービスの間の会話の場合、クライアント・サービスでは、@ServiceClientアノテーションを使用して、wsdl、サービス名、呼び出された会話サービスのポートを指定します。サービスとスタンドアロン・クライアントとの間の会話の場合、クライアントは、開始メソッド、継続メソッド、および終了メソッドを適切な順序で呼び出し、会話を行います。Webサービスを会話形式にするために、唯一の追加要件として、java.io.Serializableを実装する必要があります。

このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の会話形式のWebサービスの作成に関する項を参照してください。

属性

表3-13 weblogic.jws.Conversation JWSアノテーション・タグの属性

名前 説明 データ型 必須?
value

アノテーション付きのメソッドが実装する会話のフェーズを指定します。

指定できる値は次のとおりです。

  • Phase.START

    メソッドが新しい会話を開始するように指定します。このメソッドの呼出しによって、新しい会話IDとコンテキストが作成され、そのアイドルおよび存続期間のタイマーがリセットされます。

  • Phase.CONTINUE

    メソッドが進行中の会話の一部であることを指定します。このメソッドの呼出しによって、アイドル・タイマーがリセットされます。このメソッドは、開始メソッドと終了メソッドの間に必ず呼び出す必要があります。

  • Phase.FINISH

    メソッドが進行中の会話を明示的に終了するように指定します。

デフォルト値はPhase.CONTINUEです。

enum

いいえ


以下のサンプル・スニペットでは、会話の開始、継続、および終了の各フェーズを指定するために@Conversationアノテーションが付けられた3つのメソッド(startmiddle、およびfinish)を含むJWSファイルを示します。

...
public class ConversationalServiceImpl implements Serializable {
  @WebMethod
  @Conversation (Conversation.Phase.START)
  public String start() {
    // Java code for starting a conversation goes here
  }
  @WebMethod
  @Conversation (Conversation.Phase.CONTINUE)
  public String middle(String message) {
    // Java code for continuing a conversation goes here
  }
  @WebMethod
  @Conversation (Conversation.Phase.FINISH)
  public String finish(String message ) {
    // Java code for finishing a conversation goes here
  }
}

weblogic.jws.Conversational

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

JWSファイルが会話形式のWebサービスを実装するように指定します。

Webサービスを会話形式にするために、このアノテーションを使用する必要はありません。@Conversationアノテーションを1つのメソッドに付けるだけで、JWSファイルのすべてのメソッドは自動的に会話形式になります。クラス・レベルの@Conversationalアノテーションは、会話形式の動作の一部を変更する場合や、クラス・レベルでJWSが会話形式であることを明示する場合にのみ使用します。

JWSファイルで@Conversationalアノテーションを使用しない場合でも、デフォルト値がニーズに合っていれば、属性なしでアノテーションを指定できます。ただし、会話で可能な最大アイドル時間、会話の最大継続時間などの値を変更する場合は、それぞれに対応した属性を指定します。

このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の会話形式のWebサービスの作成に関する項を参照してください。

属性

表3-14 weblogic.jws.Conversational JWSアノテーション・タグの属性

名前 説明 データ型 必須?
maxIdleTime

WebLogic Serverによって終了されるまで、会話がアイドル状態を維持できる時間を指定します。アクティビティは、会話のいずれかのフェーズを実行しているクライアントWebサービスによって定義されます。

有効な値は数値で、以下のいずれかです。

  • seconds

  • minutes

  • hours

  • days

  • years

たとえば、最大アイドル時間を10分に設定するには、次のようにアノテーションを指定します。

@Conversational(maxIdleTime="10 minutes")

0の値(0 seconds0 minutesなど)を指定した場合、アイドル状態が原因で会話がタイムアウトすることはありません。

デフォルト値は0 secondsです。

String

いいえ

maxAge

WebLogic Serverによって終了されるまで、会話がアクティブ状態を維持できる時間。

有効な値は数値で、以下のいずれかです。

  • seconds

  • minutes

  • hours

  • days

  • years

たとえば、最大アイドル時間を3日に設定するには、次のようにアノテーションを指定します。

@Conversational(maxAge="3 days")

デフォルト値は「1 day」です。

String

いいえ

runAsStartUser

既存の会話の継続フェーズと終了フェーズが、会話を開始したユーザーによって実行されるかどうかを指定します。

通常、同じユーザーが会話の開始、継続、および終了メソッドを実行するので、この属性の値を変更しても、何の影響もありません。ただし、singlePrincipal属性をfalseに設定すると、会話を開始したユーザーとは別のユーザーが既存の会話の継続および終了フェーズを実行できるので、その場合、runAsStartUser属性は、メソッドを実際に実行するのは会話を開始したユーザーか、会話の残りのフェーズを実行する別のユーザーかを指定することになります。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

ブール

いいえ

singlePrincipal

会話を開始したユーザーとは別のユーザーが会話の継続フェーズと終了フェーズを実行できるかどうかを指定します。

通常、同じユーザーが会話のすべてのフェーズを実行します。ただし、この属性をfalseに設定した場合、別のユーザーが既存の会話の会話IDを取得し、会話の残りのフェーズを実行することができます。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

ブール

いいえ


以下のサンプル・スニペットでは、JWSファイルが会話形式のWebサービスを実装するように指定する方法を示します。会話で許可されている最大アイドル時間は10分、会話の最大継続時間はアクティビティに関係なく1日です。会話の継続および終了フェーズは、会話を開始したユーザーとは別のユーザーによって実行されます。各フェーズが発生すると、対応するメソッドが、元のユーザーではなく新しいユーザーとして実行されます。

package examples.webservices.conversation;
...
@Conversational(maxIdleTime="10 minutes",
                maxAge="1 day",
                runAsStartUser=false,
                singlePrincipal=false )
public class ConversationalServiceImpl implements Serializable {
...

weblogic.jws.FileStore

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

会話状態などの内部状態情報の格納に、WebLogic Serverのデフォルト・ファイル・ストアではなく、プログラマ指定のファイル・ストアを使用することを指定します。JWSファイルでこのJWSアノテーションを指定しなかった場合、WebサービスではWebLogic Serverに構成されているデフォルト・ファイル・ストアが使用されます。

信頼性のあるWebサービスの内部状態の格納に対しても、このJWSアノテーションを使用できます。

Webサービスをクラスタにデプロイする場合は、クラスタ内のすべてのサーバーでファイル・ストアが同じ名前で使用できるように、ファイル・ストアの論理名を指定してください。


注意:

このアノテーションはファイル・ストアにのみ適用され、JDBCストアには適用されません。


属性

表3-15 weblogic.jws.FileStore JWSアノテーション・タグの属性

名前 説明 データ型 必須?
storeName

ファイル・ストアの名前を指定します。

String

はい


weblogic.jws.MessageBuffer

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス、メソッド

JWSのどのパブリック・メソッドがバッファされるかを指定します。クラス・レベルで指定した場合、すべてのパブリック・メソッドがバッファされます。一部のメソッドのみバッファする場合、適切なメソッド・レベルでアノテーションを指定します。

クライアントWebサービスが、別のWebLogic Webサービスのバッファ付き操作を呼び出すと、呼び出されたWebサービスをホストしているWebLogic Serverは、呼出しメッセージをJMSキューに入れ、実際の呼出しは、後でWebLogic ServerがJMSキューの先頭からWebサービスの実装にメッセージを配信したときに処理されます。クライアントは、レスポンスを待つ必要がなく、処理の実行を継続できます。このため、バッファリングされた操作(追加の非同期機能なしの場合)は、voidのみを戻すことができ、@Onewayアノテーションが付けられている必要があります。値を戻す操作をバッファリングする場合は、呼出し側のクライアントWebサービスからの非同期のリクエストとレスポンスも使用する必要があります。詳細は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の非同期のリクエストとレスポンスを使用したWebサービスの呼出しに関する項を参照してください。

バッファリングは、バッファされた一方の操作をもう一方が呼び出す2つのWebサービスの間でのみ機能します。

@MessageBufferの省略可能な属性を使用すると、JMSキューによる、バッファされたWebサービス操作の呼出しが成功するまでの回数、およびその呼出しの間隔を指定できます。

省略可能なクラス・レベルの@BufferQueueアノテーションを使用すると、呼出しメッセージを入れるJMSキューを指定できます。このアノテーションを指定しなかった場合、メッセージは、デフォルトWebサービス・キューweblogic.wsee.DefaultQueueに入れられます。

このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のバッファ付きWebサービスの作成に関する項を参照してください。

属性

表3-16 weblogic.jws.MessageBuffer JWSアノテーション・タグの属性

名前 説明 データ型 必須?
retryCount

呼び出されたWebLogic ServerインスタンスのJMSキューが、呼出しメッセージをWebサービスの実装に問題なく配信できるまでの再試行回数を指定します。

デフォルト値は3です。

int

いいえ

retryDelay

メッセージ配信の再試行間隔を指定します。再試行間隔は、JMSキューの呼出しメッセージとWebサービスの実装へのメッセージ配信までの間隔。

有効な値は数値で、以下のいずれかです。

  • seconds

  • minutes

  • hours

  • days

  • years

たとえば、2日後に再試行する場合は、次のように指定します。

@MessageBuffer(retryDelay="2 days")

デフォルト値は5 secondsです。

String

いいえ


以下の例では、JWSファイルのコード・スニペットを示します。ここでは、パブリック操作sayHelloNoReturnがバッファ付きで、WebLogic Serverが操作の呼出しを入れているJMSキューがmy.buffere.queueと呼ばれています。呼び出されたWebサービスをホストしているWebLogic Serverインスタンスは、最大再試行回数10回、再試行間隔10秒で、JMSキュー内の呼出しメッセージをWebサービスの実装に配信しようとしています。以下のスニペットでは、関連するJavaコードのみを示します。

package examples.webservices.buffered;
...
@WebService(name="BufferedPortType",
            serviceName="BufferedService",
            targetNamespace="http://example.org")
@BufferQueue(name="my.buffer.queue")
public class BufferedImpl {
...
  @WebMethod()
  @MessageBuffer(retryCount=10, retryDelay="10 seconds")
  @Oneway()
  public void sayHelloNoReturn(String message) {
    System.out.println("sayHelloNoReturn: " + message);
  }
}

weblogic.jws.Policies

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス、メソッド

@weblogic.jws.Policyアノテーションの配列を指定します。

このアノテーションは、複数のWS-PolicyファイルをJWSファイルのクラスまたはメソッドにアタッチする場合に使用します。アタッチするWS-Policyファイルが1つだけの場合は、@weblogic.jws.Policyを単独で使用できます。

このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のWebサービスの信頼性のあるメッセージングの使用に関する項および『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。

このJWSアノテーションには、属性はありません。

@Policies({
    @Policy(uri="policy:firstPolicy.xml"),
    @Policy(uri="policy:secondPolicy.xml")
  })

weblogic.jws.Policy

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス、メソッド

デジタル署名、暗号化、またはWebサービスの信頼性のあるメッセージングに関する情報を格納しているWS-PolicyファイルをリクエストまたはレスポンスSOAPメッセージに適用するように指定します。

このアノテーションを単独で使用すると、単一のWS-Policyファイルをクラスまたはメソッドに適用できます。複数のWS-Policyファイルをクラスまたはメソッドに適用する場合は、@weblogic.jws.Policiesアノテーションを使用し、WS-Policyファイルをまとめて適用します。

このアノテーションをクラス・レベルで指定した場合、WS-Policyファイル(1つまたは複数)はWebサービスのあらゆるパブリック操作に適用されます。アノテーションをメソッド・レベルで指定した場合、WS-Policyファイルは、対応する操作にのみ適用されます。

デフォルトでは、WS-Policyファイルはリクエスト(インバウンド)とレスポンス(アウトバウンド)の両方のSOAPメッセージに適用されます。このデフォルトの動作は、direction属性を使用して変更できます。

デフォルトではまた、指定したWS-Policyファイルは、Webサービス用に生成されてパブリッシュされたWSDLファイルにアタッチされるので、コンシューマは、WebサービスのWS-Policyに関するすべての要件を確認できます。このデフォルトの動作を変更するには、attachToWsdl属性を使用します。

このアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のWebサービスの信頼性のあるメッセージングの使用に関する項および『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。

属性

表3-17 weblogic.jws.Policy JWSアノテーション・タグの属性

名前 説明 データ型 必須?
uri

WS-Policyファイルを検索する場所を指定します。

Web上のWS-PolicyファイルのURLを指定するには、http:接頭辞を使用します。

WS-PolicyファイルがWebLogic ServerのWebサービス・アーカイブ・ファイルまたは共有可能なJava EEライブラリにパッケージ化されていることを指定する場合は、以下の例のようにpolicy:接頭辞を使用します。

@Policy(uri="policy:MyPolicyFile.xml")

Webサービス・アーカイブ形式でWS-Policyファイルをパブリッシュする場合は、EJB JARファイル(EJB実装のWebサービスの場合)のMETA-INF/policiesディレクトリまたはWARファイル(Java実装のWebサービスの場合)のWEB-INF/policiesディレクトリのどちらかにWS-Policy XMLファイルを格納する必要があります。

ライブラリ内のWS-Policyファイルのパブリッシュについては、『Oracle WebLogic Serverアプリケーションの開発』の共有J2EEライブラリおよびオプション・パッケージの作成に関する項を参照してください。

String

はい

direction

ポリシーをインバウンド・リクエストSOAPメッセージに対して適用するか、アウトバウンド・レスポンスSOAPメッセージに対して適用するか、またはその両方(デフォルト)に対して適用するかを指定します。

この属性の有効な値は次のとおりです:

  • Policy.Direction.both

  • Policy.Direction.inbound

  • Policy.Direction.outbound

デフォルト値はPolicy.Direction.bothです。

enum

いいえ

attachToWsdl

Webサービスを記述するWSDLにWS-Policyファイルをアタッチするかどうかを指定します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

ブール

いいえ


  @Policy(uri="policy:myPolicy.xml", 
          attachToWsdl=true, 
          direction=Policy.Direction.outbound)

weblogic.jws.ReliabilityBuffer

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: メソッド

WebLogic ServerによるJMSキューからWebサービス実装へのメッセージ配信試行回数、およびサーバーが待機すべき再試行間隔など、信頼性のあるWebサービス操作に対する信頼性のあるメッセージングのプロパティを指定します。


注意:

JWSファイルでこのアノテーションを指定する場合は、Webサービス用に信頼性のあるメッセージングを有効にするために、@Policyアノテーションで、Webサービスの信頼性のあるメッセージング・ポリシー・アサーションがあるWS-Policyファイルも指定していることを前提にしています。

@ReliabilityBufferアノテーションを指定しているが、関連付けられているWS-Policyファイルで信頼性のあるメッセージングを有効にしていない場合、WebLogic Serverはこのアノテーションを無視します。


Webサービスに対して信頼性のあるWebサービス・メッセージングを有効にする方法の詳細は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のWebサービスの信頼性のあるメッセージングの使用に関する項を参照してください。

属性

表3-18 weblogic.jws.ReliabilityBuffer JWSアノテーション・タグの属性

名前 説明 データ型 必須?
retryCount

宛先のWebLogic ServerインスタンスのJMSキューが、信頼性のある操作を呼び出すクライアントからWebサービスの実装にメッセージを配信する際の再試行回数を指定します。

デフォルト値は3です。

int

いいえ

retryDelay

メッセージ配信の再試行間隔を指定します。再試行間隔は、JMSキューにあるクライアントのリクエスト・メッセージとWebサービスの実装へのメッセージ配信までの間隔。

有効な値は数値で、以下のいずれかです。

  • seconds

  • minutes

  • hours

  • days

  • years

たとえば、2日後に再試行する場合は、次のように指定します。

@ReliabilityBuffer(retryDelay="2 days")

デフォルト値は5 secondsです。

String

いいえ


以下のサンプル・スニペットでは、メソッド・レベルで信頼性のある操作のデフォルトの再試行回数と再試行間隔を変更する@ReliabilityBufferアノテーションの使い方を示します。ここでは、関連するJavaコードのみを示します。

package examples.webservices.reliable;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.Oneway;

...
import weblogic.jws.ReliabilityBuffer;
import weblogic.jws.Policy;
@WebService(name="ReliableHelloWorldPortType",
              serviceName="ReliableHelloWorldService")

...
@Policy(uri="ReliableHelloWorldPolicy.xml",
          direction=Policy.Direction.inbound,
          attachToWsdl=true)
public class ReliableHelloWorldImpl {
  @WebMethod()
  @Oneway()
  @ReliabilityBuffer(retryCount=10, retryDelay="10 seconds")
  public void helloWorld(String input) {
    System.out.println(" Hello World " + input);
  }
}

weblogic.jws.ReliabilityErrorHandler

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: メソッド

クライアントWebサービスが信頼性のあるWebサービスを呼び出したが、信頼性のあるWebサービスが実際にそのメッセージを受け取ったという確認応答をそのクライアントが受信しなかった場合に発生するエラーを処理するメソッドを指定します。

このアノテーションは、Webサービスの信頼性のあるメッセージング機能を実装する場合にのみ関係します。アノテーションは、信頼性のあるWebサービスを呼び出すクライアント側のWebサービスで指定します。

@ReliabilityErrorHandlerアノテーションを付けるメソッドでは、データ型weblogic.wsee.reliability.ReliabilityErrorContextのパラメータを1つ取ります。このコンテキストを使うと、エラーの原因(エラーの原因となった操作、ターゲットWebサービス、フォルトなど)に関する詳細な情報を取得できます。メソッドは、voidを返す必要があります。

@ReliabilityErrorHandlerアノテーションの単一の属性では、クライアントWebサービスが呼び出している信頼性のあるWebサービスのスタブ情報を注入した変数を指定します。この情報は、@weblogic.jws.ServiceClientアノテーションを使って変数に注入します。

属性

表3-19 weblogic.jws.ReliabilityErrorHandler JWSアノテーション・タグの属性

名前 説明 データ型 必須?
target

このメソッドで信頼性失敗を処理するターゲットのスタブ名を指定します。

String

はい


信頼性のあるWebサービスを呼び出すクライアントWebサービスの次のコードでは、@ReliabilityErrorHandlerアノテーションの使用方法を示します。ここでは、コードの一部のみが示され、このアノテーションに関連するコードについては太字で示されています。

package examples.webservices.reliable;
...
import weblogic.jws.ServiceClient;
import weblogic.jws.ReliabilityErrorHandler;
import examples.webservices.reliable.ReliableHelloWorldPortType;
import weblogic.wsee.reliability.ReliabilityErrorContext;
import weblogic.wsee.reliability.ReliableDeliveryException;
@WebService(name="ReliableClientPortType",
...
public class ReliableClientImpl
{
  @ServiceClient(
     wsdlLocation="http://localhost:7001/ReliableHelloWorld/ReliableHelloWorld?WSDL",
     serviceName="ReliableHelloWorldService",
     portName="ReliableHelloWorldServicePort")
  private ReliableHelloWorldPortType port;
  @WebMethod
  public void callHelloWorld(String input, String serviceUrl)
     throws RemoteException {
   ...
  }
  @ReliabilityErrorHandler(target="port")
  public void onReliableMessageDeliveryError(ReliabilityErrorContext ctx) {
    ReliableDeliveryException fault = ctx.getFault();
    String message = null;
    if (fault != null) {
      message = ctx.getFault().getMessage();
    }
    String operation = ctx.getOperationName();
    System.out.println("Reliable operation " + operation + " may have not invoked. The error message is " + message);
  }
}

上の例では、port変数はReliableHelloWorldService Webサービスに対応するスタブで注入されており、クライアントWebサービスの特定の場所で、このスタブの操作が呼び出されると見なされます。onReliableMessageDeliveryErrorメソッドは、@ReliabilityErrorHandlerアノテーションが付けられ、portスタブとリンクされているため、信頼性のあるWebサービスの呼出しにおいて障害が発生した場合、このメソッドが呼び出されます。信頼性のあるエラー処理メソッドでは、ReliabilityErrorContextオブジェクトを使用して、このエラーの原因の詳細を取得します。

weblogic.jws.ServiceClient

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: フィールド

JWSファイルのアノテーション付き変数が、以下の機能を使用するときに、別のWebLogic Webサービスを呼び出すスタブであることを指定します。

  • Webサービスの信頼性のあるメッセージング

  • 非同期のリクエスト/レスポンス

  • 会話

信頼性のあるメッセージング機能および非同期のリクエストとレスポンス機能は、2つのWebサービスの間でのみ使用します。つまり、たとえば、スタンドアロン・クライアントからではなく、別のWebサービスからのみ信頼性のあるWebサービス操作を呼び出すことができます。信頼性のあるメッセージングの場合、この機能は、http://docs.oasis-open.org/ws-rx/wsrm/200702/wsrm-1.1-spec-os-01.pdfにあるWS-ReliableMessaging仕様を実装する任意の2つのアプリケーション・サーバー間で動作します。非同期のリクエストとレスポンス機能は、2つのWebLogic Serverインスタンス間でのみ機能します。

クライアントWebサービスの場合、どの変数が、@ServiceClient属性で記述したWebサービスのポートのタイプかを指定するには、@ServiceClientアノテーションを使用します。クライアントWebサービスを格納するエンタープライズ・アプリケーションも、呼び出しているWebサービスのスタブを含んでいる必要があります。このスタブは、clientgen Antタスクで生成します。

@ServiceClientアノテーションの使用の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』を参照してください。

属性

表3-20 weblogic.jws.ServiceClient JWSアノテーション・タグの属性

名前 説明 データ型 必須?
serviceName

呼び出すWebサービスの名前を指定します。呼び出されたWebサービスのWSDLにある<service>要素のname属性に対応します。

JWSファイルを使用して、呼び出されたWebサービスを実装した場合、この属性は、そのWebサービスの@WebService JWSアノテーションのserviceName属性に対応します。

String

はい

portName

呼び出すWebサービスのポート名を指定します。<service>要素の子要素<port>name属性に対応します。

JWSファイルを使用して、呼び出されたWebサービスを実装した場合、この属性は、そのWebサービスの@WLHttpTransport JWSアノテーションのportName属性に対応します。

この属性を指定しなかった場合、WSDLの<service>要素には、@ServiceClientが使用する<port>子要素が1つだけ含まれているものと見なされます。複数のポートがある場合、クライアントWebサービスは実行時例外を返します。

String

いいえ

wsdlLocation

呼び出すWebサービスを記述するWSDLファイルを指定します。

この属性を指定しなかった場合、クライアントWebサービスが使用するWSDLファイルは、呼び出されるWebサービスのService実装を作成する際にclientgen Antタスクが使用したものと同じWSDLファイルです。

String

いいえ

endpointAddress

呼び出すWebサービスのエンドポイント・アドレスを指定します。

この属性を指定しなかった場合、クライアントWebサービスは、WSDLファイルで指定したエンドポイント・アドレスを使用します。

String

いいえ


以下のJWSファイルの抜粋では、クライアントWebサービスで@ServiceClientアノテーションを使用し、呼び出されるWebサービス(WSDLがhttp://localhost:7001/ReliableHelloWorld/ReliableHelloWorld?WSDLというURL上にあるReliableHelloWorldService)のスタブでフィールド(port)にアノテーションを付ける方法を示します。ここでは、関連する部分のみを示します。

package examples.webservices.reliable;
import javax.jws.WebService;
...
import weblogic.jws.ServiceClient;
import examples.webservices.reliable.ReliableHelloWorldPortType;
@WebService(...
public class ReliableClientImpl
{
  @ServiceClient(
     wsdlLocation="http://localhost:7001/ReliableHelloWorld/ReliableHelloWorld?WSDL",
     serviceName="ReliableHelloWorldService",
     portName="ReliableHelloWorldServicePort")
  private ReliableHelloWorldPortType port;
  @WebMethod
  public void callHelloWorld(String input, String serviceUrl)
     throws RemoteException {
    port.helloWorld(input);
    System.out.println(" Invoked the ReliableHelloWorld.helloWorld operation reliably." );
  }
}

weblogic.jws.StreamAttachments

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

WebLogic Webサービス・ランタイムで、Webサービスのすべてのメソッド・パラメータを読み込む際にStreaming APIを使用するように指定します。これによって、特に画像のようにパラメータが大きい場合に、Webサービス操作の呼出しのパフォーマンスが向上します。

同じWebサービスで次の機能も使用している場合、このアノテーションは使用できません。

  • 会話

  • 信頼性のあるメッセージング

  • JMSトランスポート

  • クライアント・アプリケーションと呼出し対象のWebサービスとの間のプロキシ・サーバー

@StreamAttachmentsアノテーションには、属性はありません。

次に、@StreamAttachmentsアノテーションを指定する簡単なJWSファイルを示します。単一のメソッドechoAttachment()DataHandlerパラメータを取り、Webサービス操作を呼び出したクライアント・アプリケーションにエコー・バックします。WebLogic Webサービス・ランタイムでは、DataHandlerの内容を読み込む際にストリーミングが使用されます。

package examples.webservices.stream_attach;
import javax.jws.WebMethod;
import javax.jws.WebService;
import weblogic.jws.WLHttpTransport;
import weblogic.jws.StreamAttachments;
import javax.activation.DataHandler;
import java.rmi.RemoteException;
@WebService(name="StreamAttachPortType",
            serviceName="StreamAttachService",
            targetNamespace="http://example.org")
@WLHttpTransport(contextPath="stream_attach",
                 serviceUri="StreamAttachService",
                 portName="StreamAttachServicePort")
@StreamAttachments
/**
 * Example of stream attachments
 */
public class StreamAttachImpl {
  @WebMethod()
  public DataHandler echoAttachment(DataHandler dh) throws RemoteException {
        return dh;
  }
}

weblogic.jws.Transactional

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス、メソッド

アノテーション付きの操作、またはアノテーションがクラス・レベルで指定されている場合はJWSファイルのすべての操作がトランザクション内で実行されるかどうかを指定します。デフォルトでは、操作はトランザクションでは実行されません

属性

表3-21 weblogic.jws.Transactional JWSアノテーション・タグの属性

名前 説明 データ型 必須?
value

特定の操作(メソッド・レベルで使用する場合)またはWebサービスのすべての操作(クラス・レベルで指定されている場合)がトランザクション内で実行されるかどうかを指定します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

ブール

いいえ

timeout

現在のトランザクションにおけるタイムアウト値(単位は秒)を指定します。

この属性のデフォルト値は30秒です。

int

いいえ


以下の例では、@Transactionalアノテーションを使って、Webサービス操作がトランザクションの一部として実行されるように指定する方法を示します。

package examples.webservices.transactional;
import javax.jws.WebMethod;
import javax.jws.WebService;
import weblogic.jws.WLHttpTransport;
import weblogic.jws.Transactional;
@WebService(name="TransactionPojoPortType",
            serviceName="TransactionPojoService",
            targetNamespace="http://example.org")
@WLHttpTransport(contextPath="transactionsPojo",
                 serviceUri="TransactionPojoService",
                 portName="TransactionPojoPort")
/**
 * This JWS file forms the basis of simple WebLogic
 * Web Service with a single operation: sayHello.  The operation executes
 * as part of a transaction.
*/
public class TransactionPojoImpl {
  @WebMethod()
  @Transactional(value=true)
  public String sayHello(String message) {
    System.out.println("sayHello:" + message);
    return "Here is the message: '" + message + "'";
  }
}

weblogic.jws.Types

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: メソッド、パラメータ

戻り値またはパラメータの代替データ型の完全修飾Javaクラス名のカンマ区切りリストを指定します。代替データ型は、メソッド・シグネチャで指定されたデータ型を拡張する必要があります。これに当てはまらない場合、JWSファイルをWebサービスにコンパイルする際にjwsc Antタスクは検証エラーを返します。

たとえば、Address基本データ型を作成してから、このベース・タイプを拡張するUSAAddressおよびCAAddressを作成しているものと仮定します。メソッド・シグネチャで、この型がAddressパラメータを取ることが指定されている場合、このパラメータに@Typesアノテーションを付け、パブリック操作でも、基本Addressデータ型の他に、パラメータとしてUSAAddressおよびCAAddressを取るように指定できます。

このアノテーションを使うと、java.util.Collectionまたはjava.util.Listなど、コレクション・データ型の戻り値またはパラメータに格納可能なデータ型を制限することもできます。許容される格納データ型を制限することによって、生成されるWSDLは明確で一義的となり、クライアント・アプリケーションがWebサービス操作を呼び出す際、Webサービス・ランタイムはパラメータの適格確認処理を効率よく実行できます。

このアノテーションをメソッド・レベルで指定すると、適用対象は戻り値に限定されます。アノテーションをパラメータに適用する場合、各関連パラメータについて、パラメータ・レベルで指定する必要があります。

属性

表3-22 weblogic.jws.Types JWSアノテーション・タグの属性

名前 説明 データ型 必須?
value

コレクション・タイプのパラメータまたは戻り値に格納可能なデータ型、または元のデータ型のかわりに使用できる代替データ型の完全修飾クラス名のカンマ区切りリストです。

String[]

はい


次の例では、@Typesアノテーションを使用する簡単なJWSファイルを示します。関連するJavaコードは太字で示しています。

package examples.webservices.types;
import javax.jws.WebMethod;
import javax.jws.WebService;
import weblogic.jws.WLHttpTransport;
import weblogic.jws.Types;
import examples.webservices.types.BasicStruct;
@WebService(serviceName="TypesService",
            name="TypesPortType",
            targetNamespace="http://example.org")
@WLHttpTransport(contextPath="types",
                 serviceUri="TypesService",
                 portName="TypesServicePort")
public class TypesImpl {
  @WebMethod()
  @Types({"examples.webservices.types.ExtendedStruct"})
  public BasicStruct echoStruct(
     @Types({"examples.webservices.types.ExtendedStruct"}) BasicStruct struct)
  {
    System.out.println("echoStruct called");
    return struct;
  }
}

上の例では、echoStruct()メソッドのシグネチャにおいて、パラメータおよび戻り値の両方としてBasicStruct値を取ることが示されています。ただし、メソッドおよびstructパラメータはともに@Typesアノテーションが付けられているため、echoStruct操作を呼び出すクライアント・アプリケーションは、データ型ExtendedStructのパラメータも渡すことができます。この場合、操作もExtendedStruct値を返します。ここでは、ExtendedStructBasicStructを拡張するものと見なされています。

weblogic.jws.WildcardBinding

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

javax.xml.soap.SOAPElementまたはorg.apache.xmlbeans.XmlObjectなどのワイルドカード・クラスがバインドする先のXMLスキーマ・データ型を指定します。デフォルトでは、これらのJavaデータ型は<xsd:any> XMLスキーマ・データ型にバインドされます。このクラス・レベルのアノテーションを使用すると、ワイルドカード・クラスをかわりに<xsd:anyType>にバインドするように指定できます。

属性

表3-23 weblogic.jws.WildcardBinding JWSアノテーション・タグの属性

名前 説明 データ型 必須?
className

このバインドが適用されるワイルドカード・クラスの完全修飾名を指定します。一般的な値はjavax.xml.soap.SOAPElementおよびorg.apache.xmlbeans.XmlObjectです。

String

はい

binding

ワイルドカード・クラスがバインドする先のXMLスキーマ・データ型を指定します。

以下のいずれかの値を指定可能です。

  • WildcardParticle.ANY

  • WildcardParticle.ANYTYPE

enum

はい


次に、@WildcardBindingアノテーションを使って、Apache XMLBeansデータ型のXMLObjectが、このWebサービスの<xsd:any> XMLスキーマ・データ型にバインドされるように指定する例を示します。

@WildcardBindings({
    @WildcardBinding(className="org.apache.xmlbeans.XmlObject", 
                      binding=WildcardParticle.ANY),
    @WildcardBinding(className="org.apache.xmlbeans.XmlObject[]",
                      binding=WildcardParticle.ANY)})
public class SimpleImpl {
...

weblogic.jws.WildcardBindings

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

@weblogic.jws.WildcardBindingアノテーションの配列を指定します。

このJWSアノテーションには、属性はありません。

例については、weblogic.jws.WildcardBindingを参照してください。

weblogic.jws.WLHttpTransport

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

生成されたWSDLのポート名に加え、HTTPトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションを指定します。

このアノテーションは、JWSファイル内で最大で一度だけ指定できます。

属性

表3-24 weblogic.jws.WLHttpTransport JWSアノテーション・タグの属性

名前 説明 データ型 必須?
contextPath

Webサービスのコンテキスト・パス。この値は、Webサービスを呼び出すURL内で使用します。

たとえば、Webサービスのコンテキスト・パスをfinancialに設定した場合、デプロイされるWebLogic WebサービスのWSDLで指定可能なURLは次の形式になります。

http://hostname:7001/financial/GetQuote?WSDL

この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルがHelloWorldImpl.javaの場合、そのcontextPathのデフォルト値はHelloWorldImplになります。

String

いいえ

serviceUri

URLのWebサービスURI部分。この値は、Webサービスを呼び出すURL内で使用します。

たとえば、この属性をGetQuoteに設定した場合、デプロイされるサービスのWSDLで指定可能なURLは以下の形式になります。

http://hostname:7001/financial/GetQuote?WSDL

この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルがHelloWorldImpl.javaの場合、そのserviceUriのデフォルト値はHelloWorldImplになります。

String

いいえ

portName

生成されたWSDLのポートの名前。この属性は、WSDLの<port>要素のname属性に対応しています。

この属性のデフォルト値は、JWSファイルの@javax.jws.WebServiceアノテーションに基づきます。つまり、デフォルトのportNameは、@WebServiceアノテーションのname属性の値にSoapPortというテキストを付け加えた形になります。たとえば、@WebService.nameMyServiceに設定されている場合、デフォルトのportNameはMyServiceSoapPortとなります。

String

いいえ


@WLHttpTransport(contextPath="complex", 
                 serviceUri="ComplexService",
                 portName="ComplexServicePort")

weblogic.jws.WLHttpsTransport

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス


注意:

@weblogic.jws.WLHttpsTransportアノテーションは、WebLogic Server 9.2で非推奨になりました。代わりに、@weblogic.jws.WLHttpTransportアノテーションを使用してください。これはHTTPおよびHTTPSプロトコルを両方ともサポートするようになったためです。クライアント・アプリケーションにHTTPSプロトコルのみを使用してWebサービスにアクセスさせるには、JWSファイルで@weblogic.jws.security.UserDataConstraint JWSアノテーションを指定する必要があります。


生成されたWSDLのポート名に加え、HTTPSトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションを指定します。

このアノテーションは、JWSファイル内で最大で一度だけ指定できます。

属性

表3-25 weblogic.jws.WLHttpsTransport JWSアノテーション・タグの属性

名前 説明 データ型 必須?
contextPath

Webサービスのコンテキスト・パス。この値は、Webサービスを呼び出すURL内で使用します。

たとえば、Webサービスのコンテキスト・パスをfinancialに設定した場合、デプロイされるWebLogic WebサービスのWSDLで指定可能なURLは次の形式になります。

https://hostname:7001/financial/GetQuote?WSDL

この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルがHelloWorldImpl.javaの場合、そのcontextPathのデフォルト値はHelloWorldImplになります。

String

いいえ

serviceUri

URLのWebサービスURI部分。この値は、Webサービスを呼び出すURL内で使用します。

たとえば、この属性をGetQuoteに設定した場合、デプロイされるサービスのWSDLで指定可能なURLは以下の形式になります。

https://hostname:7001/financial/GetQuote?WSDL

この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルがHelloWorldImpl.javaの場合、そのserviceUriのデフォルト値はHelloWorldImplになります。

String

いいえ

portName

生成されたWSDLのポートの名前。この属性は、WSDLの<port>要素のname属性に対応しています。

この属性のデフォルト値は、JWSファイルの@javax.jws.WebServiceアノテーションに基づきます。つまり、デフォルトのportNameは、@WebServiceアノテーションのname属性の値にSoapPortというテキストを付け加えた形になります。たとえば、@WebService.nameMyServiceに設定されている場合、デフォルトのportNameはMyServiceSoapPortとなります。

String

いいえ


@WLHttpsTransport(portName="helloSecurePort",
                 contextPath="secure",
                 serviceUri="SimpleSecureBean")

weblogic.jws.WLJmsTransport

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

生成されたWSDLのポート名に加え、JMSトランスポート形式でWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションを指定します。WebLogic Serverが操作の呼出しのSOAPリクエスト・メッセージを入れるJMSキューを指定する場合にも、このアノテーションを使用します。

このアノテーションは、JWSファイル内で最大で一度だけ指定できます。

属性

表3-26 weblogic.jws.WLJmsTransport JWSアノテーション・タグの属性

名前 説明 データ型 必須?
contextPath

Webサービスのコンテキスト・パス(コンテキスト・ルート)。この値は、Webサービスを呼び出すURL内で使用します。

String

いいえ

serviceUri

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

String

いいえ

queue

JMSトランスポート用に構成済のJMSキューのJNDI名。JMSトランスポートの使用の詳細は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の接続プロトコルとしてのJMSトランスポートの使用に関する項を参照してください。

この属性を指定しない場合のデフォルト値はweblogic.wsee.DefaultQueueです。その場合でも、Webサービスのデプロイ先となるWebLogic Serverインスタンスで、このJMSキューを作成する必要があります。

String

いいえ

portName

生成されたWSDLのポートの名前。この属性は、WSDLの<port>要素のname属性に対応しています。

この属性を指定しない場合、jwscは、Webサービスを実装しているクラスの名前を基にデフォルト名を生成します。

String

いいえ

connectionFactory

JMSトランスポート用に構成済のJMS接続ファクトリのJNDI名。JMSトランスポートの使用の詳細は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の接続プロトコルとしてのJMSトランスポートの使用に関する項を参照してください。

String

はい


以下の例では、JMSトランスポートを使用して呼び出されるWebサービスがJWSファイルで実装されるように指定する方法を示します。WebLogic Serverが、サービス操作の呼出しにあるSOAPメッセージ・リクエストを入れるJMSキューはJMSTransportQueueです。ここでは、このJMSキューはWebLogic Server用にすでに構成されていることを前提としています。

WLJmsTransport(contextPath="transports", 
                serviceUri="JMSTransport",
                queue="JMSTransportQueue", 
                portName="JMSTransportServicePort")

weblogic.jws.WSDL

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

デプロイされたWebLogic WebサービスのWSDLを公開するかどうかを指定します。

デフォルトでは、WSDLは次のURLで公開されます。

http://[host]:[port]/[contextPath]/[serviceUri]?WSDL

説明:

  • host - WebLogic Serverが動作しているコンピュータの名前。

  • port - WebLogic Serverがリスニングしているポート番号(デフォルト値は7001)。

  • contextPathは、Webサービスを実装するJWSファイルの@WLHttpTransport JWSアノテーションで指定されているcontextPath属性の値、serviceUriserviceUri属性の値を指します。

たとえば、次の@WLHttpTransportアノテーションを使用しているとします。

@WLHttpTransport(portName="helloPort",
                 contextPath="hello",
                 serviceUri="SimpleImpl")

Webサービスがarielというホストのデフォルトのポート番号で実行されているとすると、そのWebサービスのWSDLを表示するURLは次のとおりです。

http://ariel:7001/hello/SimpleImpl?WSDL

属性

表3-27 weblogic.jws.WSDL JWSアノテーション・タグの属性

名前 説明 データ型 必須?
exposed

デプロイされたWebサービスのWSDLを公開するかどうかを指定します。

有効な値は、trueおよびfalseです。デフォルト値はtrueで、デフォルトではWSDLが公開されることを意味します。

ブール

いいえ


以下の@WSDLアノテーションの使用例では、デプロイされるWebサービスのWSDLが公開されないように指定する方法を示します。ここでは、関連するJavaコードのみを示します。

package examples.webservices;
import weblogic.jws.WSDL;
@WebService(name="WsdlAnnotationPortType",
            serviceName="WsdlAnnotationService",
            targetNamespace="http://example.org")
@WSDL(exposed=false)
public class WsdlAnnotationImpl {
...
}

weblogic.jws.security.CallbackRolesAllowed

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: メソッド、フィールド

Webサービスのコールバック・メソッドを呼び出す許可を与えられたロールをリストする@SecurityRole JWSアノテーションの配列を指定します。未指定のロールにマップされたユーザー、またはロールにマップされていないユーザーは、コールバック・メソッドの呼出しを許可されません。

このアノテーションをフィールド・レベルで使用した場合、指定したロールは、Webサービスのすべてのコールバック操作の呼出しを許可されます。このアノテーションをメソッド・レベルで使用した場合、指定したロールは、コールバック・メソッドのみの呼出しを許可されます。両方のレベルで指定し、競合がある場合、メソッド値がフィールド値をオーバーライドします。

属性

表3-28 weblogic.jws.security.CallbackRolesAllowed JWSアノテーション・タグの属性

名前 説明 データ型 必須?
value

コールバック・メソッドの呼出しを許可されたロールをリストする@ weblogic.jws.security.RolesAllowedの配列。

String[]

はい


次に、メソッド・レベルで@CallbackRolesAllowedアノテーションを使って、ロールengineerがコールバック・メソッドの呼出しを許可されるように指定する例を示します。

@CallbackMethod(target="port", operation="callbackOperation")
@CallbackRolesAllowed(@SecurityRole(role="engineer", mapToPrincipals="shackell"))
public void callbackHandler(String msg) {
      System.out.println (msg);
}

weblogic.jws.security.RolesAllowed

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス、メソッド

Webサービスの基本認証を有効にするかどうかを指定します。具体的には、これはWebサービスを呼び出す許可を与えられたロールのリストを記述した@SecurityRole JWSアノテーションの配列を指定します。未指定のロールにマップされたユーザー、またはロールにマップされていないユーザーは、Webサービスの呼出しを許可されません。

このアノテーションをクラス・レベルで使用した場合、指定したロールは、Webサービスのすべての操作の呼出しを許可されます。特定の操作群のみに対してロールを指定するには、アノテーションを操作レベルで指定します。

属性

表3-29 weblogic.jws.security.RolesAllowed JWSアノテーション・タグの属性

名前 説明 データ型 必須?
value

Webサービス・メソッドの呼出しを許可されたロールをリストする@ weblogic.jws.security.RolesAllowedの配列。

String[]

はい


package examples.webservices.security_roles;
...
import weblogic.jws.security.RolesAllowed;
import weblogic.jws.security.SecurityRole;
@WebService(name="SecurityRolesPortType",
            serviceName="SecurityRolesService",
            targetNamespace="http://example.org")
@RolesAllowed (  {
    @SecurityRole (role="manager",
                   mapToPrincipals={ "juliet","amanda" }),
    @SecurityRole (role="vp")
} )
public class SecurityRolesImpl {
...

この例では、ロールmanagerおよびvpのみがWebサービスの呼出しを許可されています。Webサービスのコンテキスト内で、ユーザーjulietおよびamandaにはロールmanagerが割り当てられます。しかしロールvpには、ユーザーが外部でこのロールにマップされたことを示唆するmapToPrincipals属性が含まれていません。ここでは、2人のユーザーjulietおよびamandaがWebLogic Serverセキュリティ・レルムにすでに追加されていることが前提となっています。

weblogic.jws.security.RolesReferenced

説明

ターゲット: クラス

Webサービスの呼出しが許可されている実際のロールを参照する、ロール名のリストを指定します。具体的には、@SecurityRoleRef JWSアノテーションの配列を指定します。各アノテーションには、参照されるロール名と、@SecurityRoleアノテーションで定義される実際のロールの間のリンクが記述されています。

このJWSアノテーションには、属性はありません。

package examples.webservices.security_roles;
...
import weblogic.jws.security.RolesAllowed;
import weblogic.jws.security.SecurityRole;
import weblogic.jws.security.RolesReferenced;
import weblogic.jws.security.SecurityRoleRef;
@WebService(name="SecurityRolesPortType",
            serviceName="SecurityRolesService",
            targetNamespace="http://example.org")
@RolesAllowed (  {
    @SecurityRole (role="manager",
                   mapToPrincipals={ "juliet","amanda" }),
    @SecurityRole (role="vp")
} )
@RolesReferenced (
    @SecurityRoleRef (role="mgr", link="manager")
)
public class SecurityRolesImpl {
...

この例では、ロールmgrはWebサービスの呼出しを許可されているロールmanagerにリンクされています。つまり、mgrのロールに割り当てられたユーザーはすべて、Webサービスの呼出しを許可されているということです。

weblogic.jws.security.RunAs

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

WebLogic Server内のWebサービスを実際に実行するロールおよびユーザーのアイデンティティを指定します。

たとえば、@RunAsアノテーションが、roleAロールとuserAプリンシパルを指定すると仮定します。これは、WebサービスがuserB (roleBにマップされている)によって呼び出された場合でも、関連の操作は内部で実際にはuserAとして実行されているということです。

属性

表3-30 weblogic.jws.security.RunAs JWSアノテーションの属性

名前 説明 データ型 必須?
role

Webサービスが実行されるロールを指定します。

String

はい

mapToPrincipal

ロールにマップするプリンシパル・ユーザーを指定します。

通常は管理コンソールを使用して、指定されたプリンシパル(ユーザー)を有効なWebLogic Serverユーザーとして構成済であることが前提となっています。詳細は、Oracle WebLogic Server管理コンソール・ヘルプユーザーの作成に関する項を参照してください。

String

はい


package examples.webservices.security_roles;
import weblogic.jws.security.RunAs;
...
@WebService(name="SecurityRunAsPortType",
            serviceName="SecurityRunAsService",
            targetNamespace="http://example.org")
@RunAs (role="manager", mapToPrincipal="juliet")
public class SecurityRunAsImpl {
...

この例では、どのユーザーによって呼び出されたかに関係なく、Webサービスを常にロールmanagerにマップされているユーザーjulietとして実行するということを指定する方法を示します。

weblogic.jws.security.SecurityRole

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス、メソッド

Webサービスの呼出しを許可されているロールの名前を指定します。このアノテーションは、JWSファイルの中で常に@RolesAllowed配列のメンバーとして指定されます。

クライアント・アプリケーションは保護されたWebサービスを呼び出す際、基本認証の一部としてユーザーおよびパスワードを指定します。管理者は管理コンソールを使用してユーザーを有効なWebLogic Serverユーザーとして構成済であることが前提となっています。詳細は、『Oracle WebLogic Server管理コンソール・ヘルプ』ユーザーの作成に関する項を参照してください。

Webサービスを呼び出すユーザーは、関連のロールにもマップされている必要があります。このタスクは、次の2つの方法のいずれかによって実行できます。

  • 管理コンソールでユーザーをロールにマップします。この場合、@SecurityRoleアノテーションのmapToPrincipals属性は指定しません。詳細は、Oracle WebLogic Server管理コンソール・ヘルプロールへのユーザーの追加に関する項を参照してください。

  • mapToPrincipals属性を使用して1人以上のユーザーを指定することで、Webサービスのコンテキスト内でのみユーザーをロールにマップします。

複数のロールがWebサービスの呼出しを許可されていることを指定するには、複数の@SecurityRoleアノテーションを@RolesAllowedアノテーション内に含めます。

属性

表3-31 weblogic.jws.security.SecurityRole JWSアノテーションの属性

名前 説明 データ型 必須?
role

Webサービスの呼出しを許可されているロールの名前。

String

はい

mapToPrincipals

ロールにマップするユーザー名の配列。

この属性を指定しない場合は、通常管理コンソールを使用してユーザーとロールの間のマッピングを外部で定義済であると想定されます。

String[]

いいえ


package examples.webservices.security_roles;
...
import weblogic.jws.security.RolesAllowed;
import weblogic.jws.security.SecurityRole;
@WebService(name="SecurityRolesPortType",
            serviceName="SecurityRolesService",
            targetNamespace="http://example.org")
@RolesAllowed (  {
    @SecurityRole (role="manager",
                   mapToPrincipals={ "juliet","amanda" }),
    @SecurityRole (role="vp")
} )
public class SecurityRolesImpl {
...

この例では、ロールmanagerおよびvpのみがWebサービスの呼出しを許可されています。Webサービスのコンテキスト内で、ユーザーjulietおよびamandaにはロールmanagerが割り当てられます。しかしロールvpには、ユーザーが外部でこのロールにマップされたことを示唆するmapToPrincipals属性が含まれていません。ここでは、2人のユーザーjulietおよびamandaがWebLogic Serverセキュリティ・レルムにすでに追加されていることが前提となっています。

weblogic.jws.security.SecurityRoleRef

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

Webサービスの呼出しを許可されている、指定済のロールにリンクするロール名参照を指定します。

ロール参照にマップされたユーザーは、参照されたロールがWebサービスの@RolesAllowedアノテーションで指定されている限り、Webサービスを呼び出すことができます。

属性

表3-32 weblogic.jws.security.SecurityRoleRef JWSアノテーションの属性

名前 説明 データ型 必須?
role

ロール参照の名前。

String

はい

link

Webサービスの呼出しを許可されている指定済のロールの名前。この属性の値は、同じJWSファイルで指定されている@SecurityRole annotationrole属性の値に対応します。

String

はい


package examples.webservices.security_roles;
...
import weblogic.jws.security.RolesAllowed;
import weblogic.jws.security.SecurityRole;
import weblogic.jws.security.RolesReferenced;
import weblogic.jws.security.SecurityRoleRef;
@WebService(name="SecurityRolesPortType",
            serviceName="SecurityRolesService",
            targetNamespace="http://example.org")
@RolesAllowed (  {
    @SecurityRole (role="manager",
                   mapToPrincipals={ "juliet","amanda" }),
    @SecurityRole (role="vp")
} )
@RolesReferenced (
    @SecurityRoleRef (role="mgr", link="manager")
)
public class SecurityRolesImpl {
...

この例では、ロールmgrはWebサービスの呼出しを許可されているロールmanagerにリンクされています。つまり、mgrのロールに割り当てられたユーザーはすべて、Webサービスの呼出しを許可されているということです。

weblogic.jws.security.UserDataConstraint

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

クライアントがWebサービスを呼び出す際に、HTTPSトランスポートの使用が必要であるかどうかを指定します。

WebLogic Serverは、このアノテーションのtransport属性が、Webサービスを実装するJWSファイル内でTransport.INTEGRALTransport.CONFIDENTIALのうちのいずれかに設定されていると、クライアントとWebサービスの間にSecure Sockets Layer (SSL)接続を確立します。

このアノテーションをJWSファイル内で指定した場合は、weblogic.jws.WLHttpTransportアノテーション(または、jwsc Antタスクの<WLHttpTransport>要素)も指定して、HTTPSバインディングがjwsc AntタスクによってWSDLファイル内に確実に生成されるようにする必要があります。

属性

表3-33 weblogic.jws.security.UserDataConstraint JWSアノテーションの属性

名前 説明 データ型 必須?
transport

クライアントがWebサービスを呼び出す際に、HTTPSトランスポートの使用が必要であるかどうかを指定します。

有効な値は次のとおりです:

  • Transport.NONE - Webサービスがトランスポートの保証を必要としていないことを指定します。

  • Transport.INTEGRAL - Webサービスにおいて、転送中にデータが変更されない方法でクライアントとWebサービス間のデータ送信を行う必要があることを指定します。

  • Transport.CONFIDENTIAL - Webサービスにおいて、データの内容を覗かれないようにデータを送信する必要があることを指定します。

デフォルト値はTransport.NONEです。

enum

いいえ


package examples.webservices.security_https;
import weblogic.jws.security.UserDataConstraint;
...
@WebService(name="SecurityHttpsPortType",
            serviceName="SecurityHttpsService",
            targetNamespace="http://example.org")
@UserDataConstraint(
           transport=UserDataConstraint.Transport.CONFIDENTIAL)
public class SecurityHttpsImpl {
...

weblogic.jws.security.WssConfiguration

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス

Webサービスで使用するWebサービス・セキュリティ構成の名前を指定します。JWSファイルでこのアノテーションを指定しなかった場合、デフォルトのセキュリティ構成(default_wss)をドメインで作成済であれば、Webサービスは、そのセキュリティ構成に関連付けられます。

@WssConfigurationアノテーションは、Webサービスでメッセージ・レベルのセキュリティ(暗号化およびデジタル署名)が構成されている場合にのみ有効です。このアノテーションを使用してWebサービスに関連付けられたセキュリティ構成では、アイデンティティの認証にX.509証明書を使用するかどうか、パスワード・ダイジェストを使用するかどうか、暗号化やデジタル署名にキーストアを使用するかどうかなどを指定します。

WebLogic Webサービスは、必ずしもセキュリティ構成と関連付ける必要はありません。Webサービスのセキュリティ・ランタイムのデフォルトの動作が十分なものであれば、追加の構成は不要です。しかし、Webサービスでデフォルトとは異なる動作が必要とされる場合(アイデンティティの認証に、デフォルトのユーザー名/パスワードのトークンではなくX.509証明書を使用する場合など)は、Webサービスにセキュリティ構成を関連付ける必要があります。

セキュリティ構成を指定したWebサービスを呼び出すことができるようにするには、あらかじめ管理コンソールでセキュリティ構成を作成しておく必要があります。詳細は、Oracle WebLogic Server管理コンソール・ヘルプWebサービス・セキュリティ構成の作成に関する項を参照してください。メッセージ・レベルのセキュリティの概要は、『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。


注意:

@WssConfigurationアノテーションを使用する場合、単一のWebアプリケーションにパッケージ化されているすべてのWebLogic Webサービスは同じセキュリティ構成に関連付けられている必要があります。たとえば、特定のWebアプリケーションに含まれるWebサービスを実装するすべてのJWSファイルに@WssConfigurationアノテーションが存在している場合は、各@WssConfigurationvalue属性が同じでなければなりません。

jwsc Antタスクを使用してJWSファイルをWebサービスにコンパイルするときに複数のWebサービスが単一のWebアプリケーションに含まれていることを指定するには、単一の<module>要素で対応する<jws>要素をグループ化します。


属性

表3-34 weblogic.jws.security.WssConfiguration JWSアノテーション・タグの属性

名前 説明 データ型 必須?
value

このWebサービスに関連付けられたWebサービス・セキュリティ構成の名前を指定します。デフォルト構成名はdefault_wssです。

Webサービスを問題なく呼び出すことができるようにするには、管理コンソールであらかじめセキュリティ構成(デフォルト構成も含む)を作成しておく必要があります。

String

はい


以下の例では、Webサービスがmy_security_configurationセキュリティ構成に関連付けられるように指定する方法を示します。ここでは、関連するJavaコードのみを示します。

package examples.webservices.wss_configuration;
import javax.jws.WebService;
...
import weblogic.jws.security.WssConfiguration;
@WebService(...
...
@WssConfiguration(value="my_security_configuration")
public class WssConfigurationImpl {
...

weblogic.jws.soap.SOAPBinding

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: メソッド

SOAPメッセージ・プロトコルに対するWebサービス操作のマッピングを指定します。

このアノテーションは、@javax.jws.soap.SOAPBindingに似ていますが、クラスではなく、メソッドに適用される点が異なります。たとえば、このアノテーションを使用すると、あるWebサービス操作でRPCエンコードのSOAPバインディングを使用し、同じWebサービスの別の操作ではdocument-literal-wrappedのSOAPバインディングを使用するように指定できます。


注意:

@weblogic.jws.soap.SOAPBindingおよび@javax.jws.soap.SOAPBindingは同じクラス名を持つため、JWSファイルで使用する際は、どちらのアノテーションを指しているかに注意する必要があります。


属性

表3-35 weblogic.jws.soap.SOAPBinding JWSアノテーションの属性

名前 説明 データ型 必須?
style

呼び出されたアノテーション付き操作のリクエストおよびレスポンスのSOAPメッセージのメッセージ・スタイルを指定します。

有効な値は次のとおりです:

  • SOAPBinding.Style.RPC

  • SOAPBinding.Style.DOCUMENT

デフォルト値はSOAPBinding.Style.DOCUMENTです。

enum

いいえ

use

呼び出されたアノテーション付き操作のリクエストおよびレスポンスのSOAPメッセージのフォーマット・スタイルを指定します。

有効な値は次のとおりです:

  • SOAPBinding.Use.LITERAL

  • SOAPBinding.Use.ENCODED

デフォルト値はSOAPBinding.Use.LITERALです。

enum

いいえ

parameterStyle

メソッド・パラメータがメッセージ本文を表しているかどうか、パラメータが操作に基づく名前の最上位の要素内にラップされている要素かどうかを判別します。

有効な値は次のとおりです:

  • SOAPBinding.ParameterStyle.BARE

  • SOAPBinding.ParameterStyle.WRAPPED

デフォルト値はSOAPBinding.ParameterStyle.WRAPPEDです。

注意: この属性は、ドキュメント・リテラル形式のWebサービスに対してのみ有効となります。つまり、style属性をSOAPBinding.Style.DOCUMENTに、use属性をSOAPBinding.Use.LITERALに設定している場合にのみ、この属性を指定できます。

enum

いいえ


次に、Webサービス操作がdocument-literal-wrappedのSOAPバインディングをデフォルトで使用するように指定する簡単なJWSファイルを示します。これは、@javax.jws.soap.SOAPBindingアノテーションをクラス・レベルで使用することによって指定できます。この例では、@weblogic.jws.soap.SOAPBindingアノテーションをメソッド・レベルで使用して個々のメソッドに異なるSOAPバインディングを指定する方法も示します。具体的には、sayHelloDocLitBare()メソッドではdocument-literal-bareのSOAPバインディングを使用し、sayHelloRPCEncoded()メソッドではRPCエンコードのSOAPバインディングを使用します。

package examples.webservices.soap_binding_method;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import weblogic.jws.WLHttpTransport;
@WebService(name="SoapBindingMethodPortType",
            serviceName="SoapBindingMethodService",
            targetNamespace="http://example.org")
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT,
             use=SOAPBinding.Use.LITERAL,
             parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
@WLHttpTransport(contextPath="soap_binding_method",
                 serviceUri="SoapBindingMethodService",
                 portName="SoapBindingMethodServicePort")
/**
 * Simple JWS example that shows how to specify soap bindings for a method.
 */
public class SoapBindingMethodImpl {
  @WebMethod()
  @weblogic.jws.soap.SOAPBinding(
               style=SOAPBinding.Style.DOCUMENT,
               use=SOAPBinding.Use.LITERAL,
               parameterStyle=SOAPBinding.ParameterStyle.BARE)
  public String sayHelloDocLitBare(String message) {
    System.out.println("sayHelloDocLitBare" + message);
    return "Here is the message: '" + message + "'";
  }
  @WebMethod()
  @weblogic.jws.soap.SOAPBinding(
               style=SOAPBinding.Style.RPC,
               use=SOAPBinding.Use.ENCODED)
  public String sayHelloRPCEncoded (String message) {
    System.out.println("sayHelloRPCEncoded" + message);
    return "Here is the message: '" + message + "'";
  }
}

weblogic.jws.security.SecurityRoles (非推奨)

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス、メソッド


注意:

WebLogic Server 9.0以降では、@weblogic.security.jws.SecurityRoles JWSアノテーションは非推奨となっています。


Webサービス操作にアクセスできるロールを指定します。

このアノテーションをクラス・レベルで指定した場合、指定したロールは、Webサービスのすべてのパブリック操作に適用されます。複数のロールを同じWebサービスの複数の操作に関連付ける場合は、メソッド・レベルでロールのリストを指定することもできます。


注意:

@SecurityRolesアノテーションは、EJB実装のWebサービスのコンテキスト内でのみ有効です。そのため、このアノテーションは、javax.ejb.SessionBeanを明示的に実装しているJWSファイル内でのみ指定できます。EJBへのアクセス保護の概念については、『Oracle WebLogic Serverセキュリティのプログラミング』のEnterprise JavaBeans (EJB)のセキュリティ対策に関する項を参照してください。JWSファイル内でのEJBの明示的な実装については、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のステートレス・セッションEJBを実装すべき場合に関する項を参照してください。


属性

表3-36 weblogic.jws.security.SecurityRoles JWSアノテーションの属性

名前 説明 データ型 必須?
rolesAllowed

Webサービスにアクセスできるロールのリストを指定します。

このアノテーションは、Webサービスを実装するステートレス・セッションEJBのejb-jar.xmlデプロイメント記述子の<method-permission>要素と同じ役割を持っています。

文字列の配列

いいえ

rolesReferenced

Webサービスで参照されるロールのリストを指定します。

Webサービスは、リストされたロールの資格証明を使用して他のリソースにアクセスできます。

このアノテーションは、Webサービスを実装するステートレス・セッションEJBのejb-jar.xmlデプロイメント記述子の<security-role-ref>要素と同じ役割を持っています。

文字列の配列

いいえ


以下の例では、AdminロールのみがWebサービスを呼び出すことができるようにクラス・レベルで指定する方法を示します。ここでは、関連する部分のみを示します。

package examples.webservices.security_roles;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import weblogic.ejbgen.Session;
import javax.jws.WebService;
...
import weblogic.jws.security.SecurityRoles;
@Session(ejbName="SecurityRolesEJB")
@WebService(...
// Specifies the roles who can invoke the entire Web Service
@SecurityRoles(rolesAllowed="Admnin")
public class SecurityRolesImpl implements SessionBean {
...

weblogic.jws.security.SecurityIdentity (非推奨)

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス


注意:

WebLogic Server 9.1以降では、@weblogic.security.jws.SecurityIdentity JWSアノテーションは非推奨となっています。


呼び出されたときにWebサービスが想定するアイデンティティを指定します。

異なる指定が行われていなければ、Webサービスは、認証された呼出し元のアイデンティティを想定します。このアノテーションを使用すると、Webサービスが特定のロールで実行されるように設定を変更できます。ロールは、WebLogic Serverのセキュリティ・レルム内のユーザーまたはグループに対応している必要があります。


注意:

@SecurityIdentityアノテーションは、EJB実装のWebサービスのコンテキスト内でのみ有効です。そのため、このアノテーションは、javax.ejb.SessionBeanを明示的に実装しているJWSファイル内でのみ指定できます。EJBへのアクセス保護の概念については、『Oracle WebLogic Serverセキュリティのプログラミング』のEnterprise JavaBeans (EJB)のセキュリティ対策に関する項を参照してください。JWSファイル内でのEJBの明示的な実装については、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のステートレス・セッションEJBを実装すべき場合に関する項を参照してください。


属性

表3-37 weblogic.jws.security.SecurityIdentity JWSアノテーションの属性

名前 説明 データ型 必須?
value

呼び出されたWebサービスが前提とするロールを指定します。ロールは、WebLogic Serverのセキュリティ・レルム内のユーザーまたはグループに対応している必要があります。

String

はい


以下の例では、呼び出されたWebサービスがAdminロールで実行されるように指定する方法を示します。

package examples.webservices.security_roles;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import weblogic.ejbgen.Session;
import javax.jws.WebService;
...
import weblogic.jws.security.SecurityIdentity;
@Session(ejbName="SecurityRolesEJB")
@WebService(...
// Specifies that the Web Service runs as the Admin role
@SecurityIdentity( value="Admin")
public class SecurityRolesImpl implements SessionBean {
...

weblogic.wsee.jws.jaxws.owsm.SecurityPolicies

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス、メソッド

@weblogic.wsee.jws.jaxws.owsm.SecurityPolicyアノテーションの配列を指定します。

このアノテーションは、複数のOracle Web Services Manager (Oracle WSM) WS-PolicyファイルをJWSファイルのクラスまたはメソッドにアタッチする場合に使用します。アタッチするOracle WSM WS-Policyファイルが1つのみの場合は、@weblogic.wsee.jws.jaxws.owsm.SecurityPolicyを単独で使用できます。

このアノテーションの使用の詳細および例は、『Oracle WebLogic Server WebLogic Webサービスの保護』のOracle Webサービス・セキュリティ・ポリシーの使用に関する項を参照してください。

このJWSアノテーションには、属性はありません。

@SecurityPolicies({
    @SecurityPolicy(uri="policy:firstPolicy.xml"),
    @SecurityPolicy(uri="policy:secondPolicy.xml")
  })

weblogic.wsee.jws.jaxws.owsm.SecurityPolicy

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス、メソッド

デジタル署名または暗号化に関する情報を格納しているOracle Web Services Manager (Oracle WSM) WS-PolicyファイルをリクエストまたはレスポンスSOAPメッセージに適用するように指定します。

このアノテーションを単独で使用すると、単一のOracle WSM WS-Policyファイルをクラスまたはメソッドに適用できます。複数のOracle WSM WS-Policyファイルをクラスまたはメソッドに適用する場合は、@weblogic.wsee.jws.jaxws.owms.SecurityPoliciesアノテーションを使用し、Oracle WSM WS-Policyファイルをまとめて適用します。

このアノテーションをクラス・レベルでのみ指定すると、Oracle WSM WS-Policyファイル(1つまたは複数)はWebサービスのあらゆるパブリック操作に適用されていることを示します。

Oracle WSM WS-SecurityポリシーはWebLogic Server JAX-WS WebサービスのWSDLに公開されません。(通常、Webサービスに関連付けられたポリシー・ファイルはそのWSDLにアタッチされます。Webサービス・クライアント・ランタイムはこれを読み取り、クライアント・アプリケーションから呼び出された操作からのSOAPメッセージ・リクエストのデジタル署名やデジタル暗号化を行うかどうかを判別したり、行う場合はその方法を判別したりします。)

このアノテーションの使用の詳細および例は、『Oracle WebLogic Server WebLogic Webサービスの保護』のOracle Webサービス・セキュリティ・ポリシーの使用に関する項を参照してください。


注意:

すべてのJWSのアノテーションにあてはまることですが、@SecurityPolicyアノテーションは実行時にはオーバーライドできません。つまり、ビルド時にアノテーションを使用して指定したOracle WSM WS-Policyファイルが、常にWebサービスに関連付けられることになります。これは、たとえば管理コンソールを使用して実行時に関連付けられたOracle WSM WS-Policyファイルを参照できても、それを削除(関連付け解除)することはできないことを意味します。ただし、管理コンソールを使用して追加のOracle WSM WS-Policyファイルを関連付けることはできます。手順の詳細は、『Oracle WebLogic Server WebLogic Webサービスの保護』の管理コンソールでOracle WSMセキュリティ・ポリシーの構成に関する項を参照してください。


属性

表3-38 weblogic.jws.SecurityPolicy JWSアノテーション・タグ属性

名前 説明 データ型 必須?
uri

Oracle WSM WS-Policyファイルを取得する場所を指定します。

Web上のOracle WSM WS-PolicyファイルのURLを指定するには、http:接頭辞を使用します。

Oracle WSM WS-PolicyファイルがWebLogic ServerのWebサービス・アーカイブ・ファイルまたは共有可能なJava EEライブラリにパッケージ化されていることを指定する場合は、以下の例のようにpolicy:接頭辞を使用します。

@SecurityPolicy(uri=
"policy:oracle/wss10_username_token_with_message_protection_server_policy")

String

はい


@SecurityPolicy(uri=
"policy:oracle/wss10_username_token_with_message_protection_server_policy")

weblogic.wsee.wstx.wsat.Transactional

以降の項では、アノテーションを詳細に説明します。

説明

ターゲット: クラス、メソッド

アノテーション付きのクラスまたはメソッドをWebサービス原子性トランザクション内で実行するかどうかを指定します。

Webサービス・クラス・レベルで@Transactionalアノテーションを指定すると、サービス・エンドポイント・インタフェースで定義されたすべての双方向同期メソッドに設定が適用されます。フロー・タイプの値はメソッド・レベルでオーバーライドできますが、バージョンはトランザクション全体で一致している必要があります。

WebLogic Webサービスでは、次の仕様をサポートすることで、Websphere、JBoss、Microsoft .NETなどの外部トランザクション処理システムとの相互運用性を実現しています。

属性

表3-39 weblogic.wsee.wstx.wsat.Transactionalアノテーションの属性

名前 説明 データ型 必須?
version

Webサービスおよびクライアントに対して使用されるWebサービス原子性トランザクション調整コンテキストのバージョン。クライアントの場合、アウトバウンド・メッセージに使用されるバージョンのみを指定します。指定した値は、トランザクション全体で一致している必要があります。

有効な値は、WSAT10WSAT11WSAT12およびDEFAULTです。WebサービスのDEFAULT値は、(インバウンド・リクエストで起動された)3つのバージョンすべてです。Webサービス・クライアントのDEFAULT値はWSAT10です。

例:

@Transactional(version=
     Transactional.Version.WSAT10])

String

いいえ

value

Webサービス原子性トランザクション調整コンテキストがトランザクション・フローとともに渡されるかどうか。有効な値は、表3-40を参照してください。

String

いいえ


次の表は、フロー・タイプの有効な値と、Webサービスおよびクライアントでのそれらの意味をまとめたものです。この表では、@TransactionAttributeアノテーションを使用するEJB型のWebサービスに対してWebサービス原子性トランザクションを構成する際の有効な値の組合せも示しています。

表3-40 フロー・タイプの値

Webサービス・クライアント Webサービス EJB @TransactionAttributeの有効な値

NEVER

トランザクション調整コンテキストをエクスポートしません。

トランザクション調整コンテキストをインポートしません。

NEVERNOT_SUPPORTEDREQUIREDREQUIRES_NEWSUPPORTS

SUPPORTS(デフォルト)

トランザクションがある場合は、トランザクション調整コンテキストをエクスポートします。

トランザクション調整コンテストがメッセージに存在する場合は、それをインポートします。

REQUIREDSUPPORTS

MANDATORY

トランザクション調整コンテキストをエクスポートします。アクティブなトランザクションがない場合は、例外がスローされます。

トランザクション調整コンテキストをインポートします。アクティブなトランザクションがない場合は、例外がスローされます。

MANDATORYREQUIREDSUPPORTS


@Transactional(value = Transactional.TransactionFlowType.SUPPORTS,
     version="Transactional.Versino.WSAT12