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

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

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

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

以下の節では、標準 (JSR-181) JWS アノテーションおよび WebLogic 固有の JWS アノテーションに関するリファレンスを提供します。

 


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

WebLogic Web サービス プログラミング モデルでは、新しい JDK 5.0 メタデータ アノテーション機能 (JSR-175 による仕様) を採用しています。このプログラミング モデルでは、アノテーション付きの Java ファイルを作成し、Ant タスクを使用してそのファイルを Java クラスにコンパイルし、関連するアーティファクトをすべて生成します。

アノテーション付きの Java Web サービス (JWS) ファイルは、Web サービスの中核部分です。このファイルには Web サービスの動作を決定する Java コードが含まれています。JWS ファイルは、アノテーションを使用して Web サービスの形式や特性を指定した、通常の Java クラス ファイルです。JWS ファイルで使用できる JWS アノテーションには、Web Services Metadata for the Java Platform 仕様 (JSR-181) で定義された標準のアノテーションと、WebLogic 固有のアノテーションがあります。この章では、この両方のアノテーションに関するリファレンス情報を提供します。

JWS アノテーションは、JWS ファイルのクラス、メソッド、またはパラメータのいずれかのレベルを対象にします。アノテーションの中には、複数のレベルを対象にできるものもあります。たとえば、@SecurityRoles は、クラスとメソッドの 2 つのレベルを対象にできます。この節では、各アノテーションの対象となるレベルを列挙して説明します。

次に、簡単な JWS ファイルの例を挙げます。このファイルでは、JSR-181 に準拠した標準 JWS アノテーションおよび WebLogic 固有の JWS アノテーションの両方が使われており、アノテーションはともに太字で示されています。

package examples.webservices.complex;
// 標準の JWS アノテーション インタフェースをインポートする
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
// WebLogic 固有の JWS アノテーション インタフェースをインポートする
import weblogic.jws.WLHttpTransport;
// BasicStruct JavaBean をインポートする
import examples.webservices.complex.BasicStruct;
// Web サービスの portType 名を「ComplexPortType」、パブリック サービス名を「ComplexService」、
// 生成される WSDL で使用される targetNamespace を「http://example.org」と指定する、
// 標準の JWS アノテーション
@WebService(serviceName="ComplexService", name="ComplexPortType",
targetNamespace="http://example.org")
// document-literal-wrapped 型の Web サービスであることを指定する
// 標準の JWS アノテーション
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT,
use=SOAPBinding.Use.LITERAL,
parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
// Web サービスの URI を構成するのに使用されるコンテキスト パスとサービス URI が
// 「complex/ComplexService」であることを指定する、WebLogic 固有の JWS アノテーション
@WLHttpTransport(contextPath="complex", serviceUri="ComplexService",
portName="ComplexServicePort")
/**
* WebLogic Web サービスの土台となる JWS ファイル。
* この Web サービスには以下の 2 つのパブリック オペレーションがある
*
* - echoInt(int)
* - echoComplexType(BasicStruct)
*
* この Web サービスは「document-literal」サービスとして定義される。
* つまり、SOAP メッセージには、本文全体を定義する XML スキーマ要素
* を参照している 1 つの部分がある
*
* @author Copyright (c) 2005 by BEA Systems.All Rights Reserved.
*/
public class ComplexImpl {
  // メソッドがパブリック オペレーションとして公開されることを指定する、
// 標準の JWS アノテーション。アノテーションにはメンバー値の
// 「operationName」が含まれていないので、オペレーションの名前は
// メソッド名 echoInt と同じになる
//
// WebResult アノテーションは、生成される WSDL 内のオペレーションの
// 結果の名前が、デフォルト名の「return」ではなく「IntegerOutput」
// であることを指定する。WebParam アノテーションは、WSDL ファイル内の
// 入力パラメータ名が、パラメータの Java 名「input」ではなく、
// 「IntegerInput」であることを指定する
  @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;
}
  // メソッド「echoStruct」を「echoComplexType」というパブリック オペレーション
// として公開するための、標準の JWS アノテーション
// WebResult アノテーションは、生成される WSDL 内のオペレーションの結果の名前が、
// デフォルト名の「return」ではなく、「EchoStructReturnMessage」であることを
// 指定する
  @WebMethod(operationName="echoComplexType")
@WebResult(name="EchoStructReturnMessage",
targetNamespace="http://example.org/complex")
public BasicStruct echoStruct(BasicStruct struct)
{
System.out.println("echoComplexType called");
return struct;
}
}

 


標準 JSR-181 の JWS アノテーション リファレンス

Web Services Metadata for the Java Platform (JSR-181) 仕様は、Web サービスの形態と動作を指定するために JWS ファイルで使用可能な標準アノテーションを定義しています。この節では、各アノテーションをその属性とともに簡単に説明します。例については、「JWS ファイルのプログラミング」を参照してください。Java アノテーションの型定義や追加の例など、各アノテーションの詳細については、仕様を参照してください。

この節では、以下の標準 JWS アノテーションについて説明します。

javax.jws.WebService

解説

対象 : クラス

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

属性

表 B-1 javax.jws.WebService JWS アノテーションの属性

名前

解説

データ型

必須/省略可能

name

Web サービスの名前。WSDL ファイルの <wsdl:portType> 要素に対応している。

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

文字列

省略可能

targetNamespace

この Web サービスから生成された WSDL と XML 要素で使用する XML ネームスペース。

デフォルト値は、JAX-RPC 仕様で定義されている値。

文字列

省略可能

serviceName

Web サービスのサービス名。WSDL ファイルの <wsdl:service> 要素に対応している。

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

文字列

省略可能

wsdlLocation

あらかじめ定義されている WSDL ファイルの相対または絶対 URL。この属性を指定した場合、jwsc Ant タスクは、WSDL ファイルを生成しない。また、JWS ファイルが WSDL ファイルのポートの種類およびバインディングと整合していない場合はエラーを返す。

注意 : wsdlc Ant タスクは、WSDL からエンドポイント インタフェース JWS ファイルを生成するときにこの属性を使用する。通常、ユーザ独自の JWS ファイルではこの属性を使用しない。

文字列

省略可能

endpointInterface

既存のサービス エンドポイント インタフェース ファイルの完全修飾名。この属性を指定した場合は、エンドポイント インタフェース ファイルがすでに作成されており、CLASSPATH にあるものと見なされる。

文字列

省略可能

@WebService(name="JMSTransportPortType",
serviceName="JMSTransportService",
targetNamespace="http://example.org")

javax.jws.WebMethod

解説

対象 : メソッド

Web サービスのパブリック オペレーションとしてメソッドが公開されるように指定します。メソッドを公開するには、このアノテーションを明示的に使用する必要があります。このアノテーションを指定しなかった場合、メソッドはデフォルトでは公開されません。

属性

表 B-2 javax.jws.WebMethod JWS アノテーションの属性

名前

解説

データ型

必須/省略可能

operationName

オペレーションの名前。WSDL ファイルの <wsdl:operation> 要素に対応している。

デフォルト値はメソッドの名前。

文字列

省略可能

action

このオペレーションのアクション。SOAP バインディングの場合、この属性の値によって、SOAP メッセージの SOAPAction ヘッダの値が決まる。

文字列

省略可能

 @WebMethod(operationName="echoComplexType")
 public BasicStruct echoStruct(BasicStruct struct)
{
...
}

javax.jws.Oneway

解説

対象 : メソッド

メソッドが入力パラメータのみを持っており、値を返さないように指定します。このアノテーションは、必ず @WebMethod アノテーションと一緒に使用する必要があります。

void 以外の値を返すメソッド、入力パラメータとして Holder クラスを取るメソッド、またはチェック例外を送出するメソッドに対してこのアノテーションを使用すると、エラーになります。

このアノテーションは、属性を持ちません。

  @WebMethod()
@Oneway()
public void helloWorld(String input) {
...
  }

javax.jws.WebParam

解説

対象 : パラメータ

Web サービスのオペレーションの入力パラメータと、生成された WSDL ファイルの要素との対応関係をカスタマイズします。このアノテーションは、パラメータの動作を指定する場合にも使われます。

属性

表 B-3 javax.jws.WebParam JWS アノテーションの属性

名前

解説

データ型

必須/省略可能

name

WSDL ファイルのパラメータの名前。

RPC 形式の Web サービスの場合、この名前は、パラメータを表す <wsdl:part> 要素に対応している。document 形式の Web サービスの場合、この名前は、パラメータを表す XML 要素のローカル名。

デフォルト値はメソッドのパラメータの名前。

文字列

省略可能

targetNamespace

パラメータの XML ネームスペース。この値は、document 形式の Web サービスでのみ使用される。パラメータは、この Web サービスの XML 要素に対応している。

デフォルト値は、Web サービスの targetNamespace。

文字列

省略可能

mode

パラメータがやり取りされる方向。

有効な値は、次のとおり。

  • WebParam.Mode.IN

  • WebParam.Mode.OUT

  • WebParam.Mode.INOUT

デフォルト値は、WebParam.Mode.IN

WebParam.Mode.OUT または WebParam.Mode.INOUT を指定した場合、パラメータのデータ型は Holder または Holder を拡張したものになる必要がある。詳細については、『JAX-RPC 仕様』を参照。

WebParam.Mode.OUT モードと WebParam.Mode.INOUT モードは、RPC 形式の Web サービス、またはヘッダにマップするパラメータの場合にのみサポートされる。

enum

省略可能

header

パラメータの値が SOAP ヘッダにあるかどうかを指定する。デフォルトでは、パラメータは SOAP 本文内にある。

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

ブール

省略可能

 @WebMethod()
public int echoInt(
@WebParam(name="IntegerInput",
targetNamespace="http://example.org/complex")
int input)
{
...
}

javax.jws.WebResult

解説

対象 : メソッド

Web サービスのオペレーションの戻り値と、生成された WSDL ファイルの対応する要素との対応関係をカスタマイズします。

属性

表 B-4 javax.jws.WebResult JWS アノテーションの属性

名前

解説

データ型

必須/省略可能

name

WSDL ファイルのパラメータの名前。

RPC 形式の Web サービスの場合、この名前は、戻り値を表す <wsdl:part> 要素に対応している。document 形式の Web サービスの場合、この名前は、戻り値を表す XML 要素のローカル名。

デフォルト値はハードコード化された result

文字列

省略可能

targetNamespace

戻り値の XML ネームスペース。この値は、document 形式の Web サービスでのみ使用される。戻り値は、この Web サービスの XML 要素に対応している。

デフォルト値は、Web サービスの targetNamespace。

文字列

省略可能

  @WebMethod(operationName="echoComplexType")
@WebResult(name="EchoStructReturnMessage",
targetNamespace="http://example.org/complex")
public BasicStruct echoStruct(BasicStruct struct)
{
...
}

javax.jws.HandlerChain

解説

対象 : クラス

ハンドラ チェーンのコンフィグレーションを格納している外部ファイルに Web サービスを関連付けます。コンフィグレーションには、チェーン内のハンドラのリスト、ハンドラが実行される順序、初期化パラメータなどが含まれます。

以下の場合は、@SOAPMessageHandlers アノテーションではなく @HandlerChain アノテーションを JWS ファイルで使用します。

このアノテーションを @SOAPMessageHandlers アノテーションと一緒に使用すると、エラーになります。

外部コンフィグレーション ファイルの XML スキーマ、その作成に関する追加情報、および追加のサンプルについては、Web Services Metadata for the Java Platform 仕様を参照してください。

属性

表 B-5 javax.jws.HandlerChain JWS アノテーションの属性

名前

解説

データ型

必須/省略可能

file

ハンドラ チェーンのコンフィグレーション ファイルの相対または絶対 URL。相対 URL の場合は、JWS ファイルの場所が基準になる。

文字列

必須

name

Web サービスに関連付ける (file 属性が指すコンフィグレーション ファイル内の) ハンドラ チェーンの名前。

文字列

必須

package examples.webservices.handler;
...
@WebService (...)
@HandlerChain(file="HandlerConfig.xml", name="SimpleChain")
public class HandlerChainImpl {
...
}

javax.jws.soap.SOAPBinding

解説

対象 : クラス

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

属性

表 B-6 javax.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

省略可能

package examples.webservices.bindings;
...
@WebService (...)
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT,
use=SOAPBinding.Use.LITERAL,
parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
public class BindingsImpl {
...
}

javax.jws.soap.SOAPMessageHandler

解説

対象 : なし。このアノテーションは、@SOAPMessageHandler 配列の内部でのみ使用可能です。

特定の SOAP メッセージ ハンドラを @SOAPMessageHandler 配列で指定します。このアノテーションには、ハンドラのクラス名、初期化パラメータ、ハンドラで処理される SOAP ヘッダのリストなどを指定する属性が含まれます。

属性

表 B-7 javax.jws.soap.SOAPMessageHandler JWS アノテーションの属性

名前

解説

データ型

必須/省略可能

name

SOAP メッセージ ハンドラの名前。

デフォルト値は、Handler インタフェースを実装する (または GenericHandler 抽象クラスを拡張する) クラスの名前。

文字列

省略可能

className

ハンドラ クラスの名前。

文字列

必須

initParams

初期化の際にハンドラ クラスに渡される名前/値のペアの配列。

@InitParam の配列

省略可能

roles

ハンドラによって実装される SOAP のロールのリスト。

文字列の配列

省略可能

headers

ハンドラによって処理される SOAP ヘッダのリスト。

この配列内の各要素には、ハンドラで処理されるヘッダ要素を定義する QName が含まれる。

文字列の配列

省略可能

package examples.webservices.handlers;
...
@WebService (...)
@SOAPMessageHandlers ( {
@SOAPMessageHandler (
className="examples.webservices.soap_handlers.simple.ServerHandler1"),
@SOAPMessageHandler (
className="examples.webservices.soap_handlers.simple.ServerHandler2")
} )
public class HandlersImpl {
...
}

javax.jws.soap.InitParam

解説

対象 : なし。このアノテーションは、@SOAPMessageHandler アノテーションの initParams 属性に対する値としてのみ使用可能です。

このアノテーションは、初期化の際にハンドラ クラスに渡されるパラメータ (名前/値のペア) の配列を指定するために、@SOAPMessageHandler アノテーションの initParams 属性で使用します。

属性

表 B-8 javax.jws.soap.InitParam JWS アノテーションの属性

名前

解説

データ型

必須/省略可能

name

初期化パラメータの名前。

文字列

必須

value

初期化パラメータの値。

文字列

必須

javax.jws.soap.SOAPMessageHandlers

解説

対象 : クラス

Web サービスのオペレーションの前後に実行される SOAP メッセージ ハンドラの配列を指定します。@SOAPMessageHandler アノテーションは、特定のハンドラを指定するために使用します。JWS ファイル自体の内部でハンドラのリストを指定するので、ハンドラ チェーンのコンフィグレーションは、Web サービス内に埋め込まれます。

以下の場合は、@HandlerChain アノテーションではなく @SOAPMessageHandlers アノテーションを使用します。

@SOAPMessageHandlers アノテーションは @SOAPMessageHandler 型の配列です。各ハンドラは、配列内の最初のハンドラからアノテーションに表示される順序で実行されます。

このアノテーションは、属性を持ちません。

package examples.webservices.handlers;
...
@WebService (...)
@SOAPMessageHandlers ( {
@SOAPMessageHandler (
className="examples.webservices.soap_handlers.simple.ServerHandler1"),
@SOAPMessageHandler (
className="examples.webservices.soap_handlers.simple.ServerHandler2")
} )
public class HandlersImpl {
...
}

 


WebLogic 固有の JWS アノテーション リファレンス

WebLogic Web サービスは、JSR-181 の標準 JWS アノテーションに加え、さらに動作と機能を指定するのに使用できる JWS アノテーションのセットです。具体的には、WebLogic 固有のアノテーションは次のとおりです。

weblogic.jws.AsyncFailure

解説

対象 : メソッド

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

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

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

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

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

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

このアノテーションの詳細および使用例については、「非同期の要求と応答を使用した Web サービスの呼び出し」を参照してください。

属性

表 B-9 weblogic.jws.AsyncFailure JWS アノテーション タグの属性

名前

解説

データ型

必須/省略可能

target

オペレーションを非同期的に呼び出す Web サービスの JAX-RPC スタブの名前。

JAX-RPC スタブは、@ServiceClient フィールドレベルのアノテーションで注釈が付けられているスタブ。

文字列

必須

operation

非同期的に呼び出すオペレーションの名前。

この名前は、WSDL ファイルで示されているオペレーションの実際の名前。JWS ファイルのメイン コードでこのオペレーションを呼び出すときに、そのオペレーション名に Async を追加する。

たとえば、operation="getQuote" と設定した場合、JWS ファイルでは、オペレーションを次のように非同期的に呼び出す。

 port.getQuoteAsync (apc, symbol);

文字列

必須

以下のサンプル スニペットでは、別の 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 という JAX-RPC スタブが、http://localhost:7001/async/StockQuote にある Web サービスを呼び出すために使用されています。getQuote オペレーションが非同期的に呼び出され、この呼び出しで例外が発生すると、@AsyncFailure アノテーションで指定されている onGetQuoteAsyncFailure メソッドによって処理されます。

weblogic.jws.AsyncResponse

解説

対象 : メソッド

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

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

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

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

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

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

このアノテーションの詳細および使用例については、「非同期の要求と応答を使用した Web サービスの呼び出し」を参照してください。

属性

表 B-10 weblogic.jws.AsyncResponse JWS アノテーション タグの属性

名前

解説

データ型

必須/省略可能

target

オペレーションを非同期的に呼び出す Web サービスの JAX-RPC スタブの名前。

JAX-RPC スタブは、@ServiceClient フィールドレベルのアノテーションで注釈が付けられているスタブ。

文字列

必須

operation

非同期的に呼び出すオペレーションの名前。

この名前は、WSDL ファイルで示されているオペレーションの実際の名前。JWS ファイルのメイン コードでこのオペレーションを呼び出すときに、そのオペレーション名に Async を追加する。

たとえば、operation="getQuote" と設定した場合、JWS ファイルでは、オペレーションを次のように非同期的に呼び出す。

 port.getQuoteAsync (apc, symbol);

文字列

必須

以下のサンプル スニペットでは、別の 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 という JAX-RPC スタブが、http://localhost:7001/async/StockQuote にある Web サービスを呼び出すために使用されています。getQuote オペレーションが非同期的に呼び出され、この呼び出しに対する応答は、@AsyncResponse アノテーションで指定されている onGetQuoteAsyncResponse メソッドによって処理されます。

weblogic.jws.BufferQueue

解説

対象 : クラス

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

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

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

バッファ付きまたは信頼性のある Web サービスの詳細および作成例については、「バッファ付き Web サービスの作成」と「Web サービスの信頼性のあるメッセージングの使用」を参照してください。

属性

表 B-11 weblogic.jws.BufferQueue JWS アノテーション タグの属性

名前

解説

データ型

必須/省略可能

name

バッファ付きまたは信頼性のあるオペレーションの呼び出しを入れる JMS キューの JNDI 名。

文字列

必須

以下の例では、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.Context

解説

対象 : フィールド

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

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

このアノテーションを使用する際の詳細については、「JwsContext を使用した 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 を実装する必要があります。

このアノテーションの詳細および使用例については、「会話形式の Web サービスの作成」を参照してください。

属性

表 B-12 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 コードがここに入る
}
  @WebMethod
@Conversation (Conversation.Phase.CONTINUE)
public String middle(String message) {
// 会話を継続する Java コードがここに入る
}
  @WebMethod
@Conversation (Conversation.Phase.FINISH)
public String finish(String message ) {
// 会話を終了する Java コードがここに入る
}
}

weblogic.jws.Conversational

解説

対象 : クラス

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

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

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

このアノテーションの詳細および使用例については、「会話形式の Web サービスの作成」を参照してください。

属性

表 B-13 weblogic.jws.Conversational JWS アノテーション タグの属性

名前

解説

データ型

必須/省略可能

maxIdleTime

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

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

  • seconds

  • minutes

  • hours

  • days

  • years

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

@Conversational(maxIdleTime="10 minutes")

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

デフォルト値は 0 seconds

文字列

省略可能

maxAge

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

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

  • seconds

  • minutes

  • hours

  • days

  • years

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

@Conversational(maxAge="3 days")

デフォルト値は 1 day

文字列

省略可能

runAsStartUser

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

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

有効な値は、true および false。デフォルト値は true で、継続および終了フェーズは会話を開始したユーザによって実行される。

ブール

省略可能

singlePrincipal

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

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

有効な値は、true および false。デフォルト値は true で、会話を開始したユーザのみが会話を継続および終了できる。

ブール

省略可能

以下のサンプル スニペットでは、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.MessageBuffer

解説

対象 : メソッド

JWS のどのパブリック メソッドがバッファされるかを指定します。

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

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

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

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

このアノテーションの詳細および使用例については、「バッファ付き Web サービスの作成」を参照してください。

属性

表 B-14 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

文字列

省略可能

以下の例では、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 ファイルのクラスまたはメソッドにアタッチする場合に使用します。アタッチするポリシー ファイルが 1 つだけの場合は、@weblogic.jws.Policy を単独で使用できます。

このアノテーションの詳細と使用例については、「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 ファイルをまとめて適用します。

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

デフォルトでは、WS-Policy ファイルは要求 (着信) と応答 (発信) の両方の SOAP メッセージに適用されます。このデフォルトの動作は、direction 属性を使用して変更できます。

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

このアノテーションの詳細と使用例については、「Web サービスの信頼性のあるメッセージングの使用」および「メッセージレベルのセキュリティ (デジタル署名と暗号化) のコンフィグレーション」を参照してください。

属性

表 B-15 weblogic.jws.Policies JWS アノテーション タグの属性

名前

解説

データ型

必須/省略可能

uri

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

Web 上のポリシー ファイルの URL を指定するには、http: プレフィックスを使用する。

ポリシー ファイルが WebLogic Server の Web サービス アーカイブ ファイルまたは共有可能な J2EE ライブラリにパッケージ化されていることを指定する場合は、以下の例のように policy: プレフィックスを使用する。

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

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

ライブラリ内のポリシー ファイルのパブリッシュの詳細については、「共有 J2EE ライブラリおよびオプション パッケージの作成」を参照してください。

文字列

必須

direction

policy: を着信要求 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 サービス メッセージングを有効にする際の詳細については、「Web サービスの信頼性のあるメッセージングの使用」を参照してください。

属性

表 B-16 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

文字列

省略可能

以下のサンプル スニペットでは、メソッドレベルで信頼性のあるオペレーションのデフォルトの再試行回数と再試行間隔を変更する @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.ServiceClient

解説

対象 : フィールド

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

信頼性のあるメッセージング機能および非同期の要求と応答機能は、2 つの Web サービスの間でのみ使用します。つまり、たとえば、スタンドアロン クライアントからではなく、別の Web サービスからのみ信頼性のある Web サービス オペレーションを呼び出すことができます。信頼性のあるメッセージングの場合は、WS-ReliableMessaging 1.0 仕様を実装している任意の 2 つのアプリケーション サーバ間で機能します。非同期の要求と応答の場合は、2 つの WebLogic Server インスタンス間でのみ機能します。

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

@ServiceClient アノテーションの詳細および使用例については、「高度な JWS プログラミング : 非同期機能の実装」を参照してください。

属性

表 B-17 weblogic.jws.ServiceClient JWS アノテーション タグの属性

名前

解説

データ型

必須/省略可能

serviceName

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

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

文字列

必須

portName

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

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

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

文字列

省略可能

wsdlLocation

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

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

文字列

省略可能

endpointAddress

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

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

文字列

省略可能

以下の JWS ファイルの抜粋では、クライアント Web サービスで @ServiceClient アノテーションを使用し、呼び出される Web サービス (WSDL が http://localhost:7001/ReliableHelloWorld/ReliableHelloWorld?WSDL という URL 上にある ReliableHelloWorldService) の JAX-RPC スタブでフィールド (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.Transactional

解説

対象 : クラス、メソッド

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

注意 : @Transactional アノテーションは、EJB 実装の Web サービスのコンテキスト内でのみ有効です。そのため、このアノテーションは、javax.ejb.SessionBean を明示的に実装している JWS ファイル内でのみ指定できます。トランザクション内で実行されるステートレス セッション EJB の詳細については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「トランザクションの設計と管理のオプション」を参照してください。JWS ファイル内での EJB の明示的な実装については、「ステートレス セッション EJB を実装すべき場合」を参照してください。

属性

表 B-18 weblogic.jws.Transactional JWS アノテーション タグの属性

名前

解説

データ型

必須/省略可能

value

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

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

ブール

省略可能

以下のサンプル スニペットでは、@Transactional アノテーションを使って、Web サービスのオペレーションがトランザクションの一部として実行されるように指定する方法を示します。ここでは、JWS ファイル内の関連する部分のみを示します。

package examples.webservices.transactional;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.jws.WebService;
import weblogic.jws.Transactional;
import weblogic.ejbgen.Session;
@Session(
ejbName="TransactionEJB",
serviceEndpoint="examples.webservices.transactional.TransactionImplPortType")
@WebService(name="TransactionPortType", serviceName="TransactionService",
targetNamespace="http://example.org")
...
public class TransactionImpl implements SessionBean {
  @Transactional(value=true)
  public String sayHello(String message) {
System.out.println("sayHello:" + message);
return "Here is the message: '" + message + "'";
}
  // 標準の EJB メソッド。通常、メソッドをオーバーライドする必要はない。
  public void ejbCreate() {}
...
}

weblogic.jws.WLHttpTransport

解説

対象 : クラス

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

このアノテーションは、JWS ファイル内で一度だけ指定できます。また、このアノテーションを指定した場合、他の転送アノテーション (@WLHttpsTransport または @WLJmsTransport) を指定することはできません。

属性

表 B-19 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 になる。

文字列

省略可能

serviceUri

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

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

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

この属性のデフォルト値は JWS ファイルの名前。ただし、拡張子は付かない。たとえば、JWS ファイルが HelloWorldImpl.java の場合、その serviceUri のデフォルト値は HelloWorldImpl になる。

文字列

省略可能

portName

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

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

文字列

省略可能

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

weblogic.jws.WLHttpsTransport

解説

対象 : クラス

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

このアノテーションは、JWS ファイル内で一度だけ指定できます。また、このアノテーションを指定した場合、他の転送アノテーション (@WLHttpTransport または @WLJmsTransport) を指定することはできません。

属性

表 B-20 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 になる。

文字列

省略可能

serviceUri

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

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

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

この属性のデフォルト値は JWS ファイルの名前。ただし、拡張子は付かない。たとえば、JWS ファイルが HelloWorldImpl.java の場合、その serviceUri のデフォルト値は HelloWorldImpl になる。

文字列

省略可能

portName

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

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

文字列

省略可能

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

weblogic.jws.WLJmsTransport

解説

対象 : クラス

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

このアノテーションは、JWS ファイル内で一度だけ指定できます。また、このアノテーションを指定した場合、他の転送アノテーション (@WLHttpTransport または @WLHttpsTransport) を指定することはできません。

属性

表 B-21 weblogic.jws.WLJmsTransport JWS アノテーション タグの属性

名前

解説

データ型

必須/省略可能

contextPath

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

文字列

省略可能

serviceUri

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

文字列

省略可能

queue

JMS 転送用にコンフィグレーション済みの JMS キューの JNDI 名。JMS 転送の使用の詳細については、「接続プロトコルとしての JMS 転送の使用」を参照してください。

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

文字列

省略可能

portName

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

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

文字列

省略可能

以下の例では、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

各要素の説明は次のとおりです。

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

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

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

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

属性

表 B-22 weblogic.jws.WSDL JWS アノテーション タグの属性

名前

解説

データ型

必須/省略可能

exposed

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

有効な値は、true および false。デフォルト値は true で、WSDL はデフォルトで公開される

ブール

省略可能

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

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

weblogic.jws.security.RolesAllowed

説明

対象 : クラス、メソッド

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

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

この JWS アノテーションは、属性を持ちません。

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 サービスの呼び出しが許可されている実際のロールを参照する、ロール名のリストの指定に使用される JWS アノテーション。具体的には、@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 サービスを実際に実行するロールおよびユーザ ID を指定します。

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

属性

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

名前

説明

データ型

必須/省略可能

role

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

文字列

必須

mapToPrincipal

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

通常は Administration Console を使用して、指定されたプリンシパル (ユーザ) を有効な WebLogic Server ユーザとしてコンフィグレーション済みであることが前提となっている。詳細については、「ユーザの作成」を参照。

文字列

必須

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 サービスを呼び出す際、基本認証の一部としてユーザおよびパスワードを指定します。管理者は Administration Console を使用してユーザを有効な WebLogic Server ユーザとしてコンフィグレーション済みであることが前提となっています。詳細については、「ユーザの作成」を参照してください。

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

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

属性

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

名前

説明

データ型

必須/省略可能

role

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

文字列

必須

mapToPrincipals

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

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

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 サービスを呼び出すことができます。

属性

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

名前

説明

データ型

必須/省略可能

role

ロール参照の名前。

文字列

必須

link

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

文字列

必須

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 サービスの間にセキュア ソケット レイヤ (SSL) 接続を確立します。

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

属性

表 B-26 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 サービスに関連付けられたセキュリティ コンフィグレーションでは、ID の認証に X.509 証明書を使用するかどうか、パスワード ダイジェストを使用するかどうか、暗号化やデジタル署名にキーストアを使用するかどうかなどを指定します。

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

セキュリティ コンフィグレーションを指定した Web サービスを呼び出すことができるようにするには、あらかじめ Administration Console でセキュリティ コンフィグレーションを作成しておく必要があります。詳細については、「Web サービス セキュリティ コンフィグレーションの作成」を参照してください。メッセージレベルのセキュリティの概要については、「メッセージレベルのセキュリティ (デジタル署名と暗号化) のコンフィグレーション」を参照してください

属性

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

名前

解説

データ型

必須/省略可能

value

この Web サービスに関連付けられた Web サービス セキュリティ コンフィグレーションの名前を指定する。デフォルト コンフィグレーションは default_wss と呼ばれる。

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

文字列

必須

以下の例では、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.security.SecurityRoles (非推奨)

説明

対象 : クラス、メソッド

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

Web サービスのオペレーションにアクセスできるロールを指定します。

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

注意 : @SecurityRoles アノテーションは、EJB 実装の Web サービスのコンテキスト内でのみ有効です。そのため、このアノテーションは、javax.ejb.SessionBean を明示的に実装している JWS ファイル内でのみ指定できます。EJB へのアクセス保護の概念については、「エンタープライズ JavaBean (EJB) のセキュリティ対策」を参照してください。JWS ファイル内での EJB の明示的な実装については、「ステートレス セッション EJB を実装すべき場合」を参照してください。

属性

表 B-28 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(...
// Web サービス全体を呼び出すことができるロールを指定する
@SecurityRoles(rolesAllowed="Admnin")
public class SecurityRolesImpl implements SessionBean {
...

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

説明

対象 : クラス

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

呼び出された Web サービスが前提とする ID を指定します。

別の値を指定した場合を除き、Web サービスは、認証された呼び出し側の ID を前提とします。このアノテーションを使用すると、Web サービスが特定のロールで実行されるように設定を変更できます。ロールは、WebLogic Server のセキュリティ レルム内のユーザまたはグループに対応している必要があります。

注意 : @SecurityIdentity アノテーションは、EJB 実装の Web サービスのコンテキスト内でのみ有効です。そのため、このアノテーションは、javax.ejb.SessionBean を明示的に実装している JWS ファイル内でのみ指定できます。EJB へのアクセス保護の概念については、「エンタープライズ JavaBean (EJB) のセキュリティ対策」を参照してください。JWS ファイル内での EJB の明示的な実装については、「ステートレス セッション EJB を実装すべき場合」を参照してください。

属性

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

名前

説明

データ型

必須/省略可能

value

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

文字列

必須

以下の例では、呼び出された 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(...
// Web サービスが Admin ロールで実行されるように指定する
@SecurityIdentity( value="Admin")
public class SecurityRolesImpl implements SessionBean {
...

 

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