プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle JDeveloperによるアプリケーションの開発
12c (12.1.3)
E57556-02
  目次へ移動
目次

前
 
次
 

20 Webサービスの開発および保護

この章では、Webサービスの開発、デプロイ、テストおよび監視、ポリシーによるWebサービスの保護、Web Service Definition Language (WSDL)ファイルの管理を可能にするJDeveloperの仕組みについて説明します。Universal Description, Discovery, and Integration (UDDI)レジストリを使用してWebサービスを検出し、Webサービス・クライアントを作成する方法について説明します。

この章の内容は次のとおりです。

20.1 Webサービスの開発および保護について

Webサービスは、一連のメッセージ・プロトコルとプログラミング規格で構成され、オープン・スタンダードを使用してインターネット上でビジネス機能を公開します。Webサービスは、プログラムによってインターネット上でアクセスされ、レスポンスを戻す、再利用可能な独立したソフトウェア・コンポーネントです。

アプリケーションでWebサービスを使用する場合は、JDeveloperを使用して次のタスクを実行します。

  • Webサービスを開発および実行するためにJDeveloperを構成します。

  • 次のタスクを1つ以上実行してWebサービス・クライアントを作成します。

    • Universal Description, Discovery, and Integration (UDDI)レジストリでWebサービスを検索します。

    • 既存のWebサービスにアクセスし、これをアプリケーションに組み込むために、クライアントおよびプロキシ・クラスを作成します。

  • 次のタスクを1つ以上実行してWebサービスを作成します。

    • 基礎となるJava実装からWebサービスを作成します(ボトムアップ)。

    • WSDLからSimple Object Access Protocol (SOAP) Webサービスを作成します(トップダウン)。

  • SOAPサービスのWSDLファイルを管理します。

  • ポリシーを使用してWebサービスを保護します。

  • Webサービスをテストおよびデバッグします。

  • 統合WebLogic ServerまたはOracle WebLogic ServerにWebサービスをデプロイします。

  • Webサービスを監視、分析、デプロイします。

  • UDDIレジストリにWebサービスを公開します。

次の各項では、JDeveloperを使用したWebサービスの開発および保護について説明します。

20.1.1 JDeveloperを使用したJava EE Webサービスの開発

Oracle JDeveloperでは、表20-1に示す、Java EE Webサービスの開発および保護のためのWebサービス・テクノロジおよび標準をサポートしています。

表20-1 JDeveloperでサポートされているJava EE Webサービス・テクノロジおよび標準

Webサービス・テクノロジ Webサービス標準 説明

Simple Object Access Protocol

Java API for XML-Based Web services (JAX-WS) 2.2

SOAP Webサービスは、JAX-WSを使用してJavaクラスおよびEJBのリモート・インタフェースから作成できます。Webサービス作成ウィザードではデプロイメント・ファイルが作成されるため、Webサービスの作成後、最後のステップではこれをアプリケーション・サーバーにデプロイします。

また、JAX-WS Webサービスは、WSDLから始めてトップ・ダウンWebサービスとして作成できます。

WebLogic ServerのJAX-WS実装は、Glassfishコミュニティによって開発されたJAX-WSリファレンス実装(RI)から拡張されています(http://jax-ws.java.net/index.htmlを参照)。

詳細は、第20.4項「JAX-WS Webサービスおよびクライアントの作成」を参照してください。

Representational State Transfer (REST)

Java API for RESTful Webサービス(JAX-RS) 1.1

RESTは、SOAPなどの追加メッセージング・レイヤーなしで、標準化されたインタフェース(HTTPなど)を介してデータを送信する単純なインタフェースを記述するものです。

JAX-RSを使用して、JavaクラスからRESTに基づくWebサービス(「RESTful Webサービス」と呼ばれる)を開発できます。

WebLogic Serverでは、次のJAX-RSリファレンス実装(RI)をサポートします。

  • Jersey 1.18 (JAX-RS 1.1 RI): これはデフォルトの実装であり、http://jcp.org/en/jsr/summary?id=311で定義されているJSR-311 JAX-RS 1.1仕様の本番品質実装を提供します。

  • Jersey 2.5.1 (JAX-RS 2.0 RI): この実装は共有ライブラリとして用意されており、http://jcp.org/en/jsr/detail?id=339で定義されているJSR-339 JAX-RS 2.0仕様の本番品質実装を提供します。

Jersey 2.5.1 (JAX-RS 2.0 RI)共有ライブラリは、統合WebLogic Serverに自動デプロイされます。RESTfulサービスとクライアントをスタンドアロンのWebLogic Serverにデプロイする際に、共有ライブラリを手動で登録する必要があります。共有ライブラリの登録の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「Jersey 2.5.1 (JAX-RS 2.0リファレンス実装)の登録」を参照してください。

注意: OWSMポリシーは、Jersey 1.18 (JAX-RS 1.1 RI)のみを使用して構築されるRESTful Webサービスおよびクライアントにアタッチできます。このリリースでは、Jersey 2.5.1 (JAX-RS 2.0 RI)を使用して構築されるRESTful Webサービスおよびクライアントは、OWSMポリシーを使用して保護できません。Jersey 2.5.1 (JAX-RS 2.0 RI)を使用してRESTful Webサービスとクライアントを保護する場合の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「RESTful Webサービスおよびクライアントの保護」を参照してください。

詳細は、第20.5項「RESTful Webサービスおよびクライアントの作成」を参照してください。


SOAPテクノロジとRESTテクノロジのどちらか一方を選択する際に考慮するガイドラインは、『Oracle WebLogic Server WebLogic Webサービスの理解』のSOAPとRESTの使い分けに関する項を参照してください。

20.1.2 JDeveloperを使用したJava EE Webサービスの保護

JDeveloperを使用してJava EE Webサービスを保護するには、次の表に示したポリシー・タイプのいずれかをアタッチします。

表20-2 Java EE Webサービスを保護するためのポリシーのタイプ

ポリシーのタイプ 説明

Oracle Web Services Manager (OWSM)ポリシー

OWSMによって提供されるポリシー。OWSMポリシーおよび事前定義済ポリシーの詳細は、Oracle Web Services Managerの理解を参照してください。

OWSMセキュリティ・ポリシーは、Java EE Webサービスにのみアタッチできます。

OWSMポリシーは、Oracle Enterprise Manager Fusion Middleware Controlから管理します。詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』を参照してください。

WebLogic Webサービス・ポリシー

WebLogic Serverによって提供されるポリシー。WebLogic Webサービス・ポリシーは、JAX-WS Webサービスにのみアタッチできます。WebLogic Webサービス・ポリシーの詳細は、『Oracle WebLogic Server WebLogic Webサービスの保護』を参照してください。

WebLogic Webサービス・ポリシーは、WebLogic管理コンソールから管理します。


可能な場合、WebLogic Webサービス・ポリシーよりもOWSMポリシーを使用することをお薦めします。同じWebサービスで、OWSMポリシーとWebLogic Webサービス・ポリシーを混在して使用することはできません。

詳細は、次を参照してください。

20.1.3 Webサービスの検出および使用

既存のWebサービスをアプリケーションで使用するためのクライアントが簡単に作成できます。詳細は、次を参照してください。

また、JDeveloperにはUDDIブラウザが組み込まれており、社内のUDDIレジストリなどへの接続を定義できます。詳細は、第20.3項「UDDIレジストリのWebサービスの使用」を参照してください。

20.2 JDeveloperを使用したWebサービスの作成および使用

Webサービスについて理解を深める情報を提供し、JDeveloperを使用したWebサービスの作成、構成および使用方法を説明します。

20.2.1 プロキシ設定およびJDeveloperの使用方法

デフォルトでは、JDeveloperではインターネットへの接続時にプロキシは使用されません。JDeveloperからの接続で問題が発生した場合は、使用するプロキシ・サーバー設定の変更が必要になることがあります。

HTTPアナライザを使用する場合、アナライザ自身がプロキシであり、これにより監視されるトラフィックは、通常のプロキシ・サーバーのようにアナライザでルーティングされます。JDeveloperにプロキシを設定してある場合、アナライザでは、トラフィックが元のプロキシに届く前に、確実にアナライザを通過するようにします。


注意:

JDeveloperでは、NTLMプロキシ・サーバーはサポートされていません。

次の各項では、JDeveloperを使用してプロキシ設定を有効化および無効化する方法について説明します。

20.2.1.1 デフォルト・ブラウザのプロキシ設定の使用

デフォルト・ブラウザで構成されているプロキシ設定を使用すると便利な場合があります。

デフォルト・ブラウザのプロキシ設定を使用する手順は次のとおりです。

  1. 「ツール」→「プリファレンス」を選択し、「Webブラウザとプロキシ」を選択します。

    詳細を参照するには、「Webブラウザとプロキシ」ダイアログで[F1]または「ヘルプ」をクリックします。

  2. 「Webブラウザ」タブを選択して、リストから目的のデフォルト・ブラウザを選択します。

  3. 「プロキシ設定」タブを選択して、プロキシ設定を構成します。

  4. 「システムのデフォルト・プロキシ設定の使用」を選択します。

  5. 「OK」をクリックします。

20.2.1.2 カスタム・プロキシ設定の構成

カスタム・プロキシ設定を構成できます。これは、リストから特定のIPアドレスまたはホスト名を除外する必要がある場合に便利です。

たとえば、プロキシ・サーバーを経由してIPアドレスに接続し、マシンも同じプロキシ・サーバーを経由している場合は、Webプロキシ設定で、接続先のIPアドレスを除外していることを確認します。

カスタム・プロキシ設定を構成する手順は次のとおりです。

  1. 「ツール」→「プリファレンス」を選択し、「Webブラウザとプロキシ」を選択します。

    詳細を参照するには、「Webブラウザとプロキシ」ダイアログで[F1]または「ヘルプ」をクリックします。

  2. 「プロキシ設定」タブを選択して、プロキシ設定を構成します。

  3. 「手動プロキシ設定」タブを選択して、プロキシ・サーバーのホストおよびポート名を入力します。

  4. 「プロキシ使用なし」フィールドに、除外するホスト名またはIPアドレスをリストします。

  5. 「OK」をクリックします。

20.2.1.3 インターネットへのアクセス時のプロキシ・サーバーの使用の無効化

インターネットへのアクセス時のプロキシの使用を無効化できます。これはデフォルトの動作。

インターネットへのアクセス時のプロキシ・サーバーの使用を無効化する手順は次のとおりです。

  1. 「ツール」→「プリファレンス」を選択し、「Webブラウザとプロキシ」を選択します。

    詳細を参照するには、「Webブラウザとプロキシ」ダイアログで[F1]または「ヘルプ」をクリックします。

  2. 「プロキシ設定」タブを選択して、プロキシ設定を構成します。

  3. 「プロキシなし」を選択します。

  4. 「OK」をクリックします。

20.2.2 Webサービスのコンテキスト・ルートの設定方法

コンテキスト・ルート(コンテキスト・パスとも呼ばれる)は、生成されるWebサービスのWebサービス・エンドポイントの一部となります。このため、適切な値に設定することが重要です。

Webサービスのコンテキスト・ルートは、WebサービスURLのhost:port部分の後に使用される文字列です。たとえば、WebLogic WebサービスのデプロイされたWSDLがhttp://hostname:7001/financial/GetQuote?WSDLであるとします。

このセルフサービスのコンテキスト・パスは、financialです。

プロジェクト・レベルでは、統合WebLogic ServerにデプロイされているJava EE Webアプリケーションに割り当てるコンテキスト・ルートを設定できます。コンテキスト・ルートのデフォルト値は次のとおりです。

applicationname-projectname-context-root

Webサービスのコンテキスト・ルートを設定する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択し、「プロジェクト・プロパティ」ダイアログを開きます。

    詳細を参照するには、「プロジェクト・プロパティ」ダイアログで[F1]または「ヘルプ」をクリックします。

  2. 「Java EEアプリケーション」を選択します。

  3. 個人のプロジェクト設定と共通のプロジェクト設定のどちらを使用するかを選択します。

    • 個人のプロジェクト設定を使用するには、「カスタム設定を使用」を選択し、「設定のカスタマイズ」ボタンをクリックします。

    • 共通のプロジェクト設定を使用するには、「プロジェクト設定を使用」を選択します。

  4. 「Java EE Webコンテキスト・ルート」フィールドを更新して、統合WebLogic ServerでJava EE Webアプリケーションとしてプロジェクトのコンテンツを実行またはデプロイするときに、アプリケーションに割り当てるコンテキスト・ルートを定義します。

  5. 「OK」をクリックします。

20.2.3 Webサービスとともに使用する接続の構成方法

統合WebLogic Serverを使用してテストできる単純なWebサービスを開発できます。ただし、複雑なWebサービスの開発およびWebサービスのデプロイには、適切な接続が必要になります。

20.2.4 型マッピングの使用方法

Webサービスとの間で受け渡しが可能なオブジェクトは、XML型にシリアライズしたり、また元の型にデシリアライズできる必要があります。自動的に処理されるオブジェクトは、Javaプリミティブ型および特定のJava標準型です。自動的にシリアライズされないオブジェクトを使用してWebサービスを作成するには、独自のカスタム・シリアライザを記述します。

Webサービスとの間で受け渡しが可能なオブジェクトは、JavaBeanの規則に準拠しているオブジェクトです。JavaBeanは、Webサービスを目的として、次の制限に準拠しているJavaクラスです。

  • publicデフォルト(ゼロ引数)コンストラクタを含んでいること。

  • アクセッサとして関心のある属性をすべて表示する必要があること。

  • プロパティのアクセッサ(setMethod()getMethod())の順序が重要でないこと。

  • アクセッサは大/小文字混合で1文字目は小文字であること。たとえば、属性がnameの場合、アクセッサはgetNameおよびsetNameとなります。

詳細は、JavaBean仕様(http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138795.html)を参照してください。

Webサービスでは、各オブジェクトのプロパティはJava型の1つで、XMLスキーマの単純な型にマップされる必要があります。XMLスキーマ・データ型とそれに対応するJavaデータ型のリストについては、『Oracle WebLogic Server JAX-WS Webサービスの開発』のビルトイン・データ型のXMLからJavaへのマッピングに関する項を参照してください。また、サービス・メソッドによって、org.w3c.dom.Elementとして渡される単一のXML要素データを受け取り、戻すことができます。

JAX-WS Webサービスでは、Java Architecture for XML Binding (JAXB) (http://jcp.org/en/jsr/detail?id=222を参照)を使用して、すべてのデータ・バインディング・タスクを管理します。特に、JAXBでは、Javaメソッド・シグネチャとWSDLメッセージおよび操作がバインドされるため、ランタイム変換を自動的に処理しながらマッピングをカスタマイズできます。これにより、XMLに精通していなくても、Javaテクノロジに基づいてXMLデータおよび処理機能をアプリケーションに組み込むことができます。

JAXBバインディング言語を使用してカスタム・バインディング宣言を定義したり、JAXB注釈を指定してXMLとJava間のデータの変換を制御したりできます。

WebLogic Serverには、次の2つのデータ・バインディングおよびJAXBプロバイダが用意されています。

  • EclipseLink MOXy (このリリースのWebLogic Serverにおけるデフォルト)は、完全準拠のJAXB実装です。EclipseLink MOXyには、JAXBの標準機能のほかに、外部メタデータ・ファイルを使用して参照先のJavaソースを変更せずにJAXB注釈と同等のものを構成する機能や、XPathベースのマッピングなどの便利な拡張機能が用意されています。JAXB拡張機能は、サービス・エンドポイント・インタフェース(SEI)の注釈またはSEIで使用されるいずれかの値タイプで使用できます。JAXBをスタンドアロン・モードで使用しているユーザーもこれらの機能を利用できます。

    EclipseLink MOXyでは、次のような追加拡張機能が提供されます。

    • JPAエンティティからXMLへのマッピングのための拡張機能

    • 双方向のマッピング

    • 仮想プロパティ

    • メタデータからブートストラップし、メモリー内ドメイン・クラス(Dynamic MOXy)を生成する機能

    Webサービスでは、サーバー側でJavaからWSDLを生成する場合にのみEclipseLink MOXy拡張機能を利用できます。この場合、SEIと値タイプでEclipseLinkの拡張機能を使用できます。これらの拡張機能およびEclipseLink MOXyの詳細は、『The EclipseLink MOXy (JAXB) User's Guide』(http://wiki.eclipse.org/EclipseLink/UserGuide/MOXy)を参照してください。

    EclipseLink MOXyプロバイダを使用する場合、構成は必要ありません。

  • Glassfish RI JAXB(デフォルトのGlassfish JAXB実装)は、以前のリリースのWebLogic Serverではデフォルトで提供されるJAXBでした。Glassfish RI JAXBの固有機能は、EclipseLink MOXyでは機能しません。必要に応じて、サーバー・レベルまたはアプリケーション・レベルでGlassfish RI JAXBデータ・バインディングおよびJAXBプロバイダを有効化できます。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のGlassfish RI JAXBデータ・バインディングおよびJAXBプロバイダの使用に関する項を参照してください。

JAX-WS WebサービスでのJAXBの使用の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』の「JAXBデータ・バインディングの使用」を参照してください。

20.2.5 デプロイメント・プラットフォームの選択方法

プロジェクトでWebサービスを初めて作成するとこのダイアログが表示され、選択したバージョンがプロジェクトで作成するすべてのWebサービスに対して使用されます。

SOAP Webサービスの場合、既存のWSDLを右クリックして「Webサービスの作成」を選択した場合もこのダイアログが表示されます。次に、そのWSDLから新しいWebサービス・プロジェクトを作成することを選択します。

プロジェクトにWebサービスを初めて作成するときに、表20-3 (SOAP Webサービスの場合)および表20-4 (RESTful Webサービスの場合)に示すように、デプロイメント・プラットフォームを選択できます。選択するプラットフォームにより、ウィザードで使用可能なオプションや、デプロイメント用としてWAR/EARファイルに追加されるライブラリが決まります。

表20-3に、SOAP Webサービスに利用可能なデプロイメント・プラットフォームを示します。

表20-3 SOAP Webサービスのデプロイメント・プラットフォーム

デプロイメント・プラットフォーム 説明

Java EE 6 (JAX-WS注釈のサポート付き)

Java EE 1. 6の一部としてリリースされるJAX-WS WebサービスAPIを利用するWebサービスを生成します。このオプションでは、JAX-WS注釈仕様を使用したJava注釈により、WebLogic Serverへのデプロイがサポートされています。

Java EE 6 (JAX-WS RIのサポート付き)

JAX-WS参照実装をサポートする任意のコンテナをデプロイするためのJAX-WS Webサービスを生成します。JAX-WS参照実装の詳細は、http://jax-ws.java.net/index.htmlを参照してください。


表20-4に、RESTful Webサービスに利用可能なデプロイメント・プラットフォームを示します。

表20-4 RESTful Webサービスのデプロイメント・プラットフォーム

デプロイメント・プラットフォーム 説明

JAX-RS 1.0スタイル

Jersey 1.18 (JAX-RS 1.1 RI)と互換性のあるRESTful Webサービスを生成します。

JAX-RS 2.0スタイル

Jersey 2.5.1 (JAX-RS 2.0 RI)と互換性のあるRESTful Webサービスを生成します。

Jersey 2.5.1 (JAX-RS 2.0 RI)共有ライブラリは、統合WebLogic Serverに自動デプロイされます。RESTfulサービスとクライアントをスタンドアロンのWebLogic Serverにデプロイする際に、共有ライブラリを手動で登録する必要があります。共有ライブラリの登録の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「Jersey 2.5.1 (JAX-RS 2.0リファレンス実装)の登録」を参照してください。

注意: OWSMポリシーは、Jersey 1.18 (JAX-RS 1.1 RI)を使用して構築されるRESTful Webサービスとクライアントにアタッチできます。このリリースでは、Jersey 2.5.1 (JAX-RS 2.0 RI)を使用して構築されるRESTful Webサービスとクライアントは、OWSMポリシーを使用して保護できません。Jersey 2.5.1 (JAX-RS 2.0 RI)を使用してRESTful Webサービスとクライアントを保護する場合の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「RESTful Webサービスおよびクライアントの保護」を参照してください。


20.2.6 Webサービスのコード・インサイトの使用方法

Javaクラスへの注釈の入力時に、Webサービスのコード・インサイトによって注釈が補完されます。このツールは、XMLエディタでWSDLドキュメントに対しても使用できます(「ソース」タブでの入力時)。

コード・インサイトが反応する速度を構成できます。JDeveloperで「コード・インサイト」ページにアクセスするには、「ツール」→「プリファレンス」→「コード・エディタ」→「コード・インサイト」を選択します。

ソース・エディタで注釈を追加してJavaクラスからJAX-WS Webサービスを作成する場合、コード・インサイト機能であるクイック修正とコード・アシストを使用すると便利です。

たとえば、@WebService注釈を手動で追加してJavaクラスからWebサービスを作成する場合、注釈の下に波線が表示されます。監査修正アイコンをクリックし、「Webサービス用のプロジェクトの構成」を選択します。

「デプロイメント・プラットフォームの選択」ダイアログで、サービスに対して次のいずれかのJAX-WSプラットフォームを選択します。

  • Java EE 6 (JAX-WS注釈のサポート付き)。この場合、次が追加されます。

    • クラスに対するimport javax.jws.WebService;

    • プロジェクトに対するweb.xmlファイル

  • Java EE 6 (JAX-WS RIのサポート付き)。この場合、次が追加されます。

    • クラスに対するimport javax.jws.WebService;

    • プロジェクトに対するsun-jaxws.xmlファイルおよびweb.xmlファイル

他の例は、次のとおりです。

  • ポリシー注釈をJAX-WS Webサービスに追加し、JDeveloperを使用して必要なポリシーを完了できます。たとえば、@Polを入力し、[Alt]キーを押しながら[Enter]キーを押すと、単一のポリシーに@Policyを使用するか、複数のポリシーに@Policiesを使用するかを選択できます。適切なインポート文もクラスに追加されます。

  • ソース・エディタでWSDL文書を使用している場合、コード補完を使用すると、スキーマ要素を入力しやすくなります。たとえば、<と入力して1秒待つと、ポップアップが表示され、必要なエントリを選択できます。

  • WSDLとWebサービスのソース・ファイルが同期しなくなった場合、Webサービスをソースから再生成できます。

  • JavaクラスでJavaクラスの名前を変更する場合、監査修正アイコンをクリックし、不一致を調整する方法を選択します。

20.3 UDDIレジストリのWebサービスの使用

Universal Description, Discovery and Integration (UDDI)は、Webサービスを支える標準およびプロトコルの1つです。これによって、Webサービスに関する情報を公開および検出するための共通の標準が提供されます。また、UDDIブラウザが付属しており、指定した検索基準を使用してUDDIレジストリを検索し、WSDLにより記述されたWebサービスを検出できます。UDDIの仕様を含む詳細は、UDDI OASIS標準(http://uddi.xml.org/)を参照してください。

次の項では、UDDIレジストリのWebサービスの使用方法について説明します。

20.3.1 UDDIレジストリ接続の定義方法

UDDIレジストリへの接続を定義することで、たとえば、社内のUDDIレジストリを参照できます。また、定義したUDDIレジストリ接続はすべて、どのワークスペースまたはプロジェクトからでもアクセスできます。

UDDIの仕様を含む詳細は、UDDI OASIS標準(http://uddi.xml.org/)を参照してください。

後続の項では、UDDIレジストリ接続の定義方法について説明します。

20.3.1.1 UDDIレジストリ接続の作成

パブリックまたはプライベート(社内)であるUDDIレジストリに対する新規接続を作成できます。UDDIレジストリ接続は、「リソース」ウィンドウの「接続」パネルにリストされます。

UDDIレジストリ接続を作成する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、プロジェクトを選択します。

  2. 「ファイル」→「新規」→「ギャラリから」を選択して「新規ギャラリ」を開きます。

  3. 「カテゴリ」ツリーで、「ビジネス層」を開いて「Webサービス」を選択します。

  4. 「項目」リストで「UDDIレジストリ接続」を選択し、「OK」をクリックして、「UDDIレジストリ接続の作成」ウィザードを起動します。

    詳細を参照するには、「UDDIレジストリ接続の作成」ウィザードで[F1]を押すか、「ヘルプ」をクリックします。

20.3.1.2 UDDIレジストリ接続の編集

既存のUDDIレジストリ接続を編集できます。たとえば、接続の名前を変更したり、照会エンドポイントのURLを変更します。

UDDIレジストリ接続を編集する手順は次のとおりです。

  1. メイン・メニューで、「ウィンドウ」→「リソース」を選択します。デフォルトでは、「リソース」ウィンドウは「JDeveloper」ウィンドウの右側に表示されます。

  2. 「リソース」ウィンドウの「IDE接続」で、「UDDIレジストリ」を開きます。

  3. 編集するUDDIレジストリ接続のポップアップ・メニューから「プロパティ」を選択します。

    「UDDIレジストリ接続の編集」ウィザードが起動します。

    詳細を参照するには、「UDDIレジストリ接続の編集」ウィザードで[F1]を押すか、「ヘルプ」をクリックします。

20.3.1.3 UDDIレジストリ接続のビューの変更

WebサービスがUDDIレジストリにリストされる順序は、カテゴリ・ビューからビジネス・ビューへ、またはビジネス・ビューからカテゴリ・ビューからへ変更できます。詳細は、第20.3.2項「UDDIレジストリ接続のビューの選択に関する必知事項」を参照してください。

UDDIレジストリ接続のビューを変更する手順は次のとおりです。

  1. メイン・メニューで、「ウィンドウ」→「リソース」を選択します。デフォルトでは、「リソース」ウィンドウは「JDeveloper」ウィンドウの右側に表示されます。

  2. 「リソース」ウィンドウの「IDE接続」で、「UDDIレジストリ」を開きます。

  3. 編集するUDDIレジストリ接続のポップアップ・メニューから「レンダー・ビジネス・パースペクティブ」または「レンダー・カテゴリ・パースペクティブ」を選択します。

20.3.1.4 UDDIレジストリ接続のリフレッシュ

接続の下に格納されている情報を最新にするために、UDDIレジストリ接続をリフレッシュできます。

UDDIレジストリ接続をリフレッシュする手順は次のとおりです。

  1. メイン・メニューで、「ウィンドウ」→「リソース」を選択します。デフォルトでは、「リソース」ウィンドウは「JDeveloper」ウィンドウの右側に表示されます。

  2. 「リソース」ウィンドウの「IDE接続」で、「UDDIレジストリ」を開きます。

  3. リフレッシュするUDDIレジストリ接続のポップアップ・メニューから「リフレッシュ」を選択します。

20.3.1.5 UDDIレジストリ接続の削除

不要になったUDDIレジストリ接続は、「リソース」ウィンドウから削除できます。

UDDIレジストリ接続を削除する手順は次のとおりです。

  1. メイン・メニューで、「ウィンドウ」→「リソース」を選択します。デフォルトでは、「リソース」ウィンドウは「JDeveloper」ウィンドウの右側に表示されます。

  2. 「リソース」ウィンドウの「IDE接続」で、「UDDIレジストリ」を開きます。

  3. 削除するUDDIレジストリ接続のポップアップ・メニューから「削除」を選択します。

  4. 接続の削除を確認するメッセージが表示されます。「はい」をクリックします。

20.3.2 UDDIレジストリ接続のビューの選択に関する必知事項

第20.3.1項「UDDIレジストリ接続の定義方法」に示すように、接続を作成する場合、レジストリのWebサービスをビジネス・ビューとカテゴリ・ビューのどちらに表示するか尋ねられます。選択するビューにより、レジストリのサービスを検索する方法が決まります。

20.3.2.1 ビジネス・ビューの選択

UDDIレジストリには、Webサービスの情報を分類するための次の4種類のデータ構造が含まれます。

  • ビジネス・エンティティ: Webサービスを提供するビジネスの情報を含む最上位レベルのデータ構造を定義します。Webサービスが見つかると、「リソース」ウィンドウでビジネスがUDDIブラウザに追加されます。

  • ビジネス・サービス: サービス・ファミリの説明的な情報が含まれます。名前や簡単な説明およびカテゴリ情報があります。

  • バインディング・テンプレート: Webサービス・エントリ・ポイント、およびインタフェース仕様への参照に関する情報が含まれます。

  • tModel: Webサービスの技術仕様を表します。Webサービスの検索ウィザードでWebサービスが見つかると、そのtModelと互換性を持つWebサービスが他にも表示されます。

「ビジネス・ビュー」を選択すると、サービスは「ビジネス・エンティティ」および「ビジネス・サービス」の下にリストされます。

20.3.2.2 カテゴリ・ビューの選択

「カテゴリ・ビュー」を選択すると、次の1つ以上のカテゴリを使用してWebサービスを検索できます。

  • ISO 3166: 国際標準化機構(ISO) 3166標準コードを使用して場所で検索します。

  • NAICS: 北米産業分類システム(NAICS: North American Industry Classification System)を使用して産業のタイプを指定します。

  • SIC: 標準産業分類(SIC)を使用して産業のタイプを指定します。

  • UDDIタイプ: UDDIタイプを使用して検索します。

  • UDDI WSDLタイプ: UDDI WSDLタイプを使用して検索します。

  • UNSPSC: United Nations Standard Products and Services Code (UNSPC)を使用してサービスのタイプで検索します。

名前で検索するときは、名前全体または名前の一部を入力でき、ワイルドカードも使用できます。名前が検索基準と一致するtModelが結果として返されます。同じtModelを含むWebサービスが複数ある場合は、それらがウィザードに表示されるので、要件に最も適したサービスを選択できます。

20.3.3 UDDIレジストリのWebサービスの検索方法

Webサービスの「リソース」ウィンドウでUDDIレジストリ接続を検索できます。


注意:

トップ・ダウンWebサービスを作成する場合、Webサービスの検索ウィザードを使用して、「WSDLからJava Webサービスを作成」ウィザードからUDDIレジストリ接続を検索できます。

UDDIレジストリのWebサービスを検索するには、次のようにします。

  1. 必要に応じて、UDDIレジストリ接続を作成します。詳細は、第20.3.1.1項「UDDIレジストリ接続の作成」を参照してください。

  2. 「リソース」ウィンドウで、Webサービスを検索します。詳細は、第3.7項「「リソース」ウィンドウの操作」を参照してください。

20.3.4 UDDIレジストリのWebサービスを使用するためのプロキシの生成方法

「リソース」ウィンドウでUDDIレジストリ接続のWebサービスに対するプロキシを作成できます。


注意:

Webサービスに対するプロキシを作成できるのは、サービスにWSDLリンクが使用される場合のみです。これを確認するには、Webサービス・ポートを開き、レポートの「tModelインスタンス」セクションの「サマリーの説明」がwsdl linkであることを確認します。

UDDIレジストリで検索したWebサービスを使用するためのプロキシを生成する手順は次のとおりです。

  1. 「リソース」ウィンドウを開きます。

    メイン・メニューで、「ウィンドウ」→「リソース」を選択します。デフォルトでは、「リソース」ウィンドウは「JDeveloper」ウィンドウの右側に表示されます。

  2. 目的のWebサービスへ移動するか、これを検索します。

  3. サービス・エンドポイント(ポート)に移動します。

  4. サービスを右クリックし、「Webサービス・プロキシの生成」を選択して「Webサービス・プロキシ」ウィザードを起動します。

    詳細は、随時[F1]を押すか、ウィザード内で「ヘルプ」をクリックしてください。

20.3.5 UDDIレジストリのWebサービスのレポートの表示方法

UDDIレジストリのWebサービスのレポートを表示できます。

UDDIレジストリのWebサービスのレポートを表示する手順は次のとおりです。

  1. 「リソース」ウィンドウを開きます。

    メイン・メニューで、「ウィンドウ」→「リソース」を選択します。デフォルトでは、「リソース」ウィンドウは「JDeveloper」ウィンドウの右側に表示されます。

  2. 目的のWebサービスへ移動するか、これを検索します。

  3. サービスを右クリックして「レポートの表示」を選択します。

    ソース・エディタにWebサービスのレポートが表示されます。

20.3.6 UDDIレジストリへのWebサービスの公開方法

「アプリケーション・サーバー」ウィンドウでレジストリへの接続を介してUDDIレジストリにWebサービスを公開できます。UDDIレジストリにサービスを公開する前に、リソース・カタログにレジストリへの接続がすでに存在する必要があります。詳細は、第20.3.1.1項「UDDIレジストリ接続の作成」を参照してください。

UDDIレジストリにWebサービスを公開するには、次のようにします。

  1. Oracle WebLogic ServerにWebサービスをデプロイします。


    注意:

    Webサービスを統合WebLogic Serverにデプロイする場合、公開先のUDDIレジストリは統合WebLogic Serverに対してローカルである必要があります。

  2. 「アプリケーション・サーバー」ウィンドウで、アプリケーション・サーバー・ノードを開きます。

  3. Webサービス・ノードを開き、公開するWebサービスのノード(WSDLを表すノード)を検索します。

  4. WSDLノードを右クリックし、「UDDIにWSDLを公開」を選択して「WSDLをUDDIレジストリに公開します」ダイアログを起動します。

    詳細を参照するには、「WSDLをUDDIレジストリに公開します」ダイアログで[F1]を押すか、「ヘルプ」をクリックします。

20.4 JAX-WS Webサービスおよびクライアントの作成

JDeveloperを使用してJAX-WS Webサービスおよびクライアントを作成するには、次のいずれかを実行します。

20.4.1 JAX-WS Webサービスの作成方法(ボトムアップ)

Webサービスは、トップ・ダウンとボトム・アップという2つの開発方式を使用して作成できます。ボトム・アップ開発とは、基礎となるJava実装からSOAPを使用してWebサービスを開発するプロセスを表します。

次の各項では、様々なタイプのWebサービスをボトム・アップ方式で生成する方法について説明します。

次を参照してください。

20.4.1.1 Java Webサービスの作成

Webサービスは、次のものから作成できます。

  • Javaクラス

  • EJBのリモート・インタフェース

Webサービス作成公開ウィザードによってデプロイメント・ファイルは自動的に作成されるため、Webサービスの作成が済んだら、後はこれをデプロイするだけです。

作業を始める前に、次のようにします。

コンテキスト・ルートをまだ設定していない場合は、Webサービスの適切なコンテキスト・ルートを設定します。詳細は、第20.2.2項「Webサービスのコンテキスト・ルートの設定方法」を参照してください。

Java Webサービスを作成する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、Webサービスの作成元のJavaクラスまたはEJBが含まれるプロジェクトを選択します。

  2. 「ファイル」→「新規」→「ギャラリから」を選択して「新規ギャラリ」を開きます。

  3. 「カテゴリ」リストで「ビジネス層」を開き、「Webサービス」を選択します。

  4. 「項目」リストで「Java Webサービス」を選択し、「OK」をクリックして、「Java Webサービスの作成」ウィザードを起動します。

    ウィザードの操作の詳細なヘルプを参照するには、ウィザード内で[F1]を押すか「ヘルプ」をクリックします。

また、Webサービスの作成元として使用するJavaクラスを右クリックし、「Webサービスの作成」を選択して、「Java Webサービスの作成」ウィザードを起動することもできます。


注意:

「デプロイメント・プラットフォームの選択」ページが表示されるのは、プロジェクトでWebサービスが初めて作成される場合のみです。その後、同じプロジェクトで追加されるWebサービスにはすべて同じバージョンが使用されます。詳細は、第20.2.5項「デプロイメント・プラットフォームの選択方法」を参照してください。

「Java Webサービスの作成」ウィザードを使用するときに、存在しないJavaクラスのクラス名を入力すると、ウィザードには、Webサービスの実装クラスとして使用するString helloWorld(String)メソッドが1つ含まれたデフォルトのJavaクラスを生成するためのオプションが表示されます。デフォルトのJavaクラスの生成を拒否すると、有効なクラス名の選択を求めるメッセージが表示されます。


20.4.1.2 Webサービス注釈の使用

JSR-181仕様はWebサービスのメタデータを規定したもので、これにより、注釈を宣言的に使用して簡単にWebサービスを作成および管理することが可能になります。注釈は、メソッドおよびクラスでWebサービスのエンドポイントとしてメソッドを公開するために使用します。

注釈は、手動でクラスに追加するか、JDeveloperを使用してWebサービスの作成時にクラスに追加するか、または「Webサービスの編集」ダイアログを使用してWebサービスの編集時に追加できます。

詳細は、次のリファレンスを参照してください。


注意:

「Webサービスの編集」ダイアログを使用して注釈を削除すると、手動で入力した注釈もすべて削除されます。

Webサービス注釈を使用する手順は次のとおりです。

  1. ソース・エディタでJavaクラスを開きます。

  2. 注釈を追加する行で、@とタイプして2、3秒待機します。

    「コード・インサイト」に可能な値が表示されます。詳細は、第20.2.6項「Webサービスのコード・インサイトの使用方法」を参照してください。

20.4.1.3 「プロパティ」ウィンドウの使用

「プロパティ」ウィンドウを使用して、Webサービス・プロジェクトに@WebService注釈とサポート・ファイルを追加できます。

「プロパティ」ウィンドウでJAX-WS Webサービスを作成する手順は次のとおりです。

  1. ソース・エディタでWebサービス・クラスを開いた状態で、「ウィンドウ」→「プロパティ」を選択して「プロパティ」ウィンドウを開きます。

    詳細を参照するには、「プロパティ」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  2. publicクラス内にカーソルを置いた状態で、「プロパティ」ウィンドウのJAX-WSノードにナビゲートします。

  3. 「WebサービスBeanクラス」を選択します。

    デプロイメント計画プラットフォームの選択ダイアログ・ボックスが表示されます。デプロイメント・プラットフォームの選択の詳細は、第20.2.5項「デプロイメント・プラットフォームの選択方法」を参照してください。

  4. デプロイメント・プラットフォームを選択し、「OK」をクリックします。

    javax.jws.WebService注釈がインポートされてWebサービスのpublicクラスに追加されます。また、必要なデプロイメント・ファイル(web.xmlなど)がプロジェクトに追加されます。

20.4.1.4 TopLinkデータベースWebサービス・プロバイダの作成

「TopLink DB Webサービス・プロバイダの作成」ウィザードを使用すると、TopLinkデータベース用のJAX-WS Webサービス・プロバイダを構築し、次のいずれかタスクを実行できます。

  • ストアド・プロシージャおよびファンクションへのアクセス

  • SQL問合せの実行

  • 表に対するCRUD操作の実行

選択したサービスのタイプに基づいて、Oracle WebLogic Serverなどのアプリケーション・サーバーにデプロイできるWebサービス・プロバイダおよびWSDLドキュメントがウィザードによって生成されます。TopLink Webサービス・プロバイダのデプロイは、他のJ2EE Webアプリケーションのデプロイと似ています。詳細は、第20.8項「Webサービスのデプロイ」を参照してください。

次の点に注意する必要があります。

  • JAX-WS Webサービス・プロバイダが生成されます。

  • TopLink Webサービス・プロバイダを編集する場合、データベース接続が存在することを確認してください。存在しない場合、エラー・メッセージが表示されます。データベース接続が削除されている場合は新規に作成し、削除前と同じ名前を付けます。

プロジェクトからTopLink DB Webサービス・プロバイダを作成する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、プロジェクトを選択します。

  2. 「ファイル」→「新規」→「ギャラリから」を選択して「新規ギャラリ」を開きます。

  3. 「カテゴリ」リストで「ビジネス層」を開き、「Webサービス」を選択します。「項目」リストで「TopLink DB Webサービス・プロバイダ」をダブルクリックして、TopLink Webサービス・プロバイダの作成ウィザードを起動します。

    ウィザードの操作の詳細なヘルプを参照するには、ウィザード内で[F1]を押すか「ヘルプ」をクリックします。

20.4.1.5 ソースからのWebサービスの再生成

Webサービスは再生成が必要な場合があります。たとえば、サービスの最初の生成元のソースが変更された場合などです。


注意:

Webサービスを再生成すると、最後に生成されてからWSDLに対して行った変更がすべて破棄されます。

Webサービス・クライアントを再生成した後、Webサービスに対してクライアントを再生成する必要がある場合があります。そうしない場合、コンパイル・エラー(クライアントがWebサービスと同じプロジェクトにある場合)や、ランタイム・エラー(クライアントがWebサービスと別のプロジェクトにある場合)が発生する場合があります。

注釈を使用していないときに基礎となるクラスのメソッドの名前を変更する場合、サービスを再生成すると、メソッドが選択されていないというエラー・メッセージが表示されます。これは、メソッドがネームスペースにより追跡され、ネームスペースを変更するとJDeveloperで再生成の対象を決定できなくなるためです。このエラーを修正するには、Webサービス・コンテナをダブルクリックしてWebサービス・エディタを開き、「メソッド」ページに移動してWebサービスの基にするメソッドを選択する必要があります。

ソースからWebサービスを再生成するには、次のようにします。

  1. 「アプリケーション」ウィンドウで、再生成するWebサービス・コンテナを右クリックします。

  2. ポップアップ・メニューから「ソースからWebサービスを再生成」を選択します。

    サービスが自動的に再生成され、最後にサービスを生成した後にWSDLに加えた変更はすべて失われます。

20.4.1.6 ハンドラの使用

JDeveloperでは、ハンドラ・クラスを指定してWebサービス・メッセージで編集できます。ハンドラは、初期設定済パラメータ、SOAPロールまたはSOAPヘッダーを使用できます。SOAPハンドラの作成の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』の「SOAPメッセージ・ハンドラの作成および使用」を参照してください。

ハンドラを定義するには:

  1. Webサービスを作成します。詳細は、第20.4.1.1項「Java Webサービスの作成」を参照してください。

    あるいは、Webサービス・エディタを開きます。詳細は、第20.4.9項「JAX-WS Webサービスの編集方法」を参照してください。

  2. 「ハンドラ詳細」ページで、使用する値を入力します。

    詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

20.4.1.7 オーバーロード・メソッドの処理

Webサービスの基として使用するJavaクラスにオーバーロード・メソッドが含まれている場合、JDeveloperではそのメソッドが自動処理されます。

JAX-WS Webサービスの場合、@WebMethod注釈を使用してオーバーロード・メソッドの名前を変更できます。次に例を示します。

public class SimpleImpl {
   @WebMethod(operationName="sayHelloOperation")
   public String sayHello(String message) {
      System.out.println("sayHello:" + message);
      return "Here is the message: '" + message + "'";
   }
...
}

この例では、SimpleImpl JWSファイルのsayHello()メソッドがWebサービスのパブリック操作として公開されています。ただし、operationName属性は、WSDLファイル内の操作のパブリック名がsayHelloOperationであることを指定しています。

@WebMethodの詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のパブリック操作としてのJWSメソッドの公開の指定(@WebMethodおよび@OneWay注釈)に関する項を参照してください。

20.4.2 WSDLからのJAX-WS Webサービスの作成方法(トップダウン)

JDeveloperでは、トップ・ダウンWebサービスを開発(つまり、WSDLから開始)できます。JDeveloperにより、サービス実装とそのデプロイメント・ディスクリプタが生成されます。ファイル・システム内でWSDLを参照するか、「リソース」ウィンドウのUDDIレジストリ接続でWebサービスを検索します。

WSDLからJAX-WS Webサービスを作成する(トップダウン)手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、Webサービスを作成するプロジェクトを選択します。

  2. 「ファイル」→「新規」→「ギャラリから」を選択して「新規ギャラリ」を開きます。

  3. 「カテゴリ」リストで「ビジネス層」を開き、「Webサービス」を選択します。「項目」リストで「WSDLからJava Webサービス」をダブルクリックして、「WSDLからJava Webサービスを作成」ウィザードを起動します。

    ウィザードの操作の詳細なヘルプを参照するには、ウィザード内で[F1]を押すか「ヘルプ」をクリックします。

    JAX-WS Webサービスが作成され、Java実装クラスがエディタで自動的に開かれます。


    注意:

    既存のWSDLを右クリックし、ポップアップ・メニューから「Webサービスの作成」を選択して、WSDLからWebサービスを作成することもできます。また、WSDLから新しいWebサービス・プロジェクトを作成するオプションもあります。

20.4.3 JAX-WS Webサービス・クライアントの作成方法

JDeveloperでは、「Webサービス・クライアントおよびプロキシの作成」ウィザードを使用してWebサービスにアクセスするためのJAX-WSクライアントおよびプロキシ・クラスを作成することにより、アプリケーションでのWebサービスの使用が容易になります。このウィザードは、Webサービスを検索または作成するときに起動できます。または直接ウィザードを起動して、WebサービスのURLを入力したり「Webサービスの検索」ウィザードを使用してUDDIレジストリ内のWebサービスを検索することもできます。

RPCまたはドキュメント・スタイルのWebサービスについては、適切なタイプのプロキシが自動的に生成されます。


注意:

JAX-WS Webサービスは、RPCスタイルをサポートしていません。

詳細は、次の資料を参照してください。

  • Webサービス・クライアントの開発の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』の「基本的なJAX-WS Webサービス・クライアントの開発」を参照してください。

  • Webサービスおよびクライアントの管理の詳細は、Webサービスの管理を参照してください。

次の各項では、JAX-WS Webサービス・クライアントを作成および使用する方法について説明します。

Webサービス・クライアントの作成に使用するWSDLの表示および管理方法を説明している次の各項も参照してください。

20.4.3.1 クライアントおよびプロキシ・クラスの作成

JDeveloperを使用して、Webサービスにアクセスしてそのメソッドをアプリケーションで呼び出すために、クライアントおよびプロキシ・クラスを自動的に作成します。ウィザードを使用して、必要に応じて、非同期メソッドの生成、ポリシーのアタッチおよびSOAPハンドラの定義を行うこともできます。

「Webサービス・クライアントおよびプロキシの作成」ウィザードを使用して、Webサービスにアクセスするためのクライアントおよびプロキシ・クラスを作成できます。公開されているポートごとに新規サービス・クラス(JAX-WS)およびサービス・インタフェースが生成され、これらが「アプリケーション」ウィンドウにリストされます。生成されたクライアント・ファイルport-nameClient.javaはソース・エディタで開かれます。生成後は、アプリケーションでメソッドを呼び出すことができます。


注意:

場合によっては、インターネット上でアクセスするWebサービス用として作成したか、UDDIレジストリを使用して作成したWebサービス・クライアントを実行すると、エラーが発生する可能性があります。Webサービス標準は常に進化しているため、検索したWebサービスが最新の標準に準拠していない場合や、これらが準拠する標準が、クライアントが実行されているサーバーでサポートされている標準と互換性がない場合があります。JDeveloperで作成したWebサービス・クライアントによってエラーが返された場合は、エラー・メッセージを確認し、同じサービスを提供するがサーバーと互換性があり問題なく動作する別のWebサービスに対してクライアントを作成することを検討してください。

「Webサービス・クライアントおよびプロキシの作成」ウィザードにアクセスするには、次のいずれかの方法を使用します。ウィザードの操作のヘルプを参照するには、ウィザード内で[F1]を押すか「ヘルプ」をクリックします。

20.4.3.1.1 Webサービスにアクセスするためのクライアントおよびプロキシ・クラスの作成

JDeveloperの外部で定義されているWebサービスのクライアントおよびプロキシ・クラスは、Webサービス・クライアント・プロキシの作成ウィザードを起動してそのWebサービスのWSDLを指定することで生成できます。

Webサービスにアクセスするためのクライアントおよびプロキシ・クラスを作成する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、使用するプロジェクトを選択します。

  2. 「ファイル」→「新規」→「ギャラリから」を選択して「新規ギャラリ」を開きます。

  3. 「カテゴリ」リストで、「Webサービス」を選択します。

  4. 「項目」リストで「Webサービス・クライアントおよびプロキシ」をダブルクリックし、「Webサービス・クライアントおよびプロキシの作成」ウィザードを起動します。

    詳細を参照するには、「Webサービス・クライアントおよびプロキシの作成」ウィザードで[F1]を押すか、「ヘルプ」をクリックします。

20.4.3.1.2 JDeveloperで定義されたWebサービスにアクセスするためのクライアントおよびプロキシ・クラスの作成

現在JDeveloperで定義されているWebサービスのクライアントおよびプロキシ・クラスは、「アプリケーション」ウィンドウで生成できます。

JDeveloperで定義されたWebサービスにアクセスするためのクライアントおよびプロキシ・クラスを作成するには、次のようにします。

「アプリケーション」ウィンドウでWebサービス・コンテナを右クリックし、「Webサービス注釈のクライアントの作成」を選択します。

「Webサービス・クライアントおよびプロキシの作成」ウィザードが開き、選択したWebサービス・プロジェクトが移入されます。


注意:

JavaBeanパラメータを使用するEJB Webサービスのクライアントおよびプロキシ・クラスを作成する場合は、JavaBeanにjava.io.Serializableインタフェースを実装する必要があります。

20.4.3.2 JAX-WS Webサービス・クライアント・アプリケーションの開発

JDeveloperでは、Webサービスに対するプロキシを定義する多数のファイルが生成されます。生成されたファイルを使用して、次のタイプのWebサービス・クライアント・アプリケーションを開発できます。

  • スタンドアロン・クライアント・アプリケーション

  • Java Standard Edition (SE)クライアント・アプリケーション

  • Oracle WebLogic ServerにデプロイされるJava EEコンポーネント


注意:

次の手順以外にも、Webサービス・インジェクション(@WebServiceRefメソッドを使用)を使用して、Webサービスの参照を定義し、Webサービス・クライアントでインジェクション・ターゲットを識別できます。詳細は、第20.4.3.3項「@WebServiceRef注釈を使用したWebサービスの参照」を参照してください。

20.4.3.2.1 スタンドアロン・クライアント・アプリケーションの開発

スタンドアロン・クライアント・アプリケーションは、その最もシンプルな形式において、javaコマンドを使用して呼び出すMain publicクラスを持つJavaプログラムです。これは、WebLogic Serverからは完全に独立して動作します。

スタンドアロン・クライアント・アプリケーションを開発する手順は次のとおりです。

  1. port_nameClient.javaと呼ばれるクライアント・プロキシ・クラスをソース・エディタで開きます。

    このファイルは、Webサービス・クライアント・プロキシを最初に作成するときに自動的に開きます。クラスを再度開くには、クライアント・プロキシ・コンテナを右クリックし、「クライアント・クラスに移動」を選択するか、「アプリケーション」ウィンドウでそのままファイルをダブルクリックします。

  2. // Add your code to call the desired methodsというコメントを見つけて、Webサービスの呼出しに適したコードを追加します。

  3. クライアントを実行します。

20.4.3.2.2 Java Standard Edition (SE)クライアント・アプリケーションの開発

生成されたプロキシ・クラスをJava Standard Edition (SE)アプリケーションの一部として組み込み、これらを参照してリモートWebサービスにアクセスします。

Java SEクライアント・アプリケーションを開発する手順は次のとおりです。

  1. 生成されたクライアント・プロキシ・クラスをJava SEアプリケーション・ソース・ディレクトリにコピーします。

  2. port_nameClient.javaと呼ばれるメイン・クライアント・プロキシ・クラスをガイドとして使用し、アプリケーションからWebサービスへのアクセスに適したメソッドを追加します。

  3. アプリケーションを実行します。

20.4.3.2.3 WebLogic ServerにデプロイされたJava EEコンポーネント・クライアント・アプリケーションの開発

このタイプのWebサービスは、EJB、サーブレット、または他のWebサービスなど、WebLogic ServerにデプロイされたJavaプラットフォーム、Enterprise Edition (Java EE)バージョン6コンポーネント内で動作します。したがって、JEE Webサービス・クライアント・アプリケーションはWebLogic Serverコンテナ内で動作します。

WebLogic ServerにデプロイされたJava EEコンポーネント・クライアント・アプリケーションを開発する手順は次のとおりです。

  1. port_nameClient.javaと呼ばれるメイン・クライアント・プロキシ・クラスをソース・エディタで開きます。

    このファイルは、Webサービス・クライアント・プロキシを最初に作成するときに自動的に開きます。クラスを再度開くには、クライアント・プロキシ・コンテナを右クリックし、「クライアント・クラスに移動」を選択するか、「アプリケーション」ウィンドウでそのままファイルをダブルクリックします。

  2. Webサービスにアクセスして必要な操作を行うための独自のメソッドにメイン・メソッドを置き換えます。メイン・メソッドで生成されたコードをガイドとして使用できます。

  3. JDeveloperで生成されたクライアント・モジュール・クラスの完全なセットをデプロイします。

  4. Java EEアプリケーションでクライアント・プロキシ・クラスを参照します。

20.4.3.3 @WebServiceRef注釈を使用したWebサービスの参照

javax.xml.ws.WebServiceRef注釈を使用する場合、Webサービスへの参照を任意のコンテナ管理のJavaクラスに挿入できます。

@WebServiceRef注釈をJavaクラスに迅速かつ簡単に追加するには、Javaクラス・エディタ内でWebサービス参照を挿入する場所を右クリックし、次のいずれかのオプションを選択します。

  • ポップアップ・メニューで「プロキシの作成および参照の挿入」を選択します。

    このコマンドにより、「Webサービス・クライアントおよびプロキシの作成」ウィザードが起動し、Webサービス・クライアントおよびプロキシ・クラスを生成できます。次に、javax.xml.ws.WebServiceRefおよびWebサービスのプロキシ・クラスが自動的にインポートされ、選択したWebサービスへの参照が指定した場所に挿入されます。

  • コンテキスト・メニューから「プロキシ参照の挿入」を選択し、ドロップダウン・リストから既存のWebサービス・プロキシを選択します。

    次に、javax.xml.ws.WebServiceRefおよびWebサービスのプロキシ・クラスが自動的にインポートされ、選択したWebサービスへの参照が指定した場所に挿入されます。Webサービスのプロキシ・クラスが現在使用可能ではない場合、このオプションはグレー表示されます。

次の抜粋は、Javaクラスに自動的に追加されるコードの例を示しています。

import java.xml.ws.WebServiceRef;
import ratingservice.CreditRatingService;
...
/**
 ** Injectable field for service WebServiceClient
**/
@WebServiceRef
CreditRatingService creditRatingService1;
...

詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』の@WebServiceRef注釈を使用したWebサービス参照の定義に関する項を参照してください。

20.4.3.4 Webサービス・クライアントでのWebサービスの原子性トランザクションの有効化

Webサービスの原子性トランザクションの詳細は、第20.4.4項「Webサービスの原子性トランザクションの使用方法」を参照してください。

Webサービス・クライアントのインジェクション可能なターゲットでWebサービスの原子性トランザクションを有効化できます。

Webサービス・クライアントのインジェクション可能なターゲットでWebサービスの原子性トランザクションを有効にするには、次のようにします。

  1. ソース・エディタでWebサービス・クライアントを開きます。

  2. @WebServiceRef注釈またはインジェクション可能なターゲットを右クリックし、メニューから「トランザクションの追加」を選択します。

    @Transactional注釈がWebサービス・クライアントに追加されます。

  3. 次のようにバージョンおよびフロー・タイプ値を指定できます。

    @Transactional(version=Transactional.Version.[WSAT10|WSAT11|WSAT12|DEFAULT],
               value=Transactional.TransactionFowType.[MANDATORY|SUPPORTS|NEVER])
    

    構成オプションの詳細は、表20-5を参照してください。

20.4.3.5 Webサービス・クライアントおよびプロキシ・クラスの再生成

Webサービス・クライアントおよびプロキシ・クラスは再生成が必要な場合があります。たとえば、Webサービスが前回の生成以降に更新された場合などです。


注意:

Webサービス・クライアントおよびプロキシ・クラスを再生成すると、クライアントが最後に生成されてからクラス、WSDLまたはサポート・ファイルに対して行った変更がすべて破棄されます。

Webサービス・クライアントおよびプロキシ・クラスを再生成するには、次のようにします。

次のように、「Webサービス・クライアントおよびプロキシ・エディタ」ウィザードに最後に定義された一連のプロパティや現在ローカルに格納されているWSDLを使用して、Webサービス・クライアントおよびプロキシ・クラスを迅速かつ簡単に再生成できます。

  • 「アプリケーション」ウィンドウで、再生成するWebサービス・クライアント・ノードを右クリックして、ポップアップ・メニューから「Webサービス・プロキシの再生成」を選択します。

    Webサービス・クライアント・クラス、WSDLおよびサポート・プロキシ・ファイルが再生成されます。

20.4.3.6 Webサービス・クライアントの編集

Webサービス・クライアントはWebサービス・クライアントおよびプロキシ・エディタを使用して編集できます。

Webサービス・クライアントを編集する手順は次のとおりです。

  • 「アプリケーション」ウィンドウ内で、Webサービス・クライアント・コンテナをダブルクリックします。

  • 「アプリケーション」ウィンドウ内でクライアントを右クリックし、「プロパティ...」を選択します。

ウィザードの操作のヘルプを参照するには、ウィザード内で[F1]を押すか「ヘルプ」をクリックします。

20.4.3.7 Webサービス・クライアントの削除

不要になったWebサービス・クライアントは、削除できます。

Webサービス・クライアントを削除する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、Webサービス・クライアント・コンテナを右クリックして「削除」を選択します。

    「プロキシを削除しますか。」ダイアログが表示されます。

  2. ダイアログ・ボックスで適切なファイルが選択されていることを確認します。「すべて選択」または「すべて選択解除」をクリックして、すべてのプロキシ・ファイルを選択または選択解除します。

  3. 「OK」を選択します。

    ファイルは永久に削除されます。

20.4.4 Webサービスの原子性トランザクションの使用方法

WebLogic Webサービスは、次の仕様のサポートを通じて、Websphere、JBoss、Microsoft .NETなどの他の外部トランザクション処理システムとの相互運用を可能にします。

これらの仕様は、一連の参加者の間で分散アクティビティを調整するための拡張可能なフレームワークを定義します。コーディネータは中央のコンポーネントで、トランザクションの状態(調整コンテキスト)を管理し、WebサービスおよびWebクライアントを参加者として登録することを可能にします。Webサービスの原子性トランザクションの詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』の「Webサービスの原子性トランザクションの使用」を参照してください。

Webサービス実装の原子性トランザクションをクラス・レベルまたは同期メソッド(双方向メソッドの場合のみ)で有効にするには、次のいずれかの方法を使用します。

Webサービス・クライアントの原子性トランザクションを有効にするには、次のいずれかの方法を使用します。

  • @WebServiceRef注釈またはWebサービスのインジェクション可能なターゲットを右クリックし、メニューから「トランザクションの追加」を選択し、@Transactional注釈を追加します。

  • Webサービス・プロキシまたはWebサービス・ディスパッチの作成時のパラメータとしてweblogic.wsee.wstx.wsat.TransactionalFeatureを渡します。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』の「Webサービスの原子性トランザクションの使用」を参照してください。

Webサービスの原子性トランザクションを有効にする場合、次の情報を構成します。

  • バージョン: Webサービスおよびクライアントで使用されるWebサービスの原子性トランザクションの調整コンテキストのバージョン。クライアントでは、アウトバウンド・メッセージでのみ使用されるバージョンを指定します。トランザクション全体で同じ値を指定する必要があります。有効な値は、WSAT10WSAT11WSAT12およびDEFAULTです。WebサービスのDEFAULT値は3つのバージョンすべてです(インバウンド・リクエストによって決定します)。Webサービス・クライアントのDEFAULT値はWSAT10です。

  • フロー・タイプ: 調整コンテキストがトランザクション・フローとともに渡されるかどうかを指定するフラグ。次の表は、有効な値およびWebサービスおよびクライアントでのそれらの意味の概要を示します。また、@TransactionAttribute注釈を使用するEJB型のWebサービス用にWebサービスの原子性トランザクションを構成する場合の有効な値の組合せの概要を示します。

表20-5 トランザクション構成

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

NEVER

JTAトランザクションがある場合: トランザクションの調整コンテキストをエクスポートしません。

JTAトランザクションがない場合: トランザクションの調整コンテキストをエクスポートしません。

トランザクション・フローが存在する場合: トランザクションの調整コンテキストをインポートしません。CoordinationContextヘッダーにmustunderstand="true"が含まれている場合は、SOAPフォルトがスローされます。

トランザクション・フローがない場合: トランザクションの調整コンテキストをインポートしません。

NEVER、NOT_SUPPORTED、REQUIRED、REQUIRES_NEW、SUPPORTS

SUPPORTS (デフォルト)

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

JTAトランザクションがない場合: トランザクションの調整コンテキストをエクスポートしません。

トランザクション・フローが存在する場合: トランザクション・コンテキストをインポートします。

トランザクション・フローがない場合: トランザクションの調整コンテキストをインポートしません。

SUPPORTS、REQUIRED

MANDATORY

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

JTAトランザクションがない場合: 例外がスローされます。

トランザクション・フローが存在する場合: トランザクション・コンテキストをインポートします。

トランザクション・フローがない場合: サービス側の例外がスローされます。

MANDATORY, REQUIRED, SUPPORTS


Javaクラス、「プロパティ」ウィンドウ、またはWebサービス・クライアントのインジェクション可能なターゲットでWebサービスの原子性トランザクションを有効化できます。方法については、次の各項で説明します。

20.4.4.1 JavaクラスでのWebサービスの原子性トランザクションの有効化

JavaクラスでWebサービスの原子性トランザクションを有効化できます。

JavaクラスでWebサービスの原子性トランザクションを有効にするには、次のようにします。

  1. ソース・エディタでWebサービス・クラスを開きます。

  2. @Transactionalのように、注釈の入力を開始します。中断するか[Ctrl]キーと[Shift]キーを押しながら[Space]キーを押すと、ポップアップが表示され、文を正しく完成するためのエントリを選択できます。

  3. 次のようにバージョンおよびフロー・タイプ値を指定できます。

    @Transactional(version=Transactional.Version.[WSAT10|WSAT11|WSAT12|DEFAULT],
            value=Transactional.TransactionFowType.[MANDATORY|SUPPORTS|NEVER])
    

20.4.4.2 「プロパティ」ウィンドウでのWebサービスの原子性トランザクションの有効化

「プロパティ」ウィンドウでWebサービスの原子性トランザクションを有効化できます。

「プロパティ」ウィンドウでWebサービスの原子性トランザクションを有効にするには、次のようにします。

  1. ソース・エディタでWebサービス・クラスを開いた状態で、「ウィンドウ」→「プロパティ」を選択して「プロパティ」ウィンドウを開きます。

    詳細を参照するには、「プロパティ」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  2. publicクラス@WebServiceまたはクラスの双方向メソッド行にカーソルを置いた状態で、「プロパティ」ウィンドウのJAX-WS拡張機能ノードにナビゲートします。

  3. 「トランザクションの追加」を選択します。

    「プロパティ」ウィンドウがリフレッシュされ、機能を有効化または無効化するためのオプションと、フロー・タイプおよびバージョンを設定するためのオプションが表示されます。構成オプションの詳細は、表20-5を参照してください。

  4. 「フロー・タイプ」ドロップダウン・リストから、フロー・タイプを選択します。有効な値は、SupportsNeverおよびMandatoryです。このフィールドのデフォルトはSupportsです。

  5. 「バージョン」ドロップダウン・リストから、バージョンを選択します。有効な値は、WS-AT 1.0WS-AT 1.1WS-AT 1.2およびDefaultです。WebサービスのDefault値は3つのバージョンすべてです(インバウンド・リクエストによって決定します)。Webサービス・クライアントのDefault値は、WS-AT 1.0です。

@Transactional注釈がインポートされて、publicクラスに追加されます。

20.4.4.3 Webサービス・クライアントのインジェクション可能なターゲットでのWebサービスの原子性トランザクションの有効化

Webサービス・クライアントのインジェクション可能なターゲットでWebサービスの原子性トランザクションを有効化できます。

Webサービス・クライアントのインジェクション可能なターゲットでWebサービスの原子性トランザクションを有効にするには、次のようにします。

  1. ソース・エディタでWebサービス・クライアントを開きます。

  2. @WebServiceRef注釈またはインジェクション可能なターゲットを右クリックし、メニューから「トランザクションの追加」を選択します。

    @Transactional注釈がWebサービス・クライアントに追加されます。

  3. 次のようにバージョンおよびフロー・タイプ値を指定できます。

    @Transactional(version=Transactional.Version.[WSAT10|WSAT11|WSAT12|DEFAULT],
               value=Transactional.TransactionFowType.[MANDATORY|SUPPORTS|NEVER])
    

    構成オプションの詳細は、表20-5を参照してください。

20.4.5 SOAP over JMSトランスポートの使用方法

通常、Webサービスとクライアントの通信には、接続プロトコルとしてSOAP over HTTP/Sが使用されます。しかし、クライアント・アプリケーションがJMSを使用してトランスポートを行うようにWebLogic Webサービスを構成できます。

SOAP over JMSトランスポートを使用すれば、WebサービスとクライアントがHTTP接続ではなくJMS宛先を使用して通信するようになるため、次の利点があります。

  • 信頼性

  • スケーラビリティ

  • サービス品質

Webサービスの信頼性のあるメッセージングと同様、WebLogic Serverが停止したときにキューに入っていたメソッド呼出しは、WebLogic Serverの再起動後すぐに処理されます。Webサービスの呼出しでは、クライアントはレスポンスを待たずに実行を続けることができます。SOAP over JMSトランスポートはHTTP/Sと比較すると、オーバーヘッドが少し多く、プログラミングの複雑性も増します。

WebLogic Serverでは、指定されたトランスポートごとに追加のポートがWSDLに生成されます。そのため、Webサービス(JMS、HTTPまたはHTTPS)の呼出し時に使用可能なトランスポートの選択肢をクライアント・アプリケーションに提供する場合は、各トランスポートを明示的に構成する必要があります。


注意:

SOAP over JMSトランスポートは、Webサービス機能である信頼できるメッセージングおよびHTTPトランスポート固有のセキュリティとは互換性がありません。

Javaクラス、「プロパティ」ウィンドウ、またはWebサービス・クライアントでSOAP over JMSトランスポートを有効化できます。方法については、次の各項で説明します。

SOAP over JMSトランスポートの詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』の「SOAP Over JMSトランスポートの使用」を参照してください。

20.4.5.1 JMSトランスポートを使用したWebサービスの開発

JMSトランスポートを使用してWebサービスを開発するには、次のいずれかの方法を使用します。

20.4.5.2 「プロパティ」ウィンドウでのJMSトランスポートの有効化

構成を単純化するために、「プロパティ」ウィンドウでJMSトランスポートを有効化できます。

「プロパティ」ウィンドウでJMSトランスポートを有効にする手順は次のとおりです。

  1. ソース・エディタでWebサービス・クラスを開いた状態で、「ウィンドウ」→「プロパティ」を選択して「プロパティ」ウィンドウを開きます。

    詳細を参照するには、「プロパティ」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  2. publicクラス@WebServiceまたはクラスの双方向メソッド行にカーソルを置いた状態で、「プロパティ」ウィンドウのJMSノードにナビゲートします。

  3. 「JMS」を選択します。

    「プロパティ」ウィンドウがリフレッシュされ、SOAP over JMSトランスポートを構成するためのオプションが表示されます。構成オプションの詳細は、表20-6を参照してください。

  4. 必要に応じて、JMSトランスポートのプロパティを構成します。

JMSトランスポートを有効にすると、次の表に定義されているプロパティを構成できます。

表20-6 SOAP over JMSトランスポートの構成プロパティ

名前 説明

アクティブ化プロパティ

JMSプロバイダに渡されるアクティブ化構成プロパティ。アクティブ化プロパティを編集するには、「...」をクリックして、「プロパティの編集: アクティブ化プロパティ」ダイアログを開き、アクティブ化プロパティの「値」列に値を指定します。

サポートされているアクティブ化プロパティのリストは、『Oracle WebLogic Server JAX-WS Webサービスの開発』のJMSトランスポートのプロパティの構成に関する項を参照してください。

バインディング・バージョン

SOAP JMSバインディングのバージョン。この値は、このリリースのSOAP JMS 1.0に設定する必要があります。これは、com.oracle.webservices.api.jms.JMSConstants.SOAP11_JMS_BINDINGと同一です。

この値は、SOAPJMS_bindingVersion JMSメッセージ・プロパティにマップされます。

配信モード

リクエスト・メッセージが永続的であるかどうかを示す配信モード。有効な値は、PersistentおよびNon-Persistentです。この値のデフォルトはPersistentです。

宛先名

宛先キューまたはトピックのJNDI名。この値のデフォルトはcom.oracle.webservices.jms.RequestQueueです。

宛先タイプ

宛先タイプ。有効な値は、QueueまたはTopicです。この値のデフォルトはQueueです。

この値は、「アクティブ化プロパティ」フィールドのエントリとして指定されたdestinationType値をオーバーライドします(該当する場合)。

トピックは、一方向通信でのみサポートされています。

WSDLアクセスの有効化

HTTPを介してWSDLを公開するかどうかを指定するブール・フラグです。このフラグのデフォルトはtrueです。

ヘッダー・プロパティ

JMSヘッダー・プロパティ。各プロパティは、名前と値のペアを使用してセミコロン(;)で区切って指定します。例: name1=value1;...;nameN=valueN

メッセージ・プロパティ

JMSメッセージ・プロパティ。各プロパティは、名前と値のペアを使用してセミコロン(;)で区切って指定します。例: name1=value1;...;nameN=valueN

接続ファクトリ

JMS接続を確立するために使用されるコネクション・ファクトリのJNDI名。この値のデフォルトはcom.oracle.webservices.jms.ConnectionFactoryです。

コンテキスト・パラメータ

JNDIプロパティ。各プロパティは、名前と値のペアを使用してセミコロン(;)で区切って指定します。例: name1=value1;...;nameN=valueN

これらのプロパティは、JNDIプロバイダのInitialContextコンストラクタに送信されるjava.util.Hashtableに追加されます。

コンテキスト・ファクトリ

JNDIルックアップの初期コンテキスト・ファクトリ・クラスの名前。この値は、java.naming.factory.initialプロパティにマップされます。この値のデフォルトはweblogic.jndi.WLInitialContextFactoryです。

URL

JNDIプロバイダのURL。この値のデフォルトはt3://localhost:7001です。

この値は、java.naming.provider.urlプロパティにマップされます。

接続当たりのMDB

リクエストされた宛先ごとに1つのリスニング・メッセージドリブンBean (MDB)を作成するかどうかを指定するブール・フラグ。この値のデフォルトはtrueです。

falseに設定すると、Webサービス・ポートごとに1つのリスニングMDBが作成され、そのMDBは他のポートによって共有できません。

メッセージ・タイプ

リクエスト・メッセージとともに使用するメッセージ・タイプ。有効な値は、BytesおよびTextです。この値のデフォルトはBytesです。

メッセージ・タイプの構成の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のJMSメッセージ・タイプの構成に関する項を参照してください。

優先度

リクエストとレスポンスのメッセージに関連付けられるJMS優先度。この値は、0(優先度最低)から9(優先度最高)までの正の整数として指定します。デフォルト値は0です。

返信先の名前

レスポンス・メッセージが送信されるJMS宛先のJNDI名。

双方向操作の場合は、一時的なレスポンス・キューがデフォルトで生成されます。デフォルトの一時的なレスポンス・キューを使用すると、必要な構成が最小限に抑えられます。ただし、サーバーに障害が発生した場合は、レスポンス・メッセージが失われる可能性があります。

この属性により、クライアントは、応答を受信するためにデフォルトの一時的なキューまたはトピックを使用するのではなく、以前に定義された永続的なキューまたはトピックを使用できます。JMSレスポンス・キューの構成の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のJMSレスポンス・キューの構成に関する項を参照してください。

この値は、リクエスト・メッセージのJMSReplyTo JMSヘッダーにマップされます。

プリンシパル名として実行

リスニングMDBを実行するために使用されるプリンシパル。

ロールとして実行

リスニングMDBを実行するために使用されるロール。

ターゲット・サービス

Webサービスのポート・コンポーネント名。この値は、サービス・リクエストをディスパッチするためにサービス実装によって使用されます。指定しない場合は、WSDLまたはjavax.jws.WebService注釈のサービス名が使用されます。

この値は、SOAPJMS_targetService JMSメッセージ・プロパティにマップされます。

有効時間

リクエスト・メッセージの存続期間(ミリ秒)。値が0の場合は、存続期間に制限がないことを示します。指定しない場合は、JMS定義のデフォルト値(0)が使用されます。

サービス側では、この値により各MDBトランザクションの有効期限も指定されます。


20.4.5.3 JMSトランスポートを使用したWebサービス・クライアントの開発

JMSトランスポートを使用してWebサービス・クライアントを開発するには、次のいずれかの方法を使用します。

  • 次のいずれかの方法を使用して、Webサービス・クライアントを更新してJMSトランスポートを有効化および構成します。

    • @com.oracle.webservices.ap.jms.JMSTransportClient注釈を追加します。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』の@JMSTransportClient注釈の使用に関する項を参照してください。

    • @com.oracle.webservices.ap.jms.JMSTransportClientFeature機能クライアントAPIを追加します。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のJMSTransportClientFeatureクライアントAPIの使用に関する項を参照してください。

    • 同期クライアントのターゲット・エンドポイント・アドレスとしてJMS URIを構成します。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のターゲット・エンドポイント・アドレスとしてのJMS URIの構成に関する項を参照してください。

  • 非同期Webサービス・クライアントを更新して、JMSトランスポートを有効化および構成します。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のAsyncClientTransportFeatureを使用した非同期クライアントの構成に関する項を参照してください。

これらの方法の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のJMSトランスポートを使用したWebLogic Webサービスの呼出しに関する項を参照してください。

20.4.6 XML伝送を最適化するためのFast Infosetの使用方法

Fast Infosetは、テキストベースのXMLフォーマットより効率的なシリアライゼーションを提供する圧縮されたバイナリ・コード化フォーマットです。Fast Infosetは、ドキュメントのサイズと処理パフォーマンスの両方を最適化します。

有効にすると、データ送信の前に、Fast InfosetによってSOAPエンベロープ内のXML情報セットが圧縮されたバイナリ形式に変換されます。Fast Infosetは、暗号化され署名されたメッセージ、MTOM対応のメッセージおよびSOAP添付ファイルを最適化し、HTTPトランスポートとJMSトランスポートの両方をサポートします。

Fast Infoset仕様ITU-T Rec.X.891およびISO/IEC 24824-1 (Fast Infoset)は、ITU-TおよびISOの両方の標準化団体によって定義されています。この仕様は次のITUのWebサイトhttp://www.itu.int/rec/T-REC-X.891-200505-I/enでダウンロードできます。

デフォルトでは、Fast Infoset機能は、すべてのWebサービスで有効になっています。Webサービス・クライアントの場合、Fast Infosetは、Webサービスで有効化されWSDLで通知された場合にのみ有効になります。

次の項では、WebサービスとクライアントでFast Infosetを明示的に有効化および無効化する方法について説明します。

20.4.6.1 WebサービスでのFast Infosetの構成

デフォルトでは、Fast Infoset機能は、すべてのWebサービスで有効になっています。

次の方法を使用して、Webサービスに対するFast Infosetの明示的な有効化(グローバル・ポリシー・アタッチメントによって機能が無効化されていないことを確認するなど)、無効化および構成が可能です。

20.4.6.1.1 JavaクラスでのFast Infosetの構成

JavaクラスでFast Infosetを有効化できます。

JavaクラスでFast Infosetを構成するには:

  1. ソース・エディタでWebサービス・クラスを開きます。

  2. 注釈(@FastInfosetServiceなど)の入力を開始します。中断するか[Ctrl]キーと[Shift]キーを押しながら[Space]キーを押すと、ポップアップが表示され、文を正しく完成するためのエントリを選択できます。

  3. 次の例に示すように、有効化された属性を使用して、機能を有効と無効のどちらにするかを明示的に指定できます。

    package examples.webservices.hello_world;
    import javax.jws.WebService;
    import com.oracle.webservices.api.FastInfosetService;
     
    @WebService(name="HelloWorldPortType", serviceName="HelloWorldService")
    @FastInfosetService(enabled=true)
     
    public class HelloWorldImpl {
      public String sayHelloWorld(String message) {
      try {
        System.out.println("sayHelloWorld:" + message);
      } catch (Exception ex) { ex.printStackTrace(); }
        return "Message from FI Enabled Service: '" + message + "'"; 
      }
    }
    
20.4.6.1.2 Webサービス・ウィザードでのFast Infosetの構成

新規Webサービスの作成時にはWebサービス・ウィザードで、すでに存在するWebサービスの更新時にはWebサービス・エディタで、Fast Infosetを有効化できます。

「Java Webサービスの作成」ウィザードを使用したWebサービスの作成の詳細は、第20.4.1.1項「Java Webサービスの作成」を参照してください。

Webサービス・ウィザードでFast Infosetを構成するには:

「Java Webサービスの作成」ウィザードまたはWebサービス・エディタで、「メッセージの書式」ページに移動して「Fast Infosetの有効化」チェック・ボックスを選択します。詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

20.4.6.1.3 「プロパティ」ウィンドウでのFast Infosetの構成

Fast Infosetは、「プロパティ」ウィンドウで有効化できます。

「プロパティ」ウィンドウでFast Infosetを構成するには:

  1. ソース・エディタでWebサービス・クラスを開いた状態で、「ウィンドウ」→「プロパティ」を選択して「プロパティ」ウィンドウを開きます。

    詳細を参照するには、「プロパティ」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  2. publicクラスまたはクラスの@WebService行にカーソルを置いた状態で、「プロパティ」ウィンドウのJAX-WS拡張機能ノードに移動します。

  3. 「Fast Infosetの有効化」を選択します。

@FastInfosetService注釈がインポートされて、publicクラスに追加されます。

20.4.6.2 Webサービス・クライアントでのFast Infosetの構成

Webサービス・クライアントの場合、Fast Infosetは、Webサービスで有効化されWSDLで通知された場合にのみ有効になります。

Webサービス・クライアントに対するFast Infosetの有効化、無効化および構成を明示的に行うには、Webサービス・プロキシまたはディスパッチの作成時にcom.oracle.webservices.api.FastInfosetClientFeatureをパラメータとして渡します。コンテンツのネゴシエーション戦略の構成の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のコンテンツのネゴシエーション戦略の構成に関する項を参照してください。

次に示すコードの抜粋は、com.oracle.webservices.api.FastInfosetClientFeature機能クラスを使用して、設計時にWebサービスでFast Infosetを有効化して構成する例を示しています。

package examples.webservices.hello_world.client;
 
import javax.xml.namespace.QName;
import java.net.MalformedURLException;
import java.net.URL;
import com.oracle.webservices.api.FastInfosetClientFeature;
import com.oracle.webservices.api.FastInfosetContentNegotiationType;
 
public class Main {

public static void main(String[] args) {
    HelloWorldService service;
    FastInfosetContentNegotiationType clientNeg  = 
        FastInfosetContentNegotiationType.PESSIMISTIC;
    FastInfosetClientFeature feature =
FastInfosetClientFeature.builder().fastInfosetContentNegotiation(clientNeg).enabled(true).build();
          try {
      service = new HelloWorldService(new URL(args[0] + "?WSDL"), new QName("http://hello_world.webservices.examples/", "HelloWorldService") );
    } catch (MalformedURLException murl) { throw new RuntimeException(murl); }
      HelloWorldPortType port = service.getHelloWorldPortTypePort(feature);
 
      String result = null;
      result = port.sayHelloWorld("Hi there!");
      System.out.println( "Got result: " + result );
  }
}

クライアントでFast Infosetを無効にするには、enabledフラグをfalseに設定するか、機能クラスでコンテンツのネゴシエーション戦略をNONEに設定します。

20.4.6.3 WebサービスおよびクライアントでのFast Infosetの無効化

設計時にFast Infosetを明示的に無効化する場合:

  • Webサービスの場合、注釈でenabledフラグをfalseに設定します。詳細は、第20.4.6.1.1項「JavaクラスでのFast Infosetの構成」を参照してください。

  • Webサービス・クライアントの場合、注釈(機能クラス)でenabledフラグをfalseに設定するか、コンテンツのネゴシエーション戦略をNONEに設定します。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のコンテンツのネゴシエーション戦略の構成に関する項と設計時のFastInfosetClientFeatureクラスの使用例に関する項を参照してください。

次に示すコードの抜粋は、com.oracle.webservices.api.FastInfosetService注釈を使用して、設計時にWebサービスでFast Infosetを無効化する例を示しています。

package examples.webservices.hello_world;
import javax.jws.WebService;
import com.oracle.webservices.api.FastInfosetService;
 
@WebService(name="HelloWorldPortType", serviceName="HelloWorldService")
@FastInfosetService(enabled=false)
 
public class HelloWorldImpl {
  public String sayHelloWorld(String message) {
  try {
    System.out.println("sayHelloWorld:" + message);
  } catch (Exception ex) { ex.printStackTrace(); }
    return "Message from FI Enabled Service: '" + message + "'"; 
  }
}

20.4.7 バイナリ伝送を最適化するためのMTOMの使用方法

SOAP Message Transmission Optimization Mechanism/XML-binary Optimized Packaging (MTOM/XOP)は、SOAPメッセージ内のxs:base64Binaryまたはxs:hexBinaryタイプのXMLデータの転送を最適化するためのメソッドを定義します。転送プロトコルがHTTPの場合、HTTPでのMultipurpose Internet Mail Extension (MIME)添付によるデータ転送を使用して、送信側と受信側の双方が、base64BinaryまたはhexBinaryデータをマーシャリングするためにMIMEアーティファクトが使用されていることを意識せずに直接SOAPメッセージのXMLデータにアクセスできるようにします。

バイナリ・データの最適化プロセスには、次のステップがあります。

  1. バイナリ・データをエンコードします。

  2. SOAPエンベロープからバイナリ・データを削除します。

  3. バイナリ・データを圧縮します。

  4. MIMEパッケージにバイナリ・データをアタッチします。

  5. MIMEパッケージへの参照をSOAPエンベロープに追加します。

MTOM/XOPサポートは、JWS注釈を使用することにより、JAX-WSで標準になります。MTOM仕様では、MTOMを有効化する場合、base64binaryまたはhexBinaryデータの伝送時にWebサービス・ランタイムでXOPバイナリ最適化を使用する必要はありません。かわりに、仕様では、ランタイムでの選択が許可されています。SOAPメッセージでバイナリ・データを直接送信するほうが効率的であると、ランタイムが判断する場合があるためです。このようなケースの例として、少量データの転送があげられます。この場合、変換とトランスポートのオーバーヘッドにより、データをそのままインライン化するよりも多くのリソースを消費してしまいます。

Java型javax.activation.DataHandlerjava.awt.Imageおよびjavax.xml.transform.Sourceは、デフォルトでXMLデータ型base64Binaryにマップされます。base64Binary型またはhexBinary型の要素は、デフォルトでbyte[]にマップされます。

次の項では、WebサービスおよびクライアントでMTOMを有効にする方法について説明します。

20.4.7.1 WebサービスでのMTOMの有効化

次の操作により、Webサービスに対してMTOMを有効化できます。

20.4.7.1.1 JavaクラスでのMTOMの有効化

JavaクラスでMTOMを有効化できます。

JavaクラスでMTOMを有効化するには:

  1. ソース・エディタでWebサービス・クラスを開きます。

  2. 注釈(@MTOMなど)の入力を開始します。中断するか[Ctrl]キーと[Shift]キーを押しながら[Space]キーを押すと、ポップアップが表示され、文を正しく完成するためのエントリを選択できます。

次に、Webサービスに対するMTOMの有効化の例を示します。

package examples.webservices.mtom;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.soap.MTOM; 

@MTOM
@WebService(name="MtomPortType",
            serviceName="MtomService",
            targetNamespace="http://example.org")
public class MTOMImpl { 
  @WebMethod
  public String echoBinaryAsString(byte[] bytes) {
    return new String(bytes);

  }
}
20.4.7.1.2 WebLogic Webサービス・ポリシーのアタッチによるMTOMの有効化

MTOMを有効化するには、『Oracle WebLogic Server JAX-WS Webサービスの開発』のWS-PolicyファイルのアタッチによるWebサービスでのMTOMの有効化に関する項の説明に従って、WebLogic Webサービス・ポリシーをアタッチします。

20.4.7.1.3 Webサービス・ウィザードでのMTOMの有効化

新規Webサービスの作成時にはWebサービス・ウィザードで、すでに存在するWebサービスの更新時にはWebサービス・エディタで、MTOMを有効化できます。

「Java Webサービスの作成」ウィザードを使用したWebサービスの作成の詳細は、第20.4.1.1項「Java Webサービスの作成」を参照してください。

Webサービス・ウィザードでMTOMを有効化するには:

「Java Webサービスの作成」ウィザードまたはWebサービス・エディタで、「メッセージの書式」ページに移動して、「MTOMの有効化」チェック・ボックスを選択します。詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

20.4.7.1.4 「プロパティ」ウィンドウでのMTOMの有効化

「プロパティ」ウィンドウでMTOMを有効化できます。

「プロパティ」ウィンドウでMTOMを有効化するには:

  1. ソース・エディタでWebサービス・クラスを開いた状態で、「ウィンドウ」→「プロパティ」を選択して「プロパティ」ウィンドウを開きます。

    詳細を参照するには、「プロパティ」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  2. publicクラスまたはクラスの@WebService行にカーソルを置いた状態で、「プロパティ」ウィンドウの「JAX-WS」ノードに移動します。

  3. 「MTOMの有効化」を選択します。

@FastInfosetService注釈がインポートされて、publicクラスに追加されます。

20.4.7.2 Webサービス・クライアントでのMTOMの有効化

WebサービスのクライアントでMTOMを有効化するには、次の例に示されているように、Webサービス・プロキシまたはディスパッチの作成時にjavax.xml.ws.soap.MTOMFeatureのインスタンスをパラメータとして渡します。関連するコードが太字で示されています。

package examples.webservices.mtom.client;

import javax.xml.ws.soap.MTOMFeature;

public class Main {
  public static void main(String[] args) {
    String FOO = "FOO";
    MtomService service = new MtomService()
    MtomPortType port = service.getMtomPortTypePort(new MTOMFeature()); 
    String result = null;
    result = port.echoBinaryAsString(FOO.getBytes());
    System.out.println( "Got result: " + result );
  }
}

20.4.7.3 WebサービスおよびクライアントでのMTOMの構成

設計時に次の内容を構成できます。

  • xs:binary64データがインラインで送信される場合やアタッチメントとして送信される場合に指定するアタッチメントのしきい値を設定します。デフォルトでは、アタッチメントのしきい値は0バイトです。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のアタッチメントのしきい値の設定に関する項を参照してください。

  • トランスポート・レイヤーでHTTPチャンクを有効にして、MTOMアタッチメントの処理時にクライアント側で過度のバッファを最小限に抑えます。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』のHTTPチャンクの有効化に関する項を参照してください。

20.4.8 WSDLファイルの管理方法

JDeveloperには、次の各項に示すように、WebサービスのWSDLファイルを管理する方法が多数用意されています。

20.4.8.1 WSDLドキュメントの作成

WSDLドキュメントを作成することにより、たとえば、トップ・ダウンWebサービスを作成できます。

WSDLドキュメントを作成する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、Webサービスの作成元のJavaクラスまたはEJBが含まれるプロジェクトを選択します。

  2. 「ファイル」→「新規」→「ギャラリから」を選択して「新規ギャラリ」を開きます。

  3. 「カテゴリ」リストで「ビジネス層」を開き、「Webサービス」を選択します。「項目」リストで、「WSDLドキュメント」をダブルクリックして「WSDLドキュメントの作成」ダイアログを開きます。

    ウィザードの操作の詳細なヘルプを参照するには、ダイアログ内で[F1]を押すか、「ヘルプ」をクリックします。

20.4.8.2 WebサービスのWSDLの表示

WebサービスのWSDLを表示できます。WSDLファイルは、Webサービスに定義されている注釈に基づいて一時ディレクトリに生成され、表示されます。

ユーザーがローカルに保存されているWADLファイルを表示したときに、元のWSDLの場所がエディタで読取り専用フィールドとして保存されることを示すように、「WSDLファイルの管理」を更新します。

Webサービス・プロジェクトにWSDLを表示するには、次のようにします。

「アプリケーション」ウィンドウで、WSDLを表示するWebサービスを右クリックし、ポップアップ・メニューから「Webサービス注釈のWSDLの表示」を選択します。

WSDLファイルが一時ディレクトリに生成され、表示されます。

20.4.8.3 Webサービス・プロジェクトへのWSDLの追加

Webサービス用のWSDLファイルを生成し、次に示す手順を使用してこれをプロジェクトに追加できます。WSDLファイルは自動的に生成され、プロジェクト内のWebアプリケーション用のWEB-INF/wsdlディレクトリおよびEJBアプリケーション用のMETA-INF/wsdlディレクトリに追加されます。また、ローカルWSDLの場所を参照するためにwsdlLocation属性を使用して@WebService注釈が更新されます。次に例を示します。

@WebService(wsdlLocation="WEB-INF/wsdl/CreditRatingService.wsdl")

WSDLをWebサービス・プロジェクトに追加するには、次のようにします。

「アプリケーション」ウィンドウで、WSDLを追加するWebサービスを右クリックし、ポップアップ・メニューから「WSDLを生成し、プロジェクトを追加します」を選択します。WSDLが自動的に生成され、WEB-INF/wsdlディレクトリでプロジェクトに追加されます。


注意:

WSDLファイルがWEB-INF/wsdlまたはMETA-INF/wsdlディレクトリにすでに存在する場合は、既存のWSDLファイルを上書きするかどうかを尋ねられます。

20.4.8.4 ローカル・ディレクトリへのWSDLの保存

WebサービスのリモートWSDLを表示する場合、WSDLをローカル・ディレクトリに保存できます。


注意:

WSDLをWebサービス・プロジェクト内で使用する場合、プロジェクト・ディレクトリ(たとえば、Webアプリケーションの場合はWEB-INF/wsdl、EJBアプリケーションの場合はMETA-INF/wsdl)によってアクセスされる場所にこれをコピーし、WSDLの場所を参照するように@WebService注釈を更新します。

ローカル・ディレクトリにWSDLを保存するには、次のようにします。

  1. WebサービスのWSDLファイルを表示します。

  2. 「ツール」→「WSDLをローカルでコピー」を選択します。

  3. 「WSDLの移動先を選択」ダイアログで、WSDLを保存する場所にナビゲートするか、「ディレクトリ名」テキスト・ボックスに場所を入力し、「選択」をクリックします。

    WSDLが指定した場所に保存されます。

20.4.8.5 Webサービス・クライアントの作成に使用されたWSDLの表示

Webサービス・クライアントの生成に使用されたWSDLを表示できます。次のことに注意してください。

  • 可能な場合、WSDLファイルのローカル・コピーが表示されます。Webサービス・クライアントを生成する場合、ソースWebサービスのWSDLをローカル・ディレクトリにコピーできます。第20.4.3.1項「クライアントおよびプロキシ・クラスの作成」を参照してください。


    注意:

    ほとんどの場合、WSDLのローカル・コピーはリモートWebサービスのWSDLと一致します。リモートWebサービスが変更されると、ローカルWSDLがリモートWSDLと同期しなくなる可能性があります。Webサービス・クライアントがリモートWebサービスにアクセスできることを確認するには、必要に応じて、リモートWSDLを使用してローカルWSDLを再生成します。第20.4.3.5項「Webサービス・クライアントおよびプロキシ・クラスの再生成」を参照してください。

  • ローカル・バージョンが使用できない場合、リモートWSDLが表示されます。

Webサービス・クライアントの作成に使用されたWSDLを表示する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウ内で、Webサービス・クライアント・コンテナを右クリックします。

  2. ポップアップ・メニューで「WSDLに移動」を選択します。

    WSDLが表示されます。

20.4.8.6 WSDLのローカル・コピーのリフレッシュとWebサービス・クライアント・プロキシおよびクラスの再生成

元のWSDLの場所からWSDLのローカル・コピーをリフレッシュできます。WSDLがリフレッシュされると、Webサービス・クライアントおよびプロキシ・クラスが再生成されます。

WSDLのローカル・コピーをリフレッシュする手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、再生成するWebサービス・クライアント・ノードを右クリックして、ポップアップ・メニューから「プロパティ」を選択します。

    「Webサービス・クライアントおよびプロキシ・エディタ」ウィザードが表示されます。

  2. 「Webサービス記述」を選択します。(デフォルトで選択されています。)

  3. 元の場所にあるWSDLを使用してローカルWSDLをリフレッシュするには、「元のWSDLの場所からコピーしたWSDLをリフレッシュ」を選択します。

  4. 「OK」をクリックします。

    WSDLのローカル・コピーがリフレッシュされ、Webサービス・クライアントおよびプロキシ・クラスが再生成されます。

20.4.8.7 実行時にクライアントによって使用されるWebサービスWSDLの更新

場合によっては、Webサービスの説明の一部であるソースとは異なるソースからインポートされたXMLリソース(WSDLやXSDなど)を参照するため、アプリケーションを更新する必要がある可能性があります。パフォーマンスを向上させたりアプリケーションがローカル環境で正しく動作することを確認するために、XMLリソースをこのようにリダイレクトすることが必要な場合があります。

たとえば、WSDLはクライアントの生成時にアクセス可能であるが、クライアントの実行時にはアクセスできない場合があります。ネットワークを介して使用可能なリソースではなく、アプリケーションに対してローカルであるかアプリケーションにバンドルされたリソースを参照することが必要な場合があります。

次のいずれかのメソッドを使用すると、実行時にWebサービスによって使用されるWSDLの場所を変更できます。

  • XMLカタログ・ファイル

  • Webサービス・インジェクション(@WebServiceRef)およびデプロイメント・プラン

20.4.8.7.1 XMLカタログ・ファイルの使用

Webサービス・クライアントを作成または再生成すると、jax-ws-catalog.xmlファイルがMETA-INFディレクトリに自動的に作成されます。このファイルは、Oasis XMLカタログの仕様(http://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html)で説明されているように、OASIS XMLスキーマに準拠しています。

WebサービスWSDLを更新するには、jax-ws-catalog.xmlファイルの<system>要素のuri属性を変更します。指定した値は実行時に使用されます。

次の例は、リモートWSDLのXMLカタログ(jax-ws-catalog.xml)ファイルを示しています。

<catalog xmln="urn:oasis:names:tc:entity:xmlns:xml:catalog"
   prefer="system">
   <system systemId="http://foo.org/hello?wsdl"
      uri="http://foo.org/hello?wsdl" />
</catalog>

次の例は、ローカルWSDLのXMLカタログ(jax-ws-catalog.xml)ファイルを示しています。

<catalog xmln="urn:oasis:names:tc:entity:xmlns:xml:catalog" 
   prefer="system">
   <system systemId="http://foo.org/hello?wsdl" 
      uri="../org/foo/HelloService.wsdl" />
</catalog>

前述の例で、各要素の意味は次のとおりです。

  • <catalog>ルート要素は、XMLカタログ・ネームスペースを定義し、prefer属性をsystemに設定してシステムとの一致が優先されるよう指定しています。

  • <system>要素は、URI参照をsystem識別子に関連付けています。


    注意:

    同じエンドポイントを共有するローカル・システム上で複数のWebサービスに対してクライアントおよびプロキシ・クラスを作成することにより、jaxws-catalog.xmlファイルでWebサービスごとにURLが一意であるようにすると、サービスQNameがアンカー・テキストとして追加されます。次に例を示します。

    http://foo.org/helloworld?wsdl

    これは次のようになります。

    http://foo.org/helloworld#%7Bhttp%3A%2F%2Fexample.com%2F%7DHelloService?wsdl


20.4.8.7.2 Webサービス・インジェクション(@WebServiceRef)およびデプロイメント・プランの使用

このメソッドには、次の手順が含まれます。

  1. @WebServiceRef注釈を使用して、Webサービスへの参照を定義し、インジェクション・ターゲットを識別します。

  2. デプロイメント・プランを更新し、実行時に参照されるWebサービスWSDLの値を変更します。

手順1: @WebServiceRef注釈の使用方法

@WebServiceRef注釈は、web.xmlファイルに定義されているWebサービス・インタフェースのエンドポイントをインジェクトします。次の例は、@WebServiceRef注釈を使用して、Webサービスへの参照を定義し、インジェクション・ターゲットを識別する方法を示しています。

...
@WebService
public class LoansApprover { 
   /** 
    ** Credit rating service injected from web.xml
    **/
   @WebServiceRef(name = "CreditRatingService")
   CreditRating creditRating;

   /** 
    ** @return Loan application with approval code if approved.
    **/
   public LoanApprovalReponse approveLoan(LoanApplication la) {
      ...
   }
}

次の例に示すように、CreditRatingServiceのWebサービス・クラスはweb.xmlファイルにハードコード化されています。

<?xml version = '1.0' encoding = 'windows-1252'?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
      version="2.5"
      xmlns="http://java.sun.com/xml/ns/javaee">
   ... 
   <service-ref>
      <service-ref-name>CreditRatingService</service-ref-name>
      <service-interface>
        com.somecreditrating.xmlns.rating.CreditRating_Service
      </service-interface>
   </service-ref>
</web-app>

手順2: デプロイメント・プランの更新方法

実行時に使用されるWSDLの値を変更するため、デプロイメント・プランを生成および更新できます。

デプロイメント・プランは、特定のWebLogic Server環境にデプロイするアプリケーションの構成に使用するオプションのXML文書です。デプロイメント・プランは、通常はアプリケーションのWebLogic Serverデプロイメント・ディスクリプタに定義されるデプロイメント・プロパティ値を定義またはオーバーライドします。アプリケーションの構成を更新するには、デプロイメント・プランの変数を追加または更新し、WebLogic Serverディスクリプタ・プロパティの場所とプロパティに割り当てる値の両方を定義します。詳細は、WebLogic Serverへのアプリケーションのデプロイを参照してください。

次の例は、CreditRatingService WebサービスWSDLの値をオーバーライドするデプロイメント・プランを示しており、各要素の意味は、次のとおりです。

  • variable-definition要素は、CreditRatingService変数とこの変数に割り当てる値を定義します。

  • LoanApplication-LoanApprover-context-root.warmodule-override要素の一部として、variable-assignment要素は、CreditRatingService変数、およびプロパティがオーバーライドされるディスクリプタ内の正確な場所を定義します。

<?xml version='1.0' encoding='UTF-8'?>
<deployment-plan xmlns="http://www.bea.com/ns/weblogic/deployment-plan"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://www.bea.com/ns/weblogic/deployment-plan
   http://www.bea.com/ns/weblogic/deployment-plan/1.0/deployment-plan.xsd"
   global-variables="false">
   <application-name>production</application-name>
   <variable-definition>
      <variable>
         <name>CreditRatingService</name>
         <value>http://www.somecreditrating.com/xmlns/rating?WSDL</value> 
      </variable>
   </variable-definition>
   <module-override>
      <module-name>production.ear</module-name>
      <module-type>ear</module-type>
      <module-descriptor external="false">
         <root-element>weblogic-application</root-element>
         <uri>META-INF/weblogic-application.xml</uri>
      </module-descriptor>
      <module-descriptor external="false">
         <root-element>application</root-element>
         <uri>META-INF/application.xml</uri>
      </module-descriptor>
      <module-descriptor external="true">
         <root-element>wldf-resource</root-element>
         <uri>META-INF/weblogic-diagnostics.xml</uri>
      </module-descriptor>
   </module-override>
   <module-override>
      <module-name>
        LoanApplication-LoanApprover-context-root.war
      </module-name> 
      <module-type>war</module-type>
      <module-descriptor external="false">
         <root-element>weblogic-web-app</root-element>
         <uri>WEB-INF/weblogic.xml</uri>
      </module-descriptor>
      <module-descriptor external="false">
         <root-element>web-app</root-element>
         <uri>WEB-INF/web.xml</uri>
         <variable-assignment>
            <name>CreditRatingService</name>
            <xpath>
       /web-app/service-ref/[service-ref-name="CreditRatingService"]/wsdl-file
            </xpath> 
            <operation>add</operation>
         </variable-assignment>
      </module-descriptor> 
      <module-descriptor external="true"> 
         <root-element>weblogic-webservices</root-element> 
         <uri>WEB-INF/weblogic-webservices.xml</uri> 
      </module-descriptor> 
      <module-descriptor external="false"> 
         <root-element>webservices</root-element>
         <uri>WEB-INF/webservices.xml</uri>
      </module-descriptor> 
      <module-descriptor external="true"> 
         <root-element>webservice-policy-ref</root-element>
         <uri>WEB-INF/weblogic-webservices-policy.xml</uri> 
      </module-descriptor>
   </module-override>
   <config-root>
      D:\prom-demo\jdeveloper\mywork\LoanApplication\deploy\production\.\plan
   </config-root> 
</deployment-plan>

20.4.9 JAX-WS Webサービスの編集方法

JDeveloperで作成したJAX-WS Webサービスを編集して、公開するメソッドやファイルの場所などを変更できます。

JAX-WS Webサービスを編集すると、以前に生成されたWSDLファイルは上書きされるため、それまでに行った変更はすべて失われます。Webサービスがすでにデプロイされているときにこれを編集する場合、これを再デプロイする必要があります。

JAX-WS Webサービスを編集する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、Webサービスを右クリックして「Webサービス・プロパティ」を選択します。リエントラントなWebサービスのウィザードが表示されます。

  2. Webサービスを変更します。「OK」をクリックします。Webサービス・ファイルが再生成されます。

    ウィザードの操作の詳細なヘルプを参照するには、ウィザード内で[F1]を押すか「ヘルプ」をクリックします。

Webサービス・ファイルを編集した後、Webサービスを再デプロイする必要があります。詳細は、第20.8項「Webサービスのデプロイ」を参照してください。

20.4.10 JAX-WS Webサービスの削除方法

不要になったJAX-WS Webサービスを削除できます。

JDeveloperからWebサービスを削除すると、Webサービス・コンテナとそれに含まれるファイル(WSDLファイル、および場合によってはインタフェース)が削除されます。Webサービスのエントリはweb.xmlから削除されますが、ファイル自体は削除されません。WebServices.deployファイルは、他のWebサービスでも使用される場合があるため、変更されません。

Webサービスを削除するには、次のようにします。

「アプリケーション」ウィンドウで、Webサービスを右クリックして「削除」を選択します。「削除の確認」ダイアログが開き、ファイルの使用状況が表示されます。「OK」をクリックします。

20.5 RESTful Webサービスおよびクライアントの作成

Representational State Transfer (REST)は、SOAPなどの追加メッセージング・レイヤーなしで、標準化されたインタフェース(HTTPなど)を介してデータを送信する単純なインタフェースを記述するものです。RESTには、ステートレス・サービスを作成するための一連の設計ルールが用意されており、これらはリソース(特定の情報のソース)として表示されます。それぞれのリソースは固有のURIで識別できます。クライアントがURIを使用してリソースにアクセスすると、標準化された固定のメソッド・セットと、リソースの表示が返されます。クライアントは、新しい各リソース表示を使用してステートを転送します。

HTTPプロトコルを使用してRESTfulリソースにアクセスする際は、リソース識別子がリソースのURLとなります。そのリソースに対して実行する標準操作は、HTTPメソッドの1つ(GETPUTDELETEPOSTまたはHEAD)です。

JAX-RSは、注釈を使用してRESTful Webサービスの開発を簡略化するJavaプログラミング言語APIです。JAX-RS注釈は、実行時注釈です。JAX-RSリソース・クラスを含むJava EEアプリケーション・アーカイブをWebLogic Serverにデプロイすると、ランタイムはリソースを構成し、ヘルパー・クラスおよびアーティファクトを生成し、リソースをクライアントに公開します。

WebLogic Serverでは、次のJAX-RSリファレンス実装(RI)をサポートします。

  • Jersey 1.18 (JAX-RS 1.1 RI): これはデフォルトの実装であり、http://jcp.org/en/jsr/summary?id=311で定義されているJSR-311 JAX-RS 1.1仕様の本番品質実装を提供します。

  • Jersey 2.5.1 (JAX-RS 2.0 RI): この実装は共有ライブラリとして用意されており、http://jcp.org/en/jsr/detail?id=339で定義されているJSR-339 JAX-RS 2.0仕様の本番品質実装を提供します。

Jersey 2.5.1 (JAX-RS 2.0 RI)共有ライブラリは、統合WebLogic Serverに自動デプロイされます。RESTfulサービスとクライアントをスタンドアロンのWebLogic Serverにデプロイする際に、共有ライブラリを手動で登録する必要があります。共有ライブラリの登録の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「Jersey 2.5.1 (JAX-RS 2.0リファレンス実装)の登録」を参照してください。

注意: OWSMポリシーは、Jersey 1.x JAX-RS RIのみを使用して構築されるRESTful Webサービスおよびクライアントにアタッチできます。このリリースでは、Jersey 2.5.1 (JAX-RS 2.0 RI)を使用して構築されるRESTful Webサービスおよびクライアントは、OWSMポリシーを使用して保護できません。Jersey 2.5.1 (JAX-RS 2.0 RI)を使用して構築されるRESTful Webサービスとクライアントの保護の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「RESTful Webサービスおよびクライアントの保護」を参照してください。

JAX-RSを使用したRESTful Webサービスおよびクライアントの開発の詳細は、次のリソースを参照してください。

次の各項では、JDeveloperを使用してRESTful Webサービスおよびクライアントを迅速かつ簡単に作成する方法について説明します。

20.5.1 RESTful Webサービスの作成方法

JDeveloperを使用してRESTful Webサービスを迅速かつ簡単に開発できます。コード・インサイトやインポート・アシスタンスなどの標準Javaソース・エディタのすべての機能がRESTful Webサービス・コールと連携して機能するようになります。

次の各項では、RESTful Webサービスを開発する方法について説明します。

詳細は、次の資料を参照してください。

  • RESTful Webサービスの開発の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「RESTful Webサービスおよびクライアントの保護」を参照してください。

  • RESTful Webサービスの管理の詳細は、Webサービスの管理を参照してください。

20.5.1.1 単純なRESTful Webサービスの例

例20-1に、単純なRESTful Webサービスの例を示します。この例では、次のようになります。

その他の例は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のRESTful Webサービスの詳細に関する項に記載されています。

例20-1 簡単なRESTful Webサービスの例

package samples.helloworld;
 
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
 
// Specifies the path to the RESTful web service
@Path("/helloworld")
public class helloWorld {
 
   // Specifies that the method processes HTTP GET requests 
   @GET
   @Path("hello")
   @Produces("text/plain")
   public String sayHello() {
      return "Hello World!";
   }
}

20.5.1.2 RESTful Webサービスの作成

「RESTfulサービスの作成」ウィザードを使用して、新しいRESTful Webサービス・クラスを作成したり、既存のJavaクラスからRESTful Webサービスを生成したりできます。

デプロイメント・ファイルはウィザードによって自動的に作成されるため、Webサービスの作成が済んだら、後はこれをデプロイするだけです。HTTPアナライザを使用してそれらをテストできます。詳細は、第20.10.5項「HTTPアナライザを使用したWebサービスの調査方法」を参照してください。

第20.2.5項「デプロイメント・プラットフォームの選択方法」の説明に従って、「RESTfulサービスの作成」ウィザードを使用してRESTful Webサービスを作成する場合、デプロイメント・プラットフォームの選択が求められ、Jersey 1.0または2.0スタイルを選択できます。

JAX-RS Jerseyライブラリは、プロジェクトに自動的に追加されます。アプリケーションで必要であれば、製品にバンドルされているJAX-RS Jersey JacksonライブラリまたはJAX-RS Jersey Jettisonライブラリをプロジェクトに追加できます。JAX-RS Jersey Romeライブラリは製品にバンドルされていません。プロジェクトに追加できるライブラリの詳細は、「ライブラリの管理方法」を参照してください。

Jersey 2.5.1 (JAX-RS 2.0 RI)共有ライブラリは、統合WebLogic Serverに自動デプロイされます。RESTfulサービスとクライアントをスタンドアロンのWebLogic Serverにデプロイする際に、共有ライブラリを手動で登録する必要があります。共有ライブラリの登録の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「Jersey 2.5.1 (JAX-RS 2.0リファレンス実装)の登録」を参照してください。

注意: OWSMポリシーは、Jersey 1.18 (JAX-RS 1.1 RI)のみを使用して構築されるRESTful Webサービスおよびクライアントにアタッチできます。このリリースでは、Jersey 2.5.1 (JAX-RS 2.0 RI)を使用して構築されるRESTful Webサービスおよびクライアントは、OWSMポリシーを使用して保護できません。Jersey 2.5.1 (JAX-RS 2.0 RI)を使用してRESTful Webサービスとクライアントを保護する場合の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「RESTful Webサービスおよびクライアントの保護」を参照してください。

RESTful Webサービスを作成する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、新しいRESTful Webサービスを作成するプロジェクトか、RESTful Webサービスの作成元として使用するJavaクラスまたはRESTful Webサービスを作成するJavaクラスが含まれるプロジェクトを選択します。

  2. 「ファイル」→「新規」→「ギャラリから」を選択して「新規ギャラリ」を開きます。

  3. 「カテゴリ」リストで「ビジネス層」を開き、「Webサービス」を選択します。

  4. 「項目」リストで「RESTfulサービス」を選択し、「OK」をクリックして、「RESTfulサービスの作成」ウィザードを起動します。

    ウィザードの操作の詳細なヘルプを参照するには、ウィザード内で[F1]を押すか「ヘルプ」をクリックします。

また、RESTful Webサービスの作成元として使用するJavaクラスを右クリックし、「RESTfulサービスの作成」を選択して、「RESTfulサービスの作成」ウィザードを起動することもできます。

20.5.1.3 ルート・リソースおよびサブリソースの相対URIの定義

リソースのクラス・レベルでjavax.ws.rs.Path注釈を追加し、RESTful Webサービスの相対URIを定義します。このようなクラスは、ルート・リソース・クラスと呼ばれます。ルート・リソース・クラスの詳細は、Oracle WebLogic Server RESTful Webサービスの開発と保護の次の内容に関する項を参照してください。

  • 「ルート・リソース・クラスの定義」

  • 「リソース・クラスの相対URI (@Path)の定義方法」

特定の機能をグループ化するためのサブリソースを定義するため、@Pathもルート・リソース・クラスのメソッドに追加できます。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のサブリソースの相対URI (@Path)の定義方法に関する項を参照してください。

URIは定数値または変数値(「URIパス・テンプレート」と呼ばれる)として定義できます。

  • URIを定数値として定義するには、定数値を@Path注釈に渡します。先頭と末尾のスラッシュ(/)はオプションです。

  • URIをURIパス・テンプレートとして定義するには、1つまたは複数の変数値を中カッコで囲んで@Path注釈に渡します。これにより、javax.ws.rs.PathParam注釈を使用して、@Path注釈で定義されたリクエストURIから変数情報を抽出し、メソッド・パラメータの値を初期化できます(第20.5.1.6項「リクエスト・メッセージからの情報の抽出」を参照)。

詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のリソース・クラスの相対URI (@Path)の定義方法に関する項を参照してください。

JDeveloperを使用して、次のいずれかの方法で@Path注釈を指定できます。

20.5.1.3.1 「RESTfulサービス」ウィザードでの@Path注釈の定義

「RESTfulサービスの作成」ウィザードを使用してRESTfulサービスを作成するときに、ルート・リソースおよびサブリソースの相対URIを定義できます。ウィザードの起動方法の詳細は、第20.5.1.2項「RESTful Webサービスの作成」を参照してください。

「RESTfulサービス」ウィザードで@Path注釈を定義する手順は次のとおりです。

「RESTfulサービスの作成」ウィザードで、RESTfulサービス・クラスを新規に作成するのか、既存のJavaクラスから作成するのかに応じて、次のいずれかのページにナビゲートします。

  • 新規RESTfulサービスの作成

  • JavaクラスからのRESTfulサービスの作成

次のように相対URIを定義します。

  • ルート・リソース・クラスの相対URIを定義するには、「ルート・パス」フィールドに値を入力します。

  • サブリソースの相対URIを定義するには、「HTTPメソッド」表の「パス」フィールドに値を入力します。

詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

20.5.1.3.2 Javaクラスでの@Path注釈の定義

@Path注釈をJavaクラスに直接追加してRESTfulサービスを作成するときに、ルート・リソースおよびサブリソースの相対URIを定義できます。この場合、コード・インサイト機能が役に立ちます。詳細は、第20.2.6項「Webサービスのコード・インサイトの使用方法」を参照してください。

Javaクラスで@Path注釈を定義する手順は次のとおりです。

  1. ソース・エディタでRESTfulサービス・クラスを開きます。

  2. 次のタスクを1つ以上実行します。

    • リソースのクラス・レベルで@Path注釈を追加して、RESTfulサービスの相対URIを定義します。

    • リソースのメソッドに@Path注釈を追加して、サブリソースを定義します。

    コード・インサイトを使用すると役に立ちます。注釈(@Pathなど)の入力を開始します。中断するか[Ctrl]キーと[Shift]キーを押しながら[Space]キーを押すと、ポップアップが表示され、文を正しく完成するためのエントリを選択できます。


注意:

ポップアップからjavax.ws.rs.Pathを選択したことを確認します。たとえば、誤ってjava.nio.file.Pathを選択しないでください。

@Path注釈の定義の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のルート・リソースおよびサブリソースの相対URIの定義に関する項を参照してください。

20.5.1.3.3 「プロパティ」ウィンドウでの@Path注釈の定義

「プロパティ」ウィンドウを使用して、ルート・リソースおよびサブリソースの相対URIを定義できます。

「プロパティ」ウィンドウで@Path注釈を定義する手順は次のとおりです。

  1. ソース・エディタでRESTfulサービス・クラスを開いた状態で、「ウィンドウ」→「プロパティ」を選択して「プロパティ」ウィンドウを開きます。

    詳細を参照するには、「プロパティ」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  2. リソース・クラスの相対URIを定義する手順は次のとおりです。

    1. リソースのクラス・レベルにカーソルを置きます。

    2. 「プロパティ」ウィンドウで、JAX-RSを開いて「RESTfulリソース・クラス」をクリックします。

      サービスが更新され、リソース・クラスの上に@Path注釈が追加されてjavax.ws.rs.Pathがインポートされます。

    3. 「パス」フィールドに値を入力して、URIを定義します。URIは、定数値またはURIパス・テンプレートとして定義できます。

    詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のリソース・クラスの相対URI (@Path)の定義方法に関する項を参照してください。

  3. サブリソースの相対URIを定義する手順は次のとおりです。

    1. リソースのメソッドにカーソルを置きます。

    2. まだリソース・メソッドをHTTPメソッドにマップしていない場合は、「プロパティ」ウィンドウで、JAX-RSを開いて「メソッド・タイプ」ドロップダウン・メニューからHTTPメソッドを選択します。有効なHTTPメソッドは、GETPOSTPUTまたはDELETEです。

      サービスが更新されて、リソース・メソッドの上にメソッド注釈が含められ、適切なAPIがインポートされます。詳細は、第20.5.1.4項「受信HTTPリクエストのJavaメソッドへのマッピング」を参照してください。

    3. 「メソッド・パス」フィールドに値を入力して、サブリソースの相対URIを定義します。URIは、定数値またはURIパス・テンプレートとして定義できます。

    詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のサブリソースの相対URI (@Path)の定義方法に関する項を参照してください。

20.5.1.3.4 実行時の処理: ベースURIの構成方法

RESTful WebサービスのベースURIは、次のように構成されます。

http://myHostName/contextPath/servletURI/resourceURI

ベースURIパス構造の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の実行時のベースURIの構成方法に関する項を参照してください。

プロジェクト・レベルのcontextPath (つまりコンテキスト・ルート)では、統合WebLogic ServerにデプロイされているJava EE Webアプリケーションに割り当てる値を設定できます。詳細は、第20.2.2項「Webサービスのコンテキスト・ルートの設定方法」を参照してください。このシナリオでは、contextPathはデフォルトで次のように設定されます。

applicationname-projectname-context-root

20.5.1.4 受信HTTPリクエストのJavaメソッドへのマッピング

JAX-RSでは、Java注釈を使用して受信HTTPリクエストをJavaメソッドにマップします。表20-7に、同様の名前が付いたHTTPメソッドにマップする、使用可能な注釈を示します。

表20-7 HTTPリクエストをJavaメソッドにマップするためのjavax.ws.rs注釈

注釈 説明 多重呼出し不変

@GET

URIによって識別されるリソースの表現をクライアントに送信します。フォーマットは、HTML、プレーン・テキスト、JPEGなどです。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のリソースの表現の送信方法(@GET)に関する項を参照してください。

はい

@PUT

URIで識別された特定のリソースの表現を作成または更新します。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のリソースの表現の作成または更新方法(@PUT)に関する項を参照してください。

はい

@DELETE

URIで識別されたリソースの表現を削除します。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のリソースの表現の削除方法(@DELETE)に関する項を参照してください。

はい

@POST

URIで識別された指定のリソースの表現に対するアクションを作成、更新または実行します。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のリソースの表現に対するアクションの作成、更新または実行方法(@POST)に関する項を参照してください。

いいえ

@HEAD

レスポンス・ヘッダーのみを返し、実際のリソースは返しません(つまり、メッセージ本文はありません)。これは、リソースを実際にダウンロードせずにリソースの特性を確認して、帯域幅を節約するのに役に立ちます。詳細は、http://docs.oracle.com/javaee/6/api/index.html?javax/ws/rs/HEAD.htmlを参照してください。

HEADメソッドは、明示的に実装されていないと自動的に実装されます。この場合、ランタイムは実装されたGETメソッド(存在する場合)を呼び出し、レスポンス・エンティティ(設定されている場合)を無視します。

はい

@OPTIONS

URIで識別された特定のリソースのリクエスト/レスポンス・チェーンで使用可能な通信オプションを返します。Allowレスポンス・ヘッダーはリソースでサポートされているHTTPメソッドのセットに設定され、WADLファイルが返されます。詳細は、http://docs.oracle.com/javaee/6/api/index.html?javax/ws/rs/OPTIONS.htmlを参照してください。

OPTIONSメソッドは、明示的に実装されていないと自動的に実装されます。この場合、Allowレスポンス・ヘッダーはリソースでサポートされているHTTPメソッドのセットに設定され、リソースを記述するWADLファイルが返されます。

はい

@HttpMethod

注釈が付いたメソッドを使用してHTTPリクエストを処理する必要があることを示します。詳細は、http://docs.oracle.com/javaee/6/api/index.html?javax/ws/rs/HttpMethod.htmlを参照してください。

N/A


JDeveloperを使用して、次のいずれかの方法でHTTPリクエストをJavaメソッドにマップできます。

20.5.1.4.1 「RESTfulサービス」ウィザードでのHTTPリクエストのJavaメソッドへのマッピング

「RESTfulサービスの作成」ウィザードを使用してRESTful Webサービスを作成するときに、HTTPリクエストをJavaメソッドにマップできます。ウィザードの起動方法の詳細は、第20.5.1.2項「RESTful Webサービスの作成」を参照してください。

「RESTfulサービス」ウィザードでHTTPリクエストをJavaメソッドにマップする手順は次のとおりです。

「RESTfulサービスの作成」ウィザードで、RESTfulサービス・クラスを新規に作成するのか、既存のJavaクラスから作成するのかに応じて、次のいずれかのページにナビゲートします。

  • 新規RESTfulサービスの作成

  • JavaクラスからのRESTfulサービスの作成

次のタスクのいずれかを実行します。

  • 新しいRESTfulサービス・クラスを作成する場合は、Javaメソッドを作成するHTTPメソッドを選択します。そのたびに、「数」列に値を入力して、HTTPメソッドにマップするJavaメソッドの数を指定します。

  • 既存のクラスからRESTfulサービスを生成する場合は、「HTTPメソッドの構成」表で「タイプ」ドロップダウン・リストからHTTPメソッドを選択してHTTPリクエストをJavaメソッドにマップします。有効なHTTPメソッドは、GETPOSTPUTまたはDELETEです。

詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

20.5.1.4.2 JavaクラスでのHTTPリクエストのJavaメソッドへのマッピング

表20-7に示されているいずれかのHTTPリクエスト注釈をJavaクラスに直接追加してRESTfulサービスを作成するときに、HTTPリクエストをJavaメソッドにマップできます。この場合、コード・インサイト機能が役に立ちます。詳細は、第20.2.6項「Webサービスのコード・インサイトの使用方法」を参照してください。

JavaクラスでHTTPリクエストをJavaメソッドにマップする手順は次のとおりです。

  1. ソース・エディタでRESTfulサービス・クラスを開きます。

  2. 表20-7のいずれかのHTTPリクエスト注釈をJavaクラスの1つまたは複数のメソッドに追加します。

    コード・インサイトを使用すると役に立ちます。注釈(@GETなど)の入力を開始します。中断するか[Ctrl]キーと[Shift]キーを押しながら[Space]キーを押すと、ポップアップが表示され、文を正しく完成するためのエントリを選択できます。

HTTPリクエスト注釈の定義の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の受信HTTPリクエストのJavaメソッドへのマッピングに関する項を参照してください。

20.5.1.4.3 「プロパティ」ウィンドウでのHTTPリクエストのJavaメソッドへのマッピング

「プロパティ」ウィンドウで、HTTPリクエストをJavaメソッドにマップできます。

「プロパティ」ウィンドウでHTTPリクエストをJavaメソッドにマップする手順は次のとおりです。

  1. ソース・エディタでRESTfulサービス・クラスを開いた状態で、「ウィンドウ」→「プロパティ」を選択して「プロパティ」ウィンドウを開きます。

    詳細を参照するには、「プロパティ」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  2. リソースのメソッドにカーソルを置きます。

  3. 「プロパティ」ウィンドウで、JAX-RSを開いて「メソッド・タイプ」ドロップダウン・メニューからHTTPメソッドを選択します。有効なHTTPメソッドは、GETPOSTPUTまたはDELETEです。

    サービスが更新されて、リソース・メソッドの上にメソッド注釈が含められ、適切なAPIがインポートされます。

HTTPリクエスト注釈の定義の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の受信HTTPリクエストのJavaメソッドへのマッピングに関する項を参照してください。

20.5.1.5 リクエスト・メッセージとレスポンス・メッセージのメディア・タイプのカスタマイズ

リソースのクラス・レベルまたはメソッド・レベルでjavax.ws.rs.Consumes注釈またはjavax.ws.rs.Produces注釈を追加して、それぞれリクエスト・メッセージまたはレスポンス・メッセージのメディア・タイプをカスタマイズします。いずれの場合も複数のメディア・タイプを宣言できます。

JDeveloperを使用して、次のいずれかの方法でリクエスト・メッセージおよびレスポンス・メッセージのメッセージ・タイプをカスタマイズできます。

20.5.1.5.1 「RESTfulサービス」ウィザードでのメディア・タイプのカスタマイズ

「RESTfulサービスの作成」ウィザードを使用してRESTful Webサービスを作成するときに、メディア・タイプをカスタマイズできます。ウィザードの起動方法の詳細は、第20.5.1.2項「RESTful Webサービスの作成」を参照してください。

「RESTfulサービス」ウィザードでのメディア・タイプをカスタマイズする手順は次のとおりです。

「RESTfulサービスの作成」ウィザードで、RESTfulサービス・クラスを新規に作成するのか、既存のJavaクラスから作成するのかに応じて、次のいずれかのページにナビゲートします。

  • 新規RESTfulサービスの作成

  • JavaクラスからのRESTfulサービスの作成

次のようにメディア・タイプをカスタマイズします。

  • ルート・リソース・クラスのメディア・タイプをカスタマイズするには、「消費」フィールドまたは「生成」フィールドの横にある「...」をクリックし、「メディア・タイプの選択」ダイアログ・ボックスで1つまたは複数のメディア・タイプを選択して「OK」をクリックします。構成されたメディア・タイプの数がフィールドに表示されます。

  • メソッドのメディア・タイプをカスタマイズする手順は次のとおりです。

    • 新しいRESTfulサービス・クラスを作成する場合は、「HTTPメソッドの選択」表で、メディア・タイプを構成するメソッドに対応する「消費」列または「生成」列内をクリックし、「メディア・タイプの選択」ダイアログ・ボックスでメディア・タイプを選択して「OK」をクリックします。構成されたメディア・タイプの数が表エントリに表示されます。

    • 既存のクラスからRESTfulサービスを生成する場合は、「HTTPメソッドの構成」表で、メディア・タイプを構成するメソッドに対応する「消費」列または「生成」列内をクリックし、「メディア・タイプの選択」ダイアログ・ボックスでメディア・タイプを選択して「OK」をクリックします。構成されたメディア・タイプの数が表エントリに表示されます。

詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

20.5.1.5.2 Javaクラスでのメディア・タイプのカスタマイズ

RESTfulサービスの作成時に、リソースのクラス・レベルまたはメソッド・レベルで@Produces注釈または@Consumes注釈をJavaクラスに直接追加して、それぞれリクエスト・メッセージまたはレスポンス・メッセージのメディア・タイプをカスタマイズすることで、メディア・タイプをカスタマイズできます。この場合、コード・インサイト機能が役に立ちます。詳細は、第20.2.6項「Webサービスのコード・インサイトの使用方法」を参照してください。

Javaクラスでメディア・タイプをカスタマイズする手順は次のとおりです。

  1. ソース・エディタでRESTfulサービス・クラスを開きます。

  2. クラス・レベルまたはメソッド・レベルで@Produces注釈または@Consumes注釈を追加します。

    コード・インサイトを使用すると役に立ちます。注釈(@Producesなど)の入力を開始します。中断するか[Ctrl]キーと[Shift]キーを押しながら[Space]キーを押すと、ポップアップが表示され、文を正しく完成するためのエントリを選択できます。

メディア・タイプのカスタマイズの詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のリクエスト・メッセージおよびレスポンス・メッセージのメディア・タイプのカスタマイズに関する項を参照してください。

20.5.1.5.3 「プロパティ」ウィンドウでのメディア・タイプのカスタマイズ

「プロパティ」ウィンドウでメディア・タイプをカスタマイズできます。

「プロパティ」ウィンドウでメディア・タイプをカスタマイズする手順は次のとおりです。

  1. ソース・エディタでRESTfulサービス・クラスを開いた状態で、「ウィンドウ」→「プロパティ」を選択して「プロパティ」ウィンドウを開きます。

    詳細を参照するには、「プロパティ」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  2. リソースのクラス・レベルまたはメソッド・レベルにカーソルを置きます。

  3. 「プロパティ」ウィンドウで、JAX-RSを開いて、「消費タイプ」フィールドまたは「生成タイプ」フィールドの横にある「...」をクリックし、「プロパティの編集」ダイアログ・ボックスで1つまたは複数のメディア・タイプを選択して「OK」をクリックします。構成されたメディア・タイプの数がフィールドに表示されます。

    サービスが更新されて、メソッド注釈が含められ、適切なAPIがインポートされます。

メディア・タイプのカスタマイズの詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のリクエスト・メッセージおよびレスポンス・メッセージのメディア・タイプのカスタマイズに関する項を参照してください。

20.5.1.6 リクエスト・メッセージからの情報の抽出

javax.ws.rsパッケージでは、表20-8に示すように、リクエスト・メッセージから情報を抽出してJavaメソッドのパラメータに注入できる注釈のセットを定義します。

表20-8 リクエスト・メッセージから情報を抽出するためのjavax.ws.rs注釈

注釈 説明

@CookieParam

HTTP Cookie関連ヘッダーから情報を抽出し、メソッド・パラメータの値を初期化します。詳細は、http://docs.oracle.com/javaee/6/api/index.html?javax/ws/rs/CookieParam.htmlを参照してください。

@DefaultValue

次に示す注釈のいずれかを使用してバインドされるリクエスト・メタデータのデフォルト値を定義します。@CookieParam@FormParam@HeaderParam@MatrixParam@PathParamまたは@QueryParam。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のDefaultValueの定義方法 (@DefaultValue)に関する項を参照してください。

@FormParam

タイプapplication/x-www-form-urlencodedのHTMLフォームから情報を抽出します。詳細は、http://docs.oracle.com/javaee/6/api/index.html?javax/ws/rs/FormParam.htmlを参照してください。

@HeaderParam

HTTPヘッダーから情報を抽出し、メソッド・パラメータの値を初期化します。詳細は、http://docs.oracle.com/javaee/6/api/index.html?javax/ws/rs/HeaderParam.htmlを参照してください。

@MatrixParam

URIパス・セグメントから情報を抽出し、メソッド・パラメータの値を初期化します。詳細は、http://docs.oracle.com/javaee/6/api/index.html?javax/ws/rs/MatrixParam.htmlを参照してください。

@PathParam

相対URIを変数値(URIパス・テンプレートと呼ばれる)として定義します。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のリクエストURIからの変数情報の抽出方法(@PathParam)に関する項を参照してください。

@QueryParam

リクエストURIの問合せ部分から情報を抽出し、メソッド・パラメータの値を初期化します。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のリクエスト・パラメータの抽出方法 (@QueryParam)に関する項を参照してください。


JDeveloperを使用して、次のいずれかの方法でリクエスト・メッセージから情報を抽出できます。

「プロパティ」ウィンドウで、次に示す注釈のいずれかを使用してバインドされるパラメータ値のエンコーディングを有効化できます。@FormParam@MatrixParam@PathParam@QueryParam。詳細は、第20.5.1.6.3項「「プロパティ」ウィンドウでのパラメータ値のエンコーディングの有効化」を参照してください。

20.5.1.6.1 「RESTfulサービス」ウィザードでのリクエスト・メッセージからの情報の抽出

「RESTfulサービスの作成」ウィザードを使用してRESTful Webサービスを作成する場合に、リクエストから情報を抽出できます。ウィザードの起動方法の詳細は、第20.5.1.2項「RESTful Webサービスの作成」を参照してください。

「RESTfulサービス」ウィザードでリクエスト・メッセージから情報を抽出する手順は次のとおりです。

「RESTfulサービス」ウィザードを使用する場合は、既存のJavaクラスからRESTfulサービスを生成するときにのみリクエスト・メッセージから情報を抽出できます。

  1. 「RESTfulサービスの作成」ウィザードで、「JavaクラスからのRESTfulサービスの作成」ページに移動します。

  2. 「HTTPメソッドの構成」表でメソッドを選択します。そのメソッドの「タイプ」列でHTTPメソッドが選択されていることを確認します。

    「パラメータの構成」表にメソッド・パラメータのリストが表示されます。

  3. 「パラメータの構成」表で、次の作業を行います。

    • 「注釈」ドロップダウン・リストで、リクエスト・メッセージから情報を抽出するために使用する注釈を選択します。有効な注釈のリストは、表20-8を参照してください。

    • 「パラメータ」フィールドで、抽出された値の格納に使用するパラメータの名前を入力します。

    • 「デフォルト」フィールドで、リクエスト・メッセージで値が渡されなかった場合のパラメータのデフォルト値を入力します。

    • エンコードをクリックして、パラメータ値のエンコーディングを有効にします。このフィールドは、次に示す注釈に対してのみ有効になります。@FormParam@MatrixParam@PathParamまたは@QueryParam

  4. 「次へ」をクリックして次の画面に進むか、「終了」をクリックしてRESTfulサービスを生成します。

詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

20.5.1.6.2 Javaクラスでのリクエスト・メッセージからの情報の抽出

RESTfulサービスの作成時に、Javaクラス内で、表20-8に示されている注釈をリソースのクラス・レベルまたはメソッド・レベルに直接追加することで、リクエスト・メッセージから情報を抽出できます。この場合、コード・インサイト機能が役に立ちます。詳細は、第20.2.6項「Webサービスのコード・インサイトの使用方法」を参照してください。

Javaクラスでリクエスト・メッセージから情報を抽出する手順は次のとおりです。

  1. ソース・エディタでRESTfulサービス・クラスを開きます。

  2. 表20-8に示されている注釈のいずれかをクラス・レベルまたはメソッド・レベルで追加します。

    コード・インサイトを使用すると役に立ちます。注釈(@PathParamなど)の入力を開始します。中断するか[Ctrl]キーと[Shift]キーを押しながら[Space]キーを押すと、ポップアップが表示され、文を正しく完成するためのエントリを選択できます。

  3. javax.ws.rs.Encode注釈をクラス・レベルまたはメソッド・レベルで追加して、次に示す注釈のいずれかを使用してバインドされるパラメータ値のエンコーディングを有効にします。@FormParam@MatrixParam@PathParam@QueryParam。クラス・レベルで指定した場合は、クラス内のすべてのメソッドのパラメータがエンコードされます。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のパラメータ値のエンコーディングの有効化 (@Encode)に関する項を参照してください。

リクエスト・メッセージからの情報の抽出の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のリクエスト・メッセージからの情報の抽出に関する項を参照してください。

20.5.1.6.3 「プロパティ」ウィンドウでのパラメータ値のエンコーディングの有効化

「プロパティ」ウィンドウで、次に示す注釈のいずれかを使用してバインドされるパラメータ値のエンコーディングを有効化できます。@FormParam@MatrixParam@PathParam@QueryParam@Encode注釈の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のパラメータ値のエンコーディング (@Encode)に関する項を参照してください。

「プロパティ」ウィンドウでパラメータ値のエンコーディングを有効にする手順は次のとおりです。

  1. ソース・エディタでRESTfulサービス・クラスを開いた状態で、「ウィンドウ」→「プロパティ」を選択して「プロパティ」ウィンドウを開きます。

    詳細を参照するには、「プロパティ」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  2. リソースのクラス・レベルまたはメソッド・レベルにカーソルを置きます。

  3. 「プロパティ」ウィンドウで、JAX-RSを開いて「エンコード値」をクリックします。

    サービスが更新されて、@Encode注釈が含められ、javax.ws.rs.Encoded APIがインポートされます。

    注意: クラス・レベルでエンコーディングを有効にした場合、すべての関連メソッドでエンコーディングが有効になり、「エンコード値」チェック・ボックスはメソッド・レベルでは使用できなくなります。

20.5.1.7 エンティティ・プロバイダを使用したHTTPリクエストおよびレスポンスのエンティティ・ボディのマッピング

Java型のサブセットは、HTTPリクエストおよびレスポンスのエンティティ・ボディによって自動的にサポートされます。自動的にサポートされない戻り型の場合は、HTTPリクエストおよびレスポンスのエンティティ・ボディをメソッド・パラメータおよび戻り型にマップするエンティティ・プロバイダを定義する必要があります。サポートされるJava型のリストと、エンティティ・プロバイダの作成の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のエンティティ・プロバイダを使用したHTTPリクエストおよびレスポンスのエンティティ・ボディのマッピングに関する項を参照してください。

「RESTfulサービスの作成」ウィザード(Javaクラスを右クリックして、「RESTfulサービスの作成」を選択)を使用して、既存のJavaクラスからRESTful Webサービスを作成するときに、自動的にサポートされない型を使用するメソッドがクラスに含まれている場合は、次の警告メッセージが表示されます。

The return types for the following methods are not supported automatically for 
HTTP response entities and require entity providers to map between 
representations and Java types. Check and correct the code after the service is 
generated. 
methodName

次のコード抜粋は、カスタム・タイプを返すためエンティティ・プロバイダの作成が必要になるメソッド(getClass)が含まれたクラスの例です。

public class Class1
{
  public String hello() { return "Hello"; }
  public Class2 getClass(String name) { return new Class2(); };
}
 
public class Class2
{
  public Class2() { }
}

注意:

Jersey JSONには、jersey-jsonモジュールとともに配布されるJAX-RS MessageBodyReaderプロバイダおよびMessageBodyWriterプロバイダのセットが用意されています。詳細は、『Jersey User Guide』の「JSON Support」(http://jersey.java.net/documentation/1.18/json.html)を参照してください。

アプリケーションで必要であれば、製品にバンドルされているJAX-RS Jersey Jacksonをプロジェクトに追加できます。プロジェクトへのライブラリの追加の詳細は、第4.3.12項「ライブラリの管理方法」を参照してください。


20.5.1.8 RESTful WebサービスのWADLへのアクセス

Web Application Description Language (WADL)は、RESTful Webサービス・アプリケーションを記述するXMLベースのファイル形式です。デフォルトでは、基本WADLが実行時に生成され、JDeveloperからアクセスできます。

RESTful WebサービスのWADLにアクセスする手順は次のとおりです。

  1. 「アプリケーション」ウィンドウでサービスを右クリックし、「Webサービスのテスト」を選択します。

    JDeveloperが自動的に次のように動作します。

    • まだ実行されていない場合には、統合アプリケーション・サーバーを起動します。

    • Webサービス・アプリケーションをコンパイルして統合アプリケーション・サーバー・インスタンスにバインドします。これは「アプリケーション・サーバー」ウィンドウのIntegratedWebLogicServerノードです。

    • 統合アプリケーション・サーバーのログ・ウィンドウを表示します(ログ・ウィンドウがまだ開かれていない場合)。

  2. 統合アプリケーション・サーバーのログ・ウィンドウに表示される「ターゲット・アプリケーションWADL --」をクリックします。次に例を示します。

    この図は周囲のテキストで説明しています

注意:

「HTTPアナライザ」ウィンドウからWADLを表示するには、「HTTPアナライザ」ウィンドウで「WADL URI」をクリックします。

図20-1に示すように、読取り専用バージョンのWADLファイルがソース・エディタで開きます。

図20-1 WADLファイルの例

この図については周囲のテキストで説明しています。

この図は、RESTful Webサービスのリソース、サブリソースおよびメソッドなどのWADLファイル構造を示しています。「テスト」を押してHTTPアナライザを起動できます。

次のビューを切り替えることができます。

  • プレビュー: 次の作業を行うことができます。

    • RESTful Webサービスのリソースおよびサブリソースのサマリーを表示します。

    • 各リソースにマップされたメソッドと、リクエストおよびレスポンスの表現およびステータスを表示します。

    • 「テスト」ボタンをクリックしてHTTPアナライザを起動し、各メソッドをテストします。

  • ソース: WADLのソースを表示します。

20.5.2 RESTful Webサービス・クライアントの作成方法

JDeveloperでは、「RESTfulプロキシ・クライアントの作成」ウィザードを使用してRESTful Webサービスにアクセスするためのクライアントおよびプロキシ・クラスを作成することにより、アプリケーションでのRESTful Webサービスの使用が容易になります。このウィザードは、RESTful Webサービスを検索または作成するときに起動できます。または直接ウィザードを起動して、RESTful WebサービスのURLを入力したり、「Webサービスの検索」ウィザードを使用してUDDIレジストリ内のRESTful Webサービスを検索することもできます。

第20.2.5項「デプロイメント・プラットフォームの選択方法」の説明に従って、「RESTfulプロキシ・クライアントの作成」ウィザードを使用してRESTful Webサービス・クライアントを作成する場合、デプロイメント・プラットフォームの選択が求められ、Jersey 1.18 (JAX-RS 1.1)またはJersey 2.5 (JAX-RS 2.0 RI)を選択できます。

Jersey JAX-RSライブラリは、プロジェクトに自動的に追加されます。アプリケーションで必要であれば、製品にバンドルされているJAX-RS Jersey JacksonライブラリまたはJAX-RS Jersey Jettisonライブラリをプロジェクトに追加できます。(The Jersey JAX-RS Romeライブラリは製品にバンドルされていません。)プロジェクトへのライブラリの追加の詳細は、第4.3.12項「ライブラリの管理方法」を参照してください。

Jersey 2.5.1 (JAX-RS 2.0 RI)共有ライブラリは、統合WebLogic Serverに自動デプロイされます。RESTfulサービスとクライアントをスタンドアロンのWebLogic Serverにデプロイする際に、共有ライブラリを手動で登録する必要があります。共有ライブラリの登録の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「Jersey 2.5.1 (JAX-RS 2.0リファレンス実装)の登録」を参照してください。

次のことに注意してください。

  • Jersey 1.18 (JAX-RS 1.1 RI)の場合、RESTful Webサービス・クライアントAPIは、具体的にはJersey JAX-RS RIによって提供されます。つまり、これらはJAX-RS標準の一部ではありません。

    Jersey 2.5.1 (JAX-RS 2.0 RI)の場合、標準クライアントAPIがサポートされます。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「Jersey 2.5.1 (JAX-RS 2.0リファレンス実装)の登録」を参照してください。

  • Jersey 1.18 (JAX-RS 1.1 RI)のみを使用して構築されるRESTful WebサービスおよびクライアントにOWSMポリシーをアタッチできます。このリリースでは、Jersey 2.5.1 (JAX-RS 2.0 RI)を使用して構築されるRESTful Webサービスおよびクライアントは、OWSMポリシーを使用して保護できません。Jersey 2.5.1 (JAX-RS 2.0 RI)を使用して構築されるRESTful Webサービスとクライアントの保護の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「RESTful Webサービスおよびクライアントの保護」を参照してください。

次の各項では、RESTful Webサービスを開発する方法について説明します。

詳細は、次の資料を参照してください。

  • RESTful Webサービス・クライアントの開発の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「RESTful Webサービスおよびクライアントの開発」を参照してください。

  • RESTful Webサービス・クライアントの保護の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のRESTful Webサービスの保護に関する項を参照してください。

  • RESTful Webサービス・クライアントの管理の詳細は、Webサービスの管理を参照してください。

  • Jersey 2.5.1 (JAX-RS 2.0 RI)の使用の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「Jersey 2.5.1 (JAX-RS 2.0リファレンス実装)の登録」を参照してください。

20.5.2.1 単純なRESTfulクライアントの例

例20-2は、例20-2で定義したRESTfulサービスをコールする単純なRESTfulクライアントを示しています。この例では、具体的にはJersey 1.18 (JAX-RS 1.1 RI)によって提供されるクラスを使用しています。これらはJAX-RS標準の一部ではありません。


注意:

または、com.sun.jersey.api.client.Clientクラスのインスタンスを作成できます。ただし、Oracle Web Services Manager (OWSM)ポリシーを使用したRESTfulクライアントの保護などのOracle拡張機能は使用できません。詳細は、第20.7.4.2項「RESTful Webサービス・クライアントへのポリシーのアタッチ」を参照してください。

Jersey 2.5.1 (JAX-RS 2.0 RI)の場合、標準クライアントAPIがサポートされます。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「Jersey 2.5.1 (JAX-RS 2.0リファレンス実装)の登録」を参照してください。


例20-2 単純なRESTfulサービス・クライアントの例: Jersey 1.18 (JAX-RS 1.1 RI)

package samples.helloworld.client;

import weblogic.jaxrs.api.client.Client;
import com.sun.jersey.api.client.WebResource;

public class helloWorldClient {
   public helloWorldClient() {
      super();
   }

   public static void main(String[] args) {
      Client c = Client.create();
      WebResource resource = c.resource(
            "http://localhost:7101/RESTfulService/jersey/helloWorld");
      String response = resource.get(String.class);
   }
}

20.5.2.2 RESTful Webサービス・クライアントの作成

「RESTfulプロキシ・クライアントの作成」ウィザードを使用して、リモートまたはローカルの既存のWADLから新しいRESTful Webサービス・クライアントを作成できます。

RESTful Webサービス・クライアントを作成する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、RESTful Webサービスの作成元として使用するJavaクラスが含まれるプロジェクトを選択します。

  2. 「ファイル」→「新規」→「ギャラリから」を選択して「新規ギャラリ」を開きます。

  3. 「カテゴリ」リストで「ビジネス層」を開き、「Webサービス」を選択します。

  4. 「項目」リストで「RESTfulクライアントおよびプロキシ」を選択し、「OK」をクリックして、「RESTfulプロキシ・クライアントの作成」ウィザードを起動します。

    ウィザードの操作の詳細なヘルプを参照するには、ウィザード内で[F1]を押すか「ヘルプ」をクリックします。

20.6 WebSocketの作成

WebLogic Serverでは、WebSocketプロトコル(RFC 6455)をサポートします。これは、TCPプロトコル経由で、2つのピア間の全二重通信を可能にします。

WebSocketプロトコル実装とそれに付随するAPIのWebLogic Server実装により、クライアントと双方向で通信するアプリケーションを開発してデプロイできます。WebSocket接続を開始するために、クライアントは、サーバーにハンドシェイク・リクエストを送信します。ハンドシェイク・リクエストが検証に成功し、サーバーがリクエストを受け入れると、接続が確立されます。WebSocket接続が作成されると、ブラウザ・クライアントは、WebLogic Serverインスタンスにデータを送信し、同時にそのサーバー・インスタンスからのデータを受信します。

どのようなタイプのクライアント/サーバー通信にもWebSocketプロトコルを使用できますが、実装は、通常、World Wide Web Consortium (W3C) JavaScript WebSocket APIを使用するWebページを実行するブラウザとの通信に使用されます。HTML5仕様(http://www.w3.org/TR/html5/)の一部として、WebSocketプロトコルは、ほとんどのブラウザでサポートされます。WebSocketプロトコルのWebLogic Server実装では、Javaクライアントもサポートされます。

WebSocketリファレンス実装RIのJSR 356 Java APIはWebLogic Serverでサポートされており、これを使用すると、WebアプリケーションでのWebSocketエンドポイントの作成、構成およびデプロイが可能です。APIには次のパッケージが含まれています。

  • javax.websocket.server: サーバーのエンドポイントを作成および構成します。

  • javax.websocket: クライアントを作成し、クライアントとサーバーのエンドポイントを構成します。

WebSocketプロトコルと、WebLogic Serverに対するそのサポートの詳細は、次を参照してください。

次の項では、JDeveloperを使用したWebSocketの構成について詳しく説明します。

20.6.1 「プロパティ」ウィンドウでのWebSocketの構成方法

「プロパティ」ウィンドウでWebSocketを構成できます。

「プロパティ」ウィンドウでWebSocketを構成するには:

  1. WebSocketプロジェクトを作成します。

    事前構成済の機能によるプロジェクトの作成の詳細は、第4.2.2項「プロジェクトの作成方法」を参照してください。

  2. Javaクラスを作成します。

    詳細は、第8.3.1項「新規Javaクラスまたはインタフェースの作成方法」を参照してください。

  3. ソース・エディタでJavaクラスを開いた状態で、「ウィンドウ」→「プロパティ」を選択して、「プロパティ」ウィンドウを開きます。

    詳細を参照するには、「プロパティ」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  4. publicクラス内にカーソルを置いた状態で、「プロパティ」ウィンドウの「Webソケット」ノードに移動します。

  5. 次のように選択します。

    • 「Webソケット・クライアント」を選択して、WebSocketクライアントを構成します。この場合、サービスが更新されて@ClientEndpoint注釈が含められ、javax.websocket.ClientEndpoint APIがインポートされます。

      「Webソケット・サービス」を選択して、WebSocketサービスを構成します。この場合、サービスが更新されて@ServiceEndpoint注釈が含められ、javax.websocket.server.ServerEndpoint APIがインポートされます。デフォルトでは、URIテンプレートのエンドポイント名はserviceに設定されます。

  6. オプションで、次の表で定義されるWebSocketエンドポイント・プロパティを構成します。プロパティを構成すると、属性は@ClientEndpoint注釈(WebSocketクライアントの場合)または@ServiceEndpoint注釈(WebSocketサービスの場合)に追加されます。

    表20-9 WebSocketサーバーのエンドポイント・プロパティ

    プロパティ 注釈属性 説明

    URIテンプレート

    value

    サーバーのエンドポイントがデプロイされる相対URIパス。

    注意: このプロパティは、WebSocketサービスの場合のみ利用可能です。

    カスタム・コンフィギュレータ

    configurator

    ServerEndpointConfiguration.Configuratorのカスタム実装。

    デコーダ

    decoders

    メッセージ・デコーダのクラス名のリスト。

    エンコーダ

    encoders

    メッセージ・エンコーダのクラス名のリスト。

    サポートされているサブ・プロトコル

    subprotocols

    サポートされているサブ・プロトコルのリスト。


20.6.2 注釈を使用したWebSocketの構成方法

WebSocket (JSR-356)のJava APIを使用すると、WebアプリケーションでのWebSocketエンドポイントの作成、構成およびデプロイが可能です。JSR-356で指定されるWebSocketクライアントAPIを使用しても、JavaアプリケーションからリモートWebSocketエンドポイントにアクセスできます。

WebSocketエンドポイントの作成およびデプロイのプロセスは次のようになります。詳細は、『Oracle WebLogic Serverアプリケーションの開発』の「WebLogic ServerでのWebSocketプロトコルの使用」を参照してください。

  1. エンドポイント・クラスを作成します。

    WebSocketのJava APIを使用すると、次の種類のエンドポイントを作成できます。

    • 注釈付きエンドポイント

    • プログラム的エンドポイント

    詳細は、『Oracle WebLogic Serverアプリケーションの開発』のエンドポイントの作成に関する項を参照してください。

  2. エンドポイントのライフサイクル・メソッドを実装します。

    エンドポイント・クラスにメソッドを追加してイベントを処理し、それをハンドラとして指定するようにそのメソッドに注釈を付けます。詳細は、『Oracle WebLogic Serverアプリケーションの開発』のWebLogic接続のライフサイクル・イベントの処理に関する項を参照してください。

  3. エンドポイントにビジネス・ロジックを追加します。

  4. Webアプリケーション内にエンドポイントをデプロイします。

    詳細は、『Oracle WebLogic Serverアプリケーションの開発』のWebSocketアプリケーションのデプロイに関する項を参照してください。

  5. WebSocketクライアント・アプリケーションを作成します。

    詳細は、『Oracle WebLogic Serverアプリケーションの開発』のWebSocketクライアントの作成に関する項を参照してください。

WebSocket APIを使用したWebSocketサービスおよびクライアント・アプリケーションの作成と構成の詳細および例は、『Oracle WebLogic Serverアプリケーションの開発』の「WebLogic ServerでのWebSocketプロトコルの使用」を参照してください。

20.6.3 WebSocket接続のテスト方法

WebSocketアプリケーションを実行する場合、接続をテストするには、統合アプリケーション・サーバーのログ・ウィンドウに表示される「ターゲットURL」をクリックします。WebSocket接続を利用できる場合、次のメッセージが表示されます。

Connected successfully

20.7 ポリシーのアタッチ

次の各項では、Webサービスおよびクライアントにポリシーをアタッチする方法と、カスタムWebサービス・ポリシーを使用するようにポリシー・リポジトリを構成する方法について説明します。

20.7.1 OWSMポリシーに関する必知事項

OWSMポリシーは、ポート・レベルでJAX-WS Webサービスにアタッチでき、サーブレット・レベルでRESTful Webサービスにアタッチできます。


注意:

Jersey 1.x JAX-RS RIのみを使用して構築されるRESTful WebサービスおよびクライアントにOWSMポリシーをアタッチできます。このリリースでは、Jersey 2.5.1 (JAX-RS 2.0 RI)を使用して構築されるRESTful Webサービスおよびクライアントは、OWSMポリシーを使用して保護できません。Jersey 2.5.1 (JAX-RS 2.0 RI)を使用してRESTful Webサービスとクライアントを保護する場合の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「RESTful Webサービスおよびクライアントの保護」を参照してください。

JDeveloperは、「プリファレンス」ダイアログの「WSポリシー」ページにあるデフォルトの場所で設定されたOWSMポリシー・ストアを使用するよう事前構成されています。この場所には、次のいずれかの方法でアクセスできます。

  • 「ツール」→「プリファレンス」→「WSポリシー・ストア」

  • 「アプリケーション」→「アプリケーションのプロパティ」→「WSポリシー・ストア」

自社のカスタムOWSMポリシーを使用するために別のポリシー・ストアの場所を指定できます。詳細は、第20.7.5項「異なるOWSMポリシー・ストアの使用方法」を参照してください。

OWSMポリシーの詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理を参照してください。


注意:

アタッチされたOWSMポリシーが実施されるようにするには、Webサービス・プロバイダをWSDLファイルでデプロイする必要があります。WSDLを使用してWebサービス・プロバイダをデプロイするには、@WebServiceProvider注釈にwsdlLocation要素を使用します。

20.7.2 Oracle WebLogic Webサービス・ポリシーに関する必知事項

Oracle WebLogic Webサービス・ポリシーは、ポート・レベルまたは操作レベルでJAX-WS Webサービスにアタッチできます。Oracle WebLogic Webサービス・ポリシーを使用すると、ポリシーの使用方向を指定できます。たとえば、インバウンド(リクエスト)メッセージまたはアウトバウンド(レスポンス)メッセージ、あるいはその両方に適用できます。

自社のOracle WebLogicのカスタムWebサービス・ポリシーを使用するようJDeveloperを構成できます。詳細は、第20.7.6項「カスタムWebサービス・ポリシーの使用方法」を参照してください。

詳細は、Oracle WebLogic Server WebLogic Webサービスの保護を参照してください。

20.7.3 JAX-WS Webサービスおよびクライアントへのポリシーのアタッチ方法

この項では、JDeveloperで作成されたJAX-WS Webサービスおよびクライアントにポリシーをアタッチする方法について説明します。次のタイプのポリシーを使用できます。

  • Oracle Web Service Manager (OWSM)ポリシー: セキュリティ・ポリシーのみをアタッチできます。

  • Oracle WebLogic Webサービス・ポリシー

2つのタイプのポリシーを同じWebサービスに混在させることはできないため、計画段階でどちらを使用するかを決定する必要があります。1つのタイプのポリシーをWebサービスに追加したら、現在アタッチされているポリシーを削除せずに他のタイプに切り替えることはできません。たとえば、OWSMポリシーを構成した後、Oracle WebLogic Webサービス・ポリシーを使用する必要がある場合、Oracle WebLogic Webサービス・ポリシーをアタッチする前にOWSMポリシーを削除する必要があります。

次の項では、Webサービスとともにポリシーを使用する方法について説明します。

作業を始める前に、次のようにします。

ポリシーを使用するために実行する必要のあるすべてのタスクについて、詳細な検討はこのガイドの範囲外ですが、一般的に実行が必要なステップは、次のとおりです。

  1. 使用するポリシーを決定します。詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の「使用する事前定義済ポリシーの決定」を参照してください。

  2. クラスまたはサービスにポリシーをアタッチします。詳細は、第20.7.3.1項「JAX-WS Webサービスへのポリシーのアタッチ」を参照してください。

  3. 正しいキーストアおよびポリシーによる処理が必要な他の情報を使用してサーバーを構成し、サーバーにWebサービスをデプロイします。詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の「Webサービスの保護」を参照してください。

  4. Webサービスをテストし、ポリシーが予想どおりに動作することを確認します。詳細は、第20.9.1項「ブラウザでのWebサービスのテスト方法」を参照してください。

20.7.3.1 JAX-WS Webサービスへのポリシーのアタッチ

JDeveloperでは、Oracle Web Service Manager (OWSM)ポリシーまたはOracle WebLogic Webサービス・ポリシーをWebサービスにアタッチできます。

Webサービスにポリシーをアタッチした後、ポリシーを構成する必要があります。詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の「Webサービスの保護」を参照してください。

次の項で説明するように、Webサービスにポリシーをアタッチできます。

20.7.3.1.1 「Webサービス」ウィザードでのポリシーのアタッチ

新規Webサービスの作成時にWebサービス・ウィザードでアタッチするポリシーを設定するか、すでに存在するWebサービスの更新時にWebサービス・エディタでアタッチするポリシーを設定することで、Webサービスにポリシーをアタッチできます。

「Java Webサービスの作成」ウィザードを使用したWebサービスの作成の詳細は、第20.4.1.1項「Java Webサービスの作成」を参照してください。

Webサービス・ウィザードでポリシーをアタッチする手順は次のとおりです。

「Java Webサービスの作成」ウィザードまたはWebサービス・エディタで、「ポリシーの構成」ページにナビゲートします。詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

OWSMポリシーをアタッチする場合、次の方法により、ポリシーおよびそのアサーションに関する詳細を表示できます。

  • 「説明の表示」チェック・ボックスをクリックし、各ポリシーの説明を表示します。

  • 「表示」をクリックし、ポリシー・ファイル内のポリシー・アサーションをレビューします。

  • 「選択されたポリシーの表示」チェック・ボックスをクリックし、現在選択されているポリシーのみを表示します。

20.7.3.1.2 注釈を使用したポリシーのアタッチ

Javaクラスでポリシー注釈を直接追加して、Webサービスにポリシーをアタッチできます。コード・インサイト機能が役に立ちます(第20.2.6項「Webサービスのコード・インサイトの使用方法」を参照)。

Javaクラスでポリシー注釈をアタッチするには、次のようにします。

  1. ソース・エディタでWebサービス・クラスを開きます。

  2. コード・インサイトを使用すると役に立ちます。

    注釈(@SecurityPolicyなど)の入力を開始します。中断するか[Alt]キーを押しながら[Enter]キーを押すと、ポップアップが表示され、文を正しく完成するためのエントリを選択できます。

OWSMポリシーをアタッチするための注釈

Javaクラスでweblogic.wsee.jws.jaxws.owsm.SecurityPolicy注釈を使用して単一のポリシーをアタッチできます。次はその例です。

@SecurityPolicy(uri = "oracle/wss11_message_protection_service_policy")

複数の@SecurityPolicy要素が含まれるweblogic.wsee.jws.jaxws.owsm.SecurityPolicies注釈を使用して、複数のポリシーをコンポジットとしてアタッチできます。次はその例です。

@SecurityPolicies( { 
   @SecurityPolicy(uri = "oracle/wss_http_token_service_policy"), 
   @SecurityPolicy(uri = "oracle/wss_oam_token_service_policy")
} )

注意:

有効なポリシーのリストを表示するには、uri=""と入力して、空の引用符の中にカーソルを置き、[Ctrl]キーと[Alt]キーを押しながら[Space]キーを押します。

ポリシー注釈の使用の詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の注釈を使用したJava EE Webサービスおよびクライアントへのポリシーのアタッチに関する項を参照してください。

WebLogic Webサービス・ポリシーをアタッチするための注釈

Javaクラスでweblogic.jws.Policy注釈を使用して単一のポリシーをアタッチできます。次はその例です。

@Policy(uri = "policy:Wssp1.2-2007-Https-UsernameToken-Plain.xml")

複数の@Policy要素が含まれるweblogic.jws.Policies注釈を使用して、複数のポリシーをコンポジットとしてアタッチできます。次はその例です。

@Policies( { 
   @Policy(uri = "policy:Wssp1.2-2007-Https-BasicAuth.xml"), 
   @Policy(uri = "policy:Wssp1.2-2007-Https-UsernameToken-Plain.xml")
} )

注意:

有効なポリシーのリストを表示するには、uri=""引数を入力して、空の引用符の中にカーソルを置き、[Ctrl]キーと[Alt]キーを押しながら[Space]キーを押します。

ポリシー注釈の詳細は、『Oracle WebLogic Server WebLogic Webサービスの保護』の@Policy注釈と@Policies注釈を使用したJWSファイルの更新に関する項を参照してください。

20.7.3.1.3 「プロパティ」ウィンドウでのポリシーのアタッチ

「プロパティ」ウィンドウを使用して、Webサービスにポリシーをアタッチできます。

「プロパティ」ウィンドウでのポリシーをアタッチする手順は次のとおりです。

  1. ソース・エディタでWebサービス・クラスを開いた状態で、「ウィンドウ」→「プロパティ」を選択して「プロパティ」ウィンドウを開きます。

    詳細を参照するには、「プロパティ」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  2. クラスのpublic class行または@WebService行にカーソルがある状態で、「ポリシー」ノードに移動します。このノードでOWSMポリシーまたはOracle WebLogic Webサービス・ポリシーの使用を選択できます。

  3. 「OWSMポリシーで保護」または「WLSポリシーで保護」を選択します。

    「プロパティ」ウィンドウがリフレッシュされ、選択したポリシー・タイプ(OWSMまたはWLS)に対して単一のポリシーまたは複数のポリシーを選択するオプションが表示されます。


    注意:

    同じWebサービスで両方のタイプのポリシーを使用することはできません。間違ったタイプを選択した場合は、JAX-WSクラスからポリシー文が含まれる行を削除し、再度選択できるようにしてください。

  4. 「単一ポリシー」リストから単一のポリシーを選択するか、「プロパティの編集: 複数ポリシー」ダイアログで複数のポリシーをアタッチする場合は「...」をクリックします。

    「プロパティの編集: 複数ポリシー」ダイアログを使用して複数のOWSMポリシー・ファイルをアタッチする場合、「表示」をクリックしてポリシー・ファイル内のポリシー・アサーションをレビューします。

20.7.3.2 JAX-WS Webサービス・クライアントへのOWSMポリシーのアタッチ

JDeveloperでは、OWSMポリシーをJAX-WS Webサービス・クライアントにアタッチできます。

Webサービス・クライアントにOWSMポリシーをアタッチした後、ポリシーを構成する必要があります。詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の「Webサービスの保護」を参照してください。


注意:

WebLogic Webサービス・ポリシーを使用するWebサービスを起動するためのクライアント・アプリケーションの更新の詳細は、『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ保護付きWebサービスを起動するためのクライアント・アプリケーションの更新に関する項を参照してください。

Webサービス・クライアントにOWSMポリシーをアタッチする方法は、次のとおりです。

20.7.3.2.1 「Webサービス・クライアントおよびプロキシ」ウィザードでのOWSMポリシーのアタッチ

新規Webサービス・クライアントの作成時に「Webサービス・クライアントおよびプロキシ」ウィザードでアタッチするポリシーを設定するか、すでに存在するWebサービス・クライアントの更新時にWebサービス・クライアント・エディタでアタッチするポリシーを設定することで、Webサービス・クライアントにポリシーをアタッチできます。

「Webサービス・クライアントおよびプロキシの作成」ウィザードを使用したWebサービスの作成の詳細は、第20.4.3.1項「クライアントおよびプロキシ・クラスの作成」を参照してください。

Webサービス・クライアントでOWSMポリシーをアタッチする手順は次のとおりです。

「Webサービス・クライアントおよびプロキシの作成」ウィザードまたはクライアント・エディタで、「クライアント・ポリシー構成」ページに移動します。詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

OWSMポリシーをアタッチする場合、次の方法により、ポリシーおよびそのアサーションに関する詳細を表示できます。

  • 「説明の表示」チェック・ボックスをクリックし、各ポリシーの説明を表示します。

  • 「表示」をクリックし、ポリシー・ファイル内のポリシー・アサーションをレビューします。

  • 「選択されたポリシーの表示」チェック・ボックスをクリックし、現在選択されているポリシーのみを表示します。

  • 「選択用に互換性のあるクライアント・ポリシーのみ表示。」チェック・ボックスをクリックし、関連するWebサービスと互換性のあるポリシーを表示します。

20.7.3.2.2 注釈を使用したOWSMポリシーのアタッチ

インジェクション・ターゲット(@WebServiceRef)にポリシー注釈を直接追加して、Webサービスにポリシーをアタッチできます。次のいずれかの注釈を使用します。

  • @weblogic.wsee.jws.jaxws.owsm.SecurityPolicy注釈(単一のポリシーをアタッチする場合)

  • @weblogic.wsee.jws.jaxws.owsm.SecurityPolicies注釈(複数のポリシーをアタッチする場合)

注釈を使用してOWSMセキュリティ・ポリシーをWebサービス・クライアントにアタッチする例を次に示します。

例20-3 注釈を使用したクライアントへのOWSMポリシーのアタッチ

package wsrm_jaxws.example;
import java.xml.ws.WebService;
import java.xml.ws.WebServiceRef;
import weblogic.wsee.jws.jaxws.owsm.SecurityPolicy;
import weblogic.wsee.jws.jaxws.owsm.SecurityPolicies;
import oracle.wsm.security.util.SecurityConstants.ClientConstants;
...
@WebServiceRef(name="MyServiceRef")
@SecurityPolicies({
   @SecurityPolicy(uri="policy:oracle/wss10_message_protection_client_policy"),
   @SecurityPolicy(uri="policy:oracle/authorization_policy")
})
Service service;
...

詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の注釈を使用したJava EE Webサービスおよびクライアントへのポリシーのアタッチに関する項を参照してください。


注意:

機能クラスを使用したOWSMポリシーのアタッチは、注釈を使用したアタッチよりも優先されます(第20.7.3.3.3項「RequestContextを使用したOWSMポリシー構成プロパティのオーバーライド」を参照)

注釈を使用してOWSMポリシーをアタッチする手順は次のとおりです。

  1. ソース・エディタでWebサービス・クライアントを開きます。

  2. インジェクション・ターゲット行にカーソルを置いてマウスを右クリックし、ポップアップ・メニューから「JEEクライアント・ポリシー注釈の追加」を選択します。

    「クライアント・ポリシー構成」ウィンドウが開き、OWSMセキュリティ・ポリシーのリストが表示されます。

  3. クライアントにアタッチするセキュリティ・ポリシーを選択します。

    OWSMポリシーをアタッチする場合、次の方法により、ポリシーおよびそのアサーションに関する詳細を表示できます。

    • 「説明の表示」チェック・ボックスをクリックし、各ポリシーの説明を表示します。

    • 「表示」をクリックし、ポリシー・ファイル内のポリシー・アサーションをレビューします。

    • 「選択されたポリシーの表示」チェック・ボックスをクリックし、現在選択されているポリシーのみを表示します。

    • 「選択用に互換性のあるクライアント・ポリシーのみ表示。」チェック・ボックスをクリックし、関連するWebサービスと互換性のあるポリシーを表示します。

  4. 「OK」をクリックします。

    該当する注釈によってクライアント・コードが更新されます。

20.7.3.2.3 機能クラスを使用したOWSMポリシーのアタッチ

次の機能クラスのいずれかをWebサービス・クライアントに手動で追加して、Webサービスにポリシーをアタッチできます。

  • weblogic.wsee.jws.jaxws.owsm.SecurityPolicyFeatureクラス(単一のポリシーをアタッチする場合)

  • weblogic.wsee.jws.jaxws.owsm.SecurityPoliciesFeature(複数のポリシーをアタッチする場合)

次の例は、SecurityPolicyFeatureクラスを使用してWebサービス・クライアントに1つのOWSMポリシーをアタッチする方法を示しています。

例20-4 SecurityPolicyFeatureを使用したクライアントへのOWSMポリシーのアタッチ

...
JAXWSService jaxWsService = new JAXWSService ();
weblogic.wsee.jws.jaxws.owsm.SecurityPolicyFeature securityFeature = new
weblogic.wsee.jws.jaxws.owsm.SecurityPolicyFeature {
new weblogic.wsee.jws.jaxws.owsm.SecurityPolicyFeature("policy:oracle/wss_username_token__over_ssl_client_policy") };
 
JAXWSServicePort  port =  jaxWsService.getJaxWsServicePort(securityFeature);
...

次の例は、SecurityPoliciesFeatureクラスを使用してWebサービス・クライアントに複数のOWSMポリシーをアタッチする方法を示しています。

例20-5 SecurityPoliciesFeatureを使用したクライアントへのOWSMポリシーのアタッチ

...
weblogic.wsee.jws.jaxws.owsm.SecurityPoliciesFeature 
securityFeature = new weblogic.wsee.jws.jaxws.owsm.SecurityPoliciesFeature 
(new String[] { "policy:oracle/wss_username_token_over_ssl_client_policy", 
"policy:oracle/authorization_policy"});

詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の機能クラスを使用したJava EE Webサービス・クライアントへのポリシーのアタッチに関する項を参照してください。


注意:

機能クラスを使用したOWSMポリシーのアタッチは、注釈を使用したアタッチよりも優先されます(第20.7.3.3.2項「注釈を使用したOWSMポリシー構成プロパティのオーバーライド」を参照)。

20.7.3.3 JAX-WS Webサービス・クライアントのOWSMポリシー構成プロパティのオーバーライド

JDeveloperでは、JAX-WS Webサービス・クライアントにアタッチされたポリシーの構成プロパティをオーバーライドできます。

Webサービス・クライアントにOWSMポリシーをアタッチする方法は、次のとおりです。

20.7.3.3.1 「Webサービス・クライアントおよびプロキシ」ウィザードでのOWSMポリシー構成プロパティのオーバーライド

「Webサービス・クライアントおよびプロキシ」ウィザードを使用してWebサービス・クライアントにポリシーをアタッチするときに、「クライアント・ポリシー構成」ページで、「プロパティのオーバーライド...」を選択して、「プロパティのオーバーライド」ダイアログを表示します。選択したポリシーの構成プロパティが表示されます。必要に応じて値を設定し、「OK」をクリックします。

「Webサービス・クライアントおよびプロキシの作成」ウィザードまたはクライアント・エディタで、「クライアント・ポリシー構成」ページに移動し、「プロパティのオーバーライド...」を選択します。「オーバーライド・プロパティの設定」ダイアログが表示されます。このダイアログで、選択したポリシーの構成プロパティを編集できます。詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

「Webサービス・クライアントおよびプロキシの作成」ウィザードを使用したWebサービスの作成の詳細は、第20.4.3.1項「クライアントおよびプロキシ・クラスの作成」を参照してください。

20.7.3.3.2 注釈を使用したOWSMポリシー構成プロパティのオーバーライド

@SecurityPolicy注釈を使用してOWSMセキュリティ・ポリシーをアタッチする場合、@Property注釈を使用して設計時にOWSMセキュリティ・ポリシーのデフォルト構成プロパティをプログラムによってオーバーライドできます。詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の注釈を使用したJava EE Webサービスおよびクライアントへのポリシーのアタッチに関する項を参照してください。

次の例は、注釈を使用してWebサービス・クライアントにポリシーをアタッチする方法を示しています。この例では、@Property注釈は、クライアント・ポリシーをアタッチする際のキーストア受信者の別名の構成プロパティのオーバーライドに使用されます。

例20-6 注釈を使用したOWSMポリシー構成プロパティのオーバーライド

package wsrm_jaxws.example;
import java.xml.ws.WebService;
import java.xml.ws.WebServiceRef;
import weblogic.wsee.jws.jaxws.owsm.SecurityPolicy;
import weblogic.wsee.jws.jaxws.owsm.SecurityPolicies;
import oracle.wsm.security.util.SecurityConstants.ClientConstants;
...
@WebServiceRef(name="MyServiceRef")
@SecurityPolicies({
   @SecurityPolicy(uri="policy:oracle/wss10_message_protection_client_policy",
          properties = { 
             @Property(name="ClientConstants.WSS_KEYSTORE_LOCATION", 
                value="c:/mykeystore.jks")
          }
   ),
   @SecurityPolicy(uri="policy:oracle/authorization_policy")
})
Service service;
...
20.7.3.3.3 RequestContextを使用したOWSMポリシー構成プロパティのオーバーライド

次の機能クラスのいずれかをWebサービス・クライアントに手動で追加して、Webサービスにポリシーをアタッチできます。

  • weblogic.wsee.jws.jaxws.owsm.SecurityPolicyFeatureクラス(単一のポリシーをアタッチする場合)

  • weblogic.wsee.jws.jaxws.owsm.SecurityPoliciesFeature(複数のポリシーをアタッチする場合)

詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の設計時のクライアント・ポリシー構成プロパティのオーバーライドに関する項を参照してください。

20.7.3.4 WebLogic Webサービス・ポリシーを使用して保護されたJAX-WS Webサービスの起動

WebLogic Webサービス・ポリシーを通知するWSDLからWebサービス・クライアントを作成または編集する場合、Webサービスを呼び出すための資格証明を構成できます。

WebLogic Webサービス・ポリシーを使用して保護されたWebサービスを起動する手順は次のとおりです。

  1. 次のタスクのいずれかを実行します。

  2. ウィザードの「資格証明の選択」ページにナビゲートします。

  3. ドロップダウン・リストから既存の資格証明セットを選択するか、「新規」をクリックして新規の資格証明セットを定義します。

    ウィザードの操作のヘルプを参照するには、ウィザード内で[F1]を押すか「ヘルプ」をクリックします。

  4. ウィザードを完了します。

クライアント・クラスが更新され、クライアント資格証明を設定するためのメソッドが組み込まれます。追加された後、資格証明値は必要に応じて変更できます。

次の例は、生成されてクライアント・クラスに組み込まれるコードを示しています。

@Generated("Oracle JDeveloper")
public static void setPortCredentialProviderList(
      Map<String, Object> requestContext) throws Exception 
{
   // Values used from credential preference: TestCredential
   String username = "weblogic";
   String password = "weblogic1";
   String clientKeyStore = "/C:/temp/ClientIdentity.jks";
   String clientKeyStorePassword = "ClientKey";
   String clientKeyAlias = "identity";
   String clientKeyPassword = "ClientKey";
   String serverKeyStore = "/C:/temp/ServerIdentity.jks";
   String serverKeyStorePassword = "ServerKey";
   String serverKeyAlias = "identity";
   List<CredentialProvider> credList = new ArrayList<CredentialProvider>();
  
   // Add the necessary credential providers to the list
   credList.add(getUNTCredentialProvider(username, password));
   credList.add(getBSTCredentialProvider(clientKeyStore, clientKeyStorePassword,
      clientKeyAlias, clientKeyPassword, serverKeyStore, 
      serverKeyStorePassword, serverKeyAlias, requestContext));
   credList.add(getSAMLTrustCredentialProvider());
   requestContext.put(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credList);
}

WebLogic Webサービス・ポリシーを使用して保護されたWebサービスを呼び出すようWebサービス・クライアントをプログラミングする方法の詳細は、『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ保護付きWebサービスを起動するためのクライアント・アプリケーションの更新に関する項を参照してください。

20.7.3.5 JAX-WS Webサービスのポリシーの編集または削除

次のいずれかの方法を使用して、ポリシーを編集したりWebサービスからポリシーを完全に削除できます。

20.7.3.5.1 Webサービス・エディタを使用したポリシーの編集または削除

Webサービス・エディタを使用してポリシーを編集または削除できます。

Webサービス・エディタを使用してポリシーを編集または削除する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウでWebサービスを右クリックして、「Webサービス・プロパティ」を選択します。

    詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

  2. 「ポリシーの構成」ページに移動します。ここで、選択したポリシー・タイプのポリシーを変更したり、別のタイプのポリシーを使用するよう変更(たとえば、OWSMポリシーからOracle WebLogic Webサービス・ポリシーに変更)したり、「ポリシーなし」を選択できます。Webサービスは、エディタのこのページを終了するときに変更されます。

20.7.3.5.2 Javaクラスでの注釈を使用したポリシーの編集または削除

ソース・エディタでJavaクラスの注釈を使用してポリシーを編集または削除できます。

Javaクラスで注釈を使用してポリシーを編集または削除する手順は次のとおりです。

20.7.3.5.3 「プロパティ」ウィンドウを使用したポリシーの編集または削除

「プロパティ」ウィンドウを使用して、ポリシーを編集または削除できます。

「プロパティ」ウィンドウを使用してポリシーを編集または削除する手順は次のとおりです。

  1. ソース・エディタでJAX-WS Webサービス・クラスを開いた状態で、「ウィンドウ」→「プロパティ」を選択して「プロパティ」ウィンドウを開きます。

    詳細を参照するには、「プロパティ」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  2. クラスのpublic class行または@WebService行にカーソルがある状態で、「ポリシー」ノードに移動します。

    • 複数のポリシーを編集するには、「...」をクリックし、「プロパティの編集: 複数ポリシー」ダイアログを開きます。

    • 単一のポリシーを編集するには、「単一ポリシー」リストから名前を削除し、別の名前を選択します。

    • ポリシーのタイプを他のタイプに変更するには、すべてのポリシーを削除して最初から再度実行できるようにします。

20.7.4 RESTful Webサービスおよびクライアントへのポリシーのアタッチ方法

この項では、JDeveloperで作成されたRESTful Webサービスおよびクライアントにポリシーをアタッチする方法について説明します。

20.7.4.1 RESTful Webサービスへのポリシーのアタッチ

RESTful Webサービスを保護するために、いずれかのOWSM事前定義済セキュリティ・ポリシーをアタッチできます。OWSM事前定義済セキュリティ・ポリシーは、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理のRESTful WebサービスでサポートされているOWSMポリシーに関する項に記載されています。

詳細は、次の資料を参照してください。

  • RESTful Webサービスの保護の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のOWSMポリシーを使用したRESTful Webサービスおよびクライアントの保護に関する項を参照してください。

  • サポートされているセキュリティ・ポリシーの詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の「事前定義済のポリシー」を参照してください。

  • セキュリティ・ポリシーの構成の詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の「Webサービスの保護」を参照してください。

RESTful Webサービスにポリシーをアタッチする手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、「Webコンテンツ」→WEB-INFフォルダにあるweb.xmlファイルを右クリックします。

  2. 「RESTfulアプリケーションの保護」を選択します。

    「リストからのポリシーの選択」ダイアログが表示されます。

  3. リストからセキュリティ・ポリシーを選択します。

    アタッチできるのは、1つの認証ポリシーと1つの認可ポリシーのみです。

  4. 「OK」をクリックします。

    セキュリティ・ポリシー構成がwsm-assembly.xmlデプロイメント・ディスクリプタ・ファイルに保存されます。wsm-assembly.xmlファイルが存在しない場合は作成されます。

20.7.4.2 RESTful Webサービス・クライアントへのポリシーのアタッチ

RESTful Webサービスを保護するために、いずれかのOWSM事前定義済セキュリティ・ポリシーをアタッチできます。OWSM事前定義済セキュリティ・ポリシーは、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理のRESTful WebサービスでサポートされているOWSMポリシーに関する項に記載されています。

次の各項で説明されているいずれかの方法でRESTfulクライアントにOWSMポリシーをアタッチできます。

詳細は、次の資料を参照してください。

  • RESTful Webサービスの保護の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のOWSMポリシーを使用したRESTful Webサービスおよびクライアントの保護に関する項を参照してください。

  • サポートされているセキュリティ・ポリシーの詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の「事前定義済のポリシー」を参照してください。

  • セキュリティ・ポリシーの構成の詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の「Webサービスの保護」を参照してください。

20.7.4.2.1 「RESTfulクライアントおよびプロキシ」ウィザードでのOWSMポリシーのアタッチ

新規RESTfulクライアントの作成時に「RESTfulクライアントおよびプロキシ」ウィザードでアタッチするポリシーを設定して、Webサービス・クライアントにポリシーをアタッチできます。

「RESTfulプロキシ・クライアントの作成」ウィザードを使用したWebサービスの作成の詳細は、第20.5.2.2項「RESTful Webサービス・クライアントの作成」を参照してください。

「RESTfulクライアントおよびプロキシ」ウィザードでRESTfulクライアントにOWSMポリシーをアタッチする手順は次のとおりです。

「RESTfulプロキシ・クライアントの作成」ウィザードで、「クライアント・ポリシー構成」ページに移動します。詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

OWSMポリシーをアタッチする場合、次の方法により、ポリシーおよびそのアサーションに関する詳細を表示できます。

  • 「説明の表示」チェック・ボックスをクリックし、各ポリシーの説明を表示します。

  • 「表示」をクリックし、ポリシー・ファイル内のポリシー・アサーションをレビューします。

  • 「選択されたポリシーの表示」チェック・ボックスをクリックし、現在選択されているポリシーのみを表示します。

  • 「選択用に互換性のあるクライアント・ポリシーのみ表示。」チェック・ボックスをクリックし、関連するWebサービスと互換性のあるポリシーを表示します。

20.7.4.2.2 「クライアント・ポリシー構成」ダイアログでのOWSMポリシーのアタッチ

「クライアント・ポリシー構成」ダイアログでアタッチするポリシーを設定して、Webサービス・クライアントにポリシーをアタッチできます。

「クライアント・ポリシー構成」ダイアログでRESTfulクライアントにOWSMポリシーをアタッチする手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、「アプリケーション・ソース」フォルダにあるRESTful Webサービス・クライアント・ファイルを右クリックします。

  2. 「セキュアRESTfulクライアント」を選択します。

    「クライアント・ポリシー構成」ダイアログが表示されます。

  3. リストからセキュリティ・ポリシーを選択します。

    アタッチできるのは、1つの認証ポリシーと1つの認可ポリシーのみです。

  4. 「OK」をクリックします。

    クライアントでcustomizeClientConfigurationメソッドが更新され、ポリシー・アタッチメントが含められます。

詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。

OWSMポリシーをアタッチする場合、次の方法により、ポリシーおよびそのアサーションに関する詳細を表示できます。

  • 「説明の表示」チェック・ボックスをクリックし、各ポリシーの説明を表示します。

  • 「表示」をクリックし、ポリシー・ファイル内のポリシー・アサーションをレビューします。

  • 「選択されたポリシーの表示」チェック・ボックスをクリックし、現在選択されているポリシーのみを表示します。

  • 「選択用に互換性のあるクライアント・ポリシーのみ表示。」チェック・ボックスをクリックし、関連するWebサービスと互換性のあるポリシーを表示します。

20.7.4.2.3 プログラムによるRESTfulクライアントへのOWSMポリシーのアタッチ

OWSMセキュリティ・ポリシーは、プログラムによってのみRESTful Webサービス・クライアントにアタッチできます(Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の機能クラスを使用したRESTful Webサービス・クライアントへのポリシーのアタッチに関する項を参照)。

次の例に示すように、com.sun.jersey.api.client.config.ClientConfigを使用して、OWSMポリシーをアタッチして構成プロパティをオーバーライドできます。次のコードでは、oracle/wss_http_token_client_policyポリシーをクライアントにアタッチし、CO_CSF_KEY構成プロパティを値weblogic-csf-keyでオーバーライドします。

例20-7 機能クラスを使用したRESTful Webサービス・クライアントへのポリシーのアタッチ

package samples.helloworld.client;
 
import weblogic.jaxrs.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import oracle.wsm.metadata.feature.PolicyReferenceFeature;
import oracle.wsm.metadata.feature.AbstractPolicyFeature;
import oracle.wsm.metadata.feature.PolicySetFeature;
import oracle.wsm.metadata.feature.PropertyFeature;
...
    public static void main(String[] args) {
        ClientConfig cc = new DefaultClientConfig();
        cc.getProperties().put(AbstractPolicyFeature.ABSTRACT_POLICY_FEATURE,
             new PolicySetFeature(
                new PolicyReferenceFeature((
                  "oracle/wss_http_token_client_policy"), new 
                  PropertyFeature(SecurityConstants.ConfigOverride.CO_CSF_KEY,
                      "weblogic-csf-key"))));
        Client c = Client.create(cc);
...

20.7.4.3 RESTful Webサービス・クライアントのOWSMポリシー構成プロパティのオーバーライド

JDeveloperでは、RESTful Webサービス・クライアントにアタッチされたポリシーの構成プロパティをオーバーライドできます。

RESTful Webサービス・クライアントのOWSMポリシー構成プロパティを次の方法でオーバーライドできます。

20.7.4.3.1 「Webサービス・クライアントおよびプロキシ」ウィザードでのOWSMポリシー構成プロパティのオーバーライド

「RESTfulクライアントおよびプロキシ」ウィザードまたはクライアント・エディタを使用してRESTful Webサービス・クライアントにポリシーをアタッチするときに、「クライアント・ポリシー構成」ページに移動して、アタッチするポリシーを1つまたは複数選択し、「プロパティのオーバーライド...」をクリックします。「オーバーライド・プロパティの設定」ダイアログが表示されます。このダイアログで、選択したポリシーの構成プロパティを編集できます。詳細を参照するには、ダイアログ内で[F1]を押すか「ヘルプ」をクリックします。必要に応じて値を設定し、「OK」をクリックします。

「RESTfulプロキシ・クライアントの作成」ウィザードを使用したRESTful Webサービス・クライアントの作成の詳細は、第20.5.2.2項「RESTful Webサービス・クライアントの作成」を参照してください。

20.7.4.3.2 機能クラスを使用したRESTfulクライアントのOWSMポリシー構成プロパティのオーバーライド

RESTful Webサービス・クライアントの作成時に、OWSMセキュリティ・ポリシーをプログラムによってアタッチする場合は、oracle.wsm.metadata.feature.PropertyFeatureクラスを使用してOWSMセキュリティ・ポリシーのデフォルト構成プロパティをオーバーライドできます。詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の機能クラスを使用したRESTful Webサービス・クライアントへのポリシーのアタッチに関する項を参照してください。例は、例20-7を参照してください。

20.7.4.4 RESTful Webサービスおよびクライアントのポリシーの編集または削除

次の項で説明するように、RESTful Webサービスおよびクライアントのポリシーを編集したり完全に削除したりできます。

20.7.4.4.1 RESTful Webサービスのポリシーの編集または削除

RESTful Webサービスのポリシーを編集または削除する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、「Webコンテンツ」→WEB-INFフォルダにあるweb.xmlファイルを右クリックします。

  2. 「RESTfulアプリケーションの保護」を選択します。

    「リストからのポリシーの選択」ダイアログが表示されます。

  3. リストからセキュリティ・ポリシーを選択します。

    アタッチできるのは、1つの認証ポリシーと1つの認可ポリシーのみです。

  4. 「OK」をクリックします。

    セキュリティ・ポリシー構成がwsm-assembly.xmlデプロイメント・ディスクリプタ・ファイルに保存されます。wsm-assembly.xmlファイルが存在しない場合は作成されます。

20.7.4.4.2 RESTful Webサービス・クライアントのポリシーの編集または削除

第20.7.4.2項「RESTful Webサービス・クライアントへのポリシーのアタッチ」で説明されているいずれかの方法を使用して、RESTful Webサービス・クライアントのポリシーを編集または削除します。

20.7.5 異なるOWSMポリシー・ストアの使用方法

OWSMポリシー・ストアは、JDeveloperの一部としてインストールされます。異なるポリシー・ストアを構成すると、たとえば、共有ポリシー・ストアを使用できます。ローカル・ファイル・ストアやリモート・アプリケーション・サーバーで使用可能なポリシー・ストアも使用できます。

異なるOWSMポリシー・ストアを使用する手順は次のとおりです

  1. 「ツール」→「プリファレンス」を選択して「プリファレンス」ダイアログを開き、「WSポリシー・ストア」ページにナビゲートします。

    詳細を参照するには、「プリファレンス」ウィンドウ内で[F1]を押すか「ヘルプ」をクリックします。

  2. ローカル・ファイル・ストア内にあるポリシー・ストアを指定するには、「ファイル・ストア」をクリックし、「オーバーライド場所」テキスト・ボックスにポリシー・ストアの場所を入力するか、「参照」をクリックしてその場所を参照します。

  3. リモート・アプリケーション・サーバーでポリシー・ストアを構成するには、「アプリケーション・サーバー接続」をクリックし、「接続」ドロップダウン・リストからリモート・アプリケーション・サーバー接続を選択します。

    新規のリモート・アプリケーション・サーバー接続を追加するには、「新規」をクリックします。


注意:

選択するリモート・アプリケーション・サーバーは、OWSMポリシー・マネージャを使用して構成する必要があります。OWSMポリシー・マネージャが正しく構成されていることを確認するには、URLとしてhttp://<host:<port/wsm-pm/validatorを使用します。求められたら、サーバーのユーザー名およびパスワードを入力します。OWSMポリシー・マネージャが使用可能な場合、事前定義済ポリシーのリストが説明とともに表示されます。OWSMポリシー・マネージャのトラブルシューティングの詳細は、『Webサービスの管理』の「Oracle OWSMの問題の診断」を参照してください。

20.7.6 カスタムWebサービス・ポリシーの使用方法

JDeveloper内でカスタム・ポリシーを使用できます。次の項で説明するように、このプロセスは、カスタムOWSMポリシーとOracle WebLogic Webサービス・ポリシーのどちらを使用するかによって異なります。

20.7.6.1 カスタムOWSMポリシーの使用

カスタムOWSMポリシーを使用するには、次のいずれかの手順を実行します。

  • カスタム・ポリシーを次のデフォルトのポリシー格納場所に追加します。

    JDEV_USER_HOME\system12.1.2.0.x.x.x\DefaultDomain\store\gmds\owsm

    設定されていない場合、JDEV_USER_HOMEのデフォルトはC:\Users\user-dir\AppData\Roaming\JDeveloperです。

    このディレクトリ内で、次のディレクトリ構造のいずれかを使用してポリシーを格納する必要があります。

    • 事前定義済OWSMポリシー: policies/oracle/policyname

    • カスタム・ユーザー・ポリシー: policies/policyname


    注意:

    JDeveloperで使用するためにポリシー・ファイルをOWSMリポジトリからエクスポートする場合、このディレクトリ構造は維持されません。エクスポートされたポリシーをJDeveloper環境に追加する場合は、必ず前述の要求されるディレクトリ構造を使用して、ポリシーをzipアーカイブからJDeveloperポリシー・ストアに抽出する必要があります。そうしないと、ポリシーはJDeveloper環境で使用できなくなります。OWSMリポジトリからのポリシーのエクスポートの詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の「ポリシーのインポートおよびエクスポートの様々なメカニズムの理解」を参照してください。

  • 異なるポリシー・ストアを指定します。詳細は、第20.7.6.2項「Oracle WebLogicカスタムWebサービス・ポリシーの使用」を参照してください。

    リモート・アプリケーション・サーバーでのポリシー・ストア使用を選択する場合、Fusion Middleware ControlまたはWLSTを使用してカスタムOWSMポリシーをリモート・アプリケーション・サーバー上のMDSリポジトリにインポートできます。リモート・アプリケーション・サーバー上のOWSM MDSリポジトリへのポリシーのインポートの詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の「ポリシーのインポートおよびエクスポートの様々なメカニズムの理解」を参照してください。

カスタム・ポリシーの作成の詳細は、Oracle Web Services Manager拡張可能アプリケーションの開発の「カスタム・アサーションの作成」を参照してください。

20.7.6.2 Oracle WebLogicカスタムWebサービス・ポリシーの使用

Oracle WebLogicカスタムWebサービス・ポリシーを使用するには、次のいずれかのステップを実行します。

  • カスタム・ポリシーJARをクラスパスに配置し、WebLogic Serverのプロパティweblogic.wsee.policy.LoadFromClassPathEnabledtrueに設定します。

  • カスタム・ポリシーJARをWEB-INF/policies (Webアプリケーション)またはMETA-INF/policies (EJB)に配置します。

  • カスタム・ポリシーXMLファイルをWEB-INF (Webアプリケーション)またはMETA-INF (EJB)に配置します。

ポリシーにアクセスするには、次のようにします。

  • @Policy注釈を使用する場合、policy接頭辞を追加することを確認します(policy:mypolicy.xmlなど)。

  • Java Webサービス・エディタの「ポリシーの構成」ページで「カスタム・ポリシーの追加」ボタンをクリックし、「カスタム・ポリシー・ファイルの選択」ダイアログ・ボックスを使用してカスタム・ポリシー・ファイルを選択します。

20.8 Webサービスのデプロイ

JDeveloperには、Webサービスを作成してOracle WebLogic Serverにデプロイするときに役立つツールが用意されています。Oracle WebLogic Serverでは、WebサービスはJava EEコンテナ内で動作します。次の操作を実行できます。

20.8.1 統合WebLogic ServerへのWebサービスのデプロイ方法

JDeveloperで生成されたWebサービスを統合WebLogic Serverにデプロイできます。詳細は、第21.2項「統合アプリケーション・サーバーでのJava EEアプリケーションの実行」を参照してください。

Webサービスを統合WebLogic Serverにデプロイするには、次のようにします。

  1. 統合WebLogic Serverを起動します(まだ起動していない場合)。


    注意:

    統合WebLogic Serverを初めて起動する場合は、デフォルト・ドメインの管理者IDのパスワードの入力を求めるダイアログが表示されます。「OK」をクリックすると、デフォルト・ドメインが作成され、統合WebLogic Serverが起動します。この手順は1回のみ実行する必要があります。

  2. 「アプリケーション」ウィンドウで、Webサービスが含まれるプロジェクトを右クリックし、「デプロイ」→「Webサービス」を選択します。

  3. Webサービスのデプロイ・ダイアログの「デプロイメント・アクション」ページで、「アプリケーション・サーバーへのデプロイ」を選択し、「次へ」をクリックします。

  4. 「サーバーの選択」ページで、IntegratedWebLogicServerを選択し、「次へ」をクリックします。

  5. 「WebLogicオプション」ページで、次の項目を指定してWebLogic Serverデプロイメント・オプションを構成します。

    • アプリケーションをドメイン内のすべてのインスタンスにデプロイするのか、または選択したインスタンスにデプロイするのか。デフォルトでは、アプリケーションはすべてのインスタンスにデプロイされます。

    • アプリケーションを共有ライブラリとして登録するかどうか。デフォルトでは、アプリケーションはスタンドアロン・アプリケーションとして登録されます。

  6. 「次へ」をクリックして「サマリー」ページを表示するか、「終了」をクリックしてWebサービスをデプロイします。

20.8.2 スタンドアロン・アプリケーション・サーバーへのWebサービスのデプロイ方法

JDeveloperで生成されたWebサービスを次のいずれかのスタンドアロン・アプリケーション・サーバーにデプロイできます。

  • Oracle WebLogic Server

  • JBoss 5.x

  • Tomcat 6.x

  • WebSphere Server 7.x

Webサービスをスタンドアロン・アプリケーションにデプロイする手順は次のとおりです。

  1. スタンドアロン・アプリケーション・サーバーが稼働していることを確認します。

  2. 「アプリケーション」ウィンドウで、Webサービスが含まれるプロジェクトを右クリックし、「配布先」→「接続」を選択します。使用可能な接続のリストから、Webサービスの作成時に指定したアプリケーション・サーバー接続を選択します。

20.8.3 Webサービスのアンデプロイ方法

Webサービスを統合WebLogic Serverにデプロイした場合、統合サーバーが起動されるたびにサーバー自体が新規のアプリケーションおよびプロジェクトにリセットされるため、Webサービスをアンデプロイする必要はありません。

アプリケーション・サーバー接続を使用してWebサービスをサーバーにデプロイした場合は、「リソース」ウィンドウでWebサービスをアンデプロイできます。

Webサービスをアンデプロイするには、次のようにします。

  1. 「アプリケーション・サーバー」ウィンドウで、使用していたアプリケーション・サーバー接続を選択して「Webサービス」を開きます。

  2. application-name_project-name_ws」を右クリックして「アンデプロイ」を選択します。

20.9 Webサービスのテストおよびデバッグ

Developerには、Webサービスをデバッグおよびテストする方法がいくつか用意されています。

この項で説明した方法のほかに、HTTPアナライザを使用して、他のパケット情報の調査と同じようにHTTPを介してWebサービスのコンテンツを調査できます。詳細は第20.10項「Webサービスの監視と分析」を参照してください。

20.9.1 ブラウザでのWebサービスのテスト方法

Webサービスを作成してデプロイした後、Webサービス・テスト・クライアントを使用してブラウザ内でWebサービスを実行してテストし、予期した応答が得られるかどうかを確認できます。Webサービス・テスト・クライアントを使用したWebサービスのテストの詳細は、『Webサービスの管理』の「Webサービスのテスト」を参照してください。

20.9.2 Webサービスのデバッグ方法

デバッグ・ツールを使用すると、Webサービス・ウィザードで作成したWebサービスをデバッグできます。Webサービスのデバッグは、Javaプログラムのデバッグと似ています。そのため、サービスに対してデバッグ・モードでクライアントを実行することにより、ローカルまたはリモートでWebサービスをデバッグできます。Webサービスに対するプロキシであるクライアントにブレークポイントを設定し、サービスの機能を調べることができます。

JDeveloperでは、統合WebLogic Serverでローカルに実行されるWebサービスや、リモートでデプロイされるWebサービスをデバッグできます。

Webサービスをデバッグするときに、JDeveloperでは、コードの分析と問題領域の特定に役立つ、特定の用途向けのデバッグ・ウィンドウが数多く提供されます。デバッガ・ウィンドウを開くには、「ウィンドウ」「デバッガ」を選択して、メニューからウィンドウを選択します。「データ」ウィンドウは、Webサービスのデバッグに特に役立ちます。詳細は、第20.9.2.3項「Webサービスのデバッグでの「データ」ウィンドウの使用」を参照してください。

HTTPアナライザを使用すると、HTTPリクエスト/レスポンス・パケットを検証および監視できます。これは、JDeveloperのコードとコードの通信対象であるHTTPリソースの間のプロキシとして機能し、送受信されるHTTPトラフィックの観点からアプリケーションをデバッグする上で役に立ちます。詳細は、第20.10.5項「HTTPアナライザを使用したWebサービスの調査方法」を参照してください。

20.9.2.1 ローカルでのWebサービスのデバッグ

Webサービスが統合WebLogic Serverで実行されたら、Webサービス・プロキシに対してプロキシ・クライアントを作成できます。このクライアントには、Webサービスで公開されている各メソッドに対して実行するメソッドが含まれます。また、独自のコードを追加したり、ブレークポイントを設定してWebサービスの実行状況を調べることができます。

JDeveloperで作成したWebサービスは、次のいずれかの方法を使用してローカルですぐにデバッグできます。

  • Webサービス・クラスにブレークポイントを挿入し、これに対してプロキシ・クライアントを実行します。これにより、サービス・クラス自体をデバッグできます。

  • クライアントにブレークポイントを挿入します。

Webサービスをローカル・デバッグする前に、プロキシ設定をオフにする必要があります。デバッグが完了したら、必ずプロキシ設定をオンに戻してください。

Webサービスをローカルでデバッグするには、次のようにします。

  1. 最初に、プロキシ設定をオフにします(第20.2.1.3項「インターネットへのアクセス時のプロキシ・サーバーの使用の無効化」を参照)。

  2. デバッグ・モードでWebサービスを実行します。「アプリケーション」ウィンドウで、Webサービスを右クリックして「デバッグ」を選択します。

    統合WebLogic Serverがデバッグ・モードで起動し(または再起動し)、このサーバーにWebサービスがデプロイされます。結果はログ・ウィンドウに表示されます。

  3. Webサービス・クライアントを作成します(第20.4.3項「JAX-WS Webサービス・クライアントの作成方法」を参照)。

    プロキシ・コンテナが生成されて「アプリケーション」ウィンドウに表示され、webservicePortClient.javaというJavaクラスがソース・エディタに表示されます。

  4. ソース・エディタで、// Add your own code to call the desired methodsというコメントを見つけて、コードを入力します。

  5. Webサービスに対するクライアントをデバッグする場合、1つ以上のブレークポイントを追加し、右クリックして「デバッグ」を選択します。

    また、Webサービス・クラスにブレークポイントを設定した場合は、ポップアップ・メニューから「デバッグ」または「実行」を選択します。

    すべてのJavaクラスに関して、デバッガが動作します。詳細は、第12章「Javaプロジェクトの実行とデバッグ」を参照してください。

20.9.2.2 Webサービスのリモート・デバッグ

JDeveloperを使用すると、リモートでデプロイされたWebサービスをデバッグできます。

Webサービスは、ローカル・マシン上のOracle WebLogic Serverで実行される場合、またはリモート・マシン上のサービスで実行される場合があります。いずれの場合も、サーバーに接続し、サーバーをデバッグ・モードで実行する必要があります。

Webサービスをリモートでデバッグする場合、サーバーをデバッグ・モードで起動し、サーバーにWebサービスをデプロイする必要があります。これにより、サービスに対するクライアントを作成し、クライアントにブレークポイントを設定し、クライアントをデバッグ・モードで起動できるようになります。

Webサービスをリモートでデバッグするには、次のようにします。

  1. リモート・サーバーをデバッグ・モードで実行します。

  2. Webサービスをデプロイします。詳細は、第20.8項「Webサービスのデプロイ」を参照してください。

  3. Webサービス・クライアントを作成します(第20.4.3項「JAX-WS Webサービス・クライアントの作成方法」を参照)。

  4. ソース・エディタで、// Add your own code to call the desired methodsというコメントを見つけて、コードを入力します。

  5. 1つ以上のブレークポイントを追加し、右クリックして「デバッグ」を選択します。

    すべてのJavaクラスに関して、デバッガが動作します。詳細は、第12章「Javaプロジェクトの実行とデバッグ」を参照してください。

20.9.2.3 Webサービスのデバッグでの「データ」ウィンドウの使用

JDeveloperでは、コードの分析と問題領域の特定に役立つ、特定の用途向けのデバッグ・ウィンドウが数多く提供されます。「データ」ウィンドウは、Webサービスのデバッグに特に役立ちます。

「データ」ウィンドウには、現在のコンテキストのプログラムの変数に関する情報が表示されます。プログラムのデバッグ中、デフォルトでは「データ」ウィンドウにローカル変数情報が表示されます。Webサービスの場合は、「データ」ウィンドウには、Webサービスから導出された追加情報も表示されます。たとえば、プロキシ・クラスをデバッグした場合、次のメソッド・コールの戻り値が表示されます(これは完全なリストではありません)。

  • com.sun.xml.ws.client.RequestContext.getEndpointAddressString()

  • javax.xml.ws.Binding.getBindingID()

  • javax.xml.ws.BindingProvider.getResponseContext()

「データ」デバッガ・ウィンドウを開くには、「ウィンドウ」「デバッガ」「データ」を選択します。その他のデバッグ・ウィンドウへのアクセスおよび使用の詳細は、第12.8項「デバッガ・ウィンドウの使用方法」を参照してください。

デバッグ中、フィルタを使用して、「オブジェクト設定」ダイアログを介して「データ」ウィンドウでオブジェクトを開いたときに表示されるフィールドの数を減らすことができます。フィールド数を減らすことにより、デバッグの対象範囲が絞られ、プログラムの問題を容易に検出して切り離すことができるようになります。詳細は、第12.10.3項「「フィルタ対象クラス」リストでフィールドの表示/非表示を切り替える方法」を参照してください。

20.9.3 JUnitを使用したWebサービスのテスト方法

JDeveloperでは、Webサービス対するJUnit回帰テストがサポートされています。JUnitは、JDeveloperのオプション機能として用意されているオープン・ソースのJava回帰テスト用のフレームワークです。JUnitを使用して、コードを検証するテストを記述および実行できます。JUnitの詳細は、http://www.junit.orgにあるJUnitのWebサイトを参照してください。

JUnitを使用するには、JUnit拡張機能をインストールする必要があります。JUnit拡張機能をインストールした後、テスト対象のWebサービスのJUnitテスト・クラスを作成できます。

Webサービスに対してJUnitテストを実行する手順は次のとおりです。

  1. JDeveloperの「ヘルプ」メニューからJUnit拡張機能をインストールします。詳細は、第3.9.1項「「更新の確認」を使用して拡張機能をインストールする方法」を参照してください。

  2. 「アプリケーション」ウィンドウでWebサービスを右クリックし、「WebサービスのJUnitクラスの作成」を選択します。JUnitテスト・クラスが作成されます。

  3. 生成されたクラスを編集します。

    生成されたテスト・クラスはJUnitランタイムで動作できます。ただし、有意な結果を収集するために、実際の環境を反映するようにテスト・クラスを(アサーションなどで)インストゥルメント処理する必要があります。生成されたJUnitクラスには1つのWebサービス・メソッドにつき1つの生成済テスト・メソッドがあり、それぞれをJUnitテスト・ハーネスで実行できます。

デフォルトでは、生成されたテストが実行されると、JUnitはWebサービス・エンドポイントをWebサービス・エンドポイント・パブリッシャに設定します。ただし、生成されたJUnitテスト・クラスからWebサービス・エンドポイント・パブリッシャを削除して、Webサービス・エンドポイントを、Webサービスが事前デプロイ済の任意のアプリケーション・サーバーに設定できます。

20.9.4 アプリケーション・サーバーのWebサービス・メッセージ・ログの表示方法

アプリケーション・サーバーにデプロイされたWebサービスにログ・ポリシーをアタッチしている場合、ログ・ポリシーによってSOAPメッセージがメッセージ・ログに書き込まれます。Webサービス・メッセージ・ログには、「アプリケーション・サーバー」ウィンドウを使用してアクセスできます。

アプリケーション・サーバー・ログ・ファイルは、統合サーバーとリモート・サーバーの両方の各アプリケーション・サーバー・ノードの下にある「ログ・ファイル」フォルダの配下にあります。各「ログ・ファイル」フォルダの下に、「OWSMログ」フォルダがあり、そこにWebサービス・ログ・ファイルが格納されています。

アプリケーション・サーバーにデプロイされたWebサービスのメッセージ・ログを表示する手順は次のとおりです。

  1. 必要な場合は、「ウィンドウ」→「アプリケーション・サーバー」を選択して「アプリケーション・サーバー」ウィンドウを開きます。

  2. Webサービスのデプロイ先のアプリケーション・サーバーを開きます。

  3. 「ログ・ファイル」フォルダを開き、「OWSMログ」フォルダにアクセスします。

  4. 「OWSMログ」フォルダを開き、ログ・ファイル(diagnostic.logなど)を右クリックして、ポップアップ・メニューから「表示」を選択します。

    ログの内容が読取り専用モードでエディタに表示されます。

20.10 Webサービスの監視と分析

Webサービスは様々な方法で分析できます(Web Services-Interoperability Organization (WS-I) Basic Profile 1.1への準拠の確認や、SOAPパケットのコンテンツの調査など)。

Oracleなどの主要企業によって設立されたWS-Iは、各種プラットフォーム、オペレーティング・システム、およびプログラミング言語間でのWebサービス技術の相互運用推進を目的としています。JDeveloperには、WebサービスがWS-I Basic Profile 1.1に準拠しているかどうかを確認することにより、そのWebサービスが相互運用性を持つかどうかをテストできるツールが提供されています。WS-Iの詳細は、「The Web Services-Interoperability Organization (WS-I)」のWebサイト(http://www.ws-i.org)を参照してください。

ユーザーはWebサービスがWS-I規格に準拠しているかどうかを分析できます。サービスは、「アプリケーション」ウィンドウにリストされている自分が作成したサービスか、「リソース」ウィンドウにリストされているUDDIレジストリを使用して検索したWebサービスです。デプロイ済のWebサービスについても、クライアントおよびプロキシ・クラスを作成してアクセスしてHTTPアナライザでログ・ファイルを作成すれば、WS-I規格に準拠しているかどうかを分析できます。

WebサービスをWS-I Basic Profileに照らして監視したり、サービスの監視の結果得られたログ・ファイルを分析するには、WS-I準拠のアナライザをダウンロードして登録する必要があります。WS準拠のアナライザを登録するには、事前にWS-Iテスト・ツール拡張機能をインストールする必要があります。

次の各項では、Webサービスを監視および分析する方法について説明します。

20.10.1 WS-Iアナライザのダウンロードおよび登録方法

Webサービスを分析するWS-I準拠のアナライザを使用するには、マシンにダウンロードした上で、JDeveloperに登録する必要があります。

WS-Iアナライザをダウンロードして登録するには、次のようにします。

  1. http://www.ws-i.orgからWS-Iアナライザをダウンロードしてインストールします。

  2. JDeveloperの「ヘルプ」メニューからWS-Iテスト・ツール拡張機能をインストールします。詳細は、第3.9.1項「「更新の確認」を使用して拡張機能をインストールする方法」を参照してください。

  3. JDeveloperで、「ツール」→「プリファレンス」を選択し、「WS-Iテスト・ツール」を選択します。

  4. WS-I準拠のアナライザをインストールする場所の詳細を入力します。

    ダイアログの使用の詳細なヘルプを参照するには、ダイアログ内で[F1]を押すか、「ヘルプ」をクリックします。

20.10.2 「アプリケーション」ウィンドウでのWebサービスの分析方法

Webサービスのレポートを作成して、WS-I Basic Profile 1.1標準に準拠しているかどうかを確認できます。レポート対象は、「アプリケーション」ウィンドウにリストされているWebサービスか、UDDIレジストリを使用して検索されて「リソース」ウィンドウにリストされているWebサービスです。そのためには、あらかじめ使用マシンにWS-I準拠のアナライザをダウンロードし、JDeveloperでの登録を実行しておく必要があります。

Webサービスとクライアントとの間でやり取りされるメッセージの内容を確認するWS-I Basic Profileの機能は、Webサービスに対してクライアントが実行されないかぎり使用できません。WS-Iアナライザを「アプリケーション」ウィンドウから起動した場合は、WSDLドキュメントのサービス記述のみが分析できます。

Webサービスを分析するには、次のようにします。

  1. ナビゲータでWebサービスを選択し、ポップアップ・メニューから「WS-I WSDLの分析...」を選択します。

  2. WS-I Webサービス分析ウィザードが表示されます。

    ウィザードの使用時に詳細なヘルプを参照するには、ウィザード内で[F1]を押すか、「ヘルプ」をクリックします。

  3. ウィザードの実行を開始すると、JDeveloperに分析レポートwsi-report.htmlが表示されます。このレポートが表示されるまでにある程度の時間がかかる場合がありますが、その長さは、分析対象がローカルWebサービスであるか、Web上のどこか他の場所にデプロイされたWebサービスであるかによって異なります。

20.10.3 Webサービス・ログの作成および分析方法

HTTPアナライザを使用すると、Webサービス・クライアントの実行中のログを生成できます。また、ダウンロードおよびJDeveloperでの登録が済んでいるWS-I準拠のアナライザを使用して、WebサービスがWS-I規格に準拠しているかどうかを確認することもできます。

アナライザはWebサービスのクライアントに対して実行するため、サービスの検出、説明およびメッセージがレポート対象となります。


注意:

ファイアウォール内で作業する場合は、Webサービスの実行に使用しているマシンのIPアドレスが、プロキシ・サーバー例外に含まれないようにする必要があります。

Webサービスを作成および分析するには、次のようにします。

  1. 分析するWebサービスに対するクライアントを作成します。

    • 外部のWebサービス。

    • 作成したWebサービスが、Oracle WebLogic Serverにデプロイ済である場合は、クライアント・スタブまたはクライアント・プロキシを作成します。

    • JDeveloperで作成済のWebサービスについては、Webサービスのポップアップ・メニューから「実行」を選択して、埋込みサーバーで実行可能な状態になっていることを確認します。ナビゲータで、Webサービスのポップアップ・メニューから「Webサービス注釈のクライアントの作成」を選択します。WSDLのWebサービス・エンドポイントと、生成プロキシの_endPoint変数は、完全に同じである必要があります。

  2. HTTPアナライザを起動します。「ツール」→「HTTPアナライザ」を選択し、モニターで「開始」この図は周囲のテキストで説明していますをクリックします。

  3. 次のいずれかの方法でクライアントを実行します。

    • ソース・エディタで、クライアントのポップアップ・メニューから「実行」を選択します。

    • ナビゲータで、クライアントのポップアップ・メニューから「実行」を選択します。

  4. Webサービスから予期したレスポンスが得られた後、「停止」この図については周囲のテキストで説明しています。をクリックしてHTTPアナライザを停止します。

  5. 「WS-I分析」この図は周囲のテキストで説明していますをクリックして「WS-I分析」ウィザードを起動し、ウィザードの指示に従います。メッセージ・ログに進行状況が記録され、HTTPアナライザに結果が表示されます。

20.10.3.1 Webサービスの実行および分析に関する必知事項

Webサービスの分析を実行すると、問題の発生する原因が多数見つかります。その中にはJDeveloperドキュメントで説明されていないものもありますが、次の2つの問題が発生する可能性があります。

20.10.3.1.1 wsi-report.htmlのメッセージ・セクションからすべての入力項目が消去される場合

外部WebサービスのWSDLのエンドポイントに含まれているマシン名が大文字のみまたは大文字小文字混合で記述されているのに対し、JDeveloperで生成されたクライアントの_endPoint変数のマシン名が小文字で記述されている場合に、このような現象が発生することがあります。これと類似する事例を、第20.10.4項「統合サーバーで実行中のWebサービスの分析方法」で説明しています。

回避策としては、JDeveloperにWSDLをインポートしてナビゲータに表示し、WSDLのマシン名を小文字に編集します。これにより、クライアント(および関連するプロキシ・クラス)を生成してHTTPアナライザの実行中にそのクライアントを実行できます。

WSDLをナビゲータにインポートするには、次のようにします。

  1. デフォルト値を使用して新規WSDLドキュメントを作成します。

  2. ブラウザでWSDLドキュメントを開きます。ドキュメントのソースを表示して、WSDLのXMLソースをコピーします。

  3. ここで作成したWSDLドキュメントの内容を、使用するWebサービスのWSDLドキュメントのソースで置き換えます。

20.10.3.1.2 wsi-report.htmlの検出セクションからすべての入力項目が消去される場合

wsi-report.htmlの検出セクションでは、UDDIレジストリから検索するWebサービスで使用されるREGDATA結果についてレポートします。UDDIレジストリを使用しても検索されなかったWebサービスのレポートを作成した場合、検出セクションのInputsがすべて消去されます。

20.10.4 統合サーバーで実行中のWebサービスの分析方法

WS-I準拠のアナライザは、一連の標準アサーションに対するログ・ファイル内のメッセージと相互関係があります。特に、WSDLドキュメント内のservice要素のsoap:addressの下位要素は、wsi-log.xml messageEntryのsenderHostAndPortまたはreceiverHostAndPortと厳密に一致する必要があります。一致しない場合、そのメッセージのWS-I互換性は分析されません。

20.10.4.1 エンドポイント・アドレスの変更

Webサービスを統合サーバーで実行し(Webサービスのポップアップ・メニューから「実行」を選択)、Webサービスに対して生成済クライアントを実行中にHTTPアナライザを実行してログを作成する場合は、WSDLのWebサービスのエンドポイントや生成済クライアントの_endPoint変数を変更してから、実行中のクライアントのログ・ファイルを作成する必要があります。

Webサービスのエンドポイントがプロキシの_endPoint変数に一致していることを確認するには、次のようにします。

  1. ナビゲータでWebサービスのWSDLドキュメントをダブルクリックして、そのWSDLドキュメントを編集します。

  2. soap:address下位要素に移動し、次のいずれかの値を使用してエンドポイントを編集します。

    • IP_address:integrated_port_no (デフォルトの統合ポート番号は8988です)

    • hostname (lower-case)

20.10.4.2 WSDLの変更なしでのエンドポイント・アドレスの変更

JAX-WS Webサービスの場合、次の例に示すように、WSDLを変更せずにエンドポイント・アドレスを変更できます。

import java.net.URI;
import java.net.URL;
import java.util.Map;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.WebServiceRef;
import project2.proxy.Hello;
import project2.proxy.HelloService;

public class HelloPortClient
{
   @WebServiceRef
   private static HelloService helloService;

   public static void main(String [] args) {
      helloService = new HelloService();
      Hello hello = helloService.getHelloPort();
      setEndpointAddress(hello, "http://some.new.addr/endpoint");
      hello.sayHello("Bob");
   }

   public static void setEndpointAddress(Object port, String newAddress) {
      assert port instanceof BindingProvider : 
        "Doesn't appear to be a valid port";
      assert newAddress !=null :"Doesn't appear to be a valid address";

      //
      BindingProvider bp = (BindingProvider)port;
      Map <String, object> context = bp.getRequestContext();
      Object oldAddress = context.get(
         BindingProvider.ENDPOINT_ADDRESS_PROPERTY);
      context.put(
         BindingProvider.ENDPOINT_ADDRESS_PROPERTY, newAddress);
   }
}

20.10.5 HTTPアナライザを使用したWebサービスの調査方法

HTTPアナライザを使用して、JAX-WS WebサービスまたはRESTful Webサービスに接続するクライアントのネットワーク・トラフィックを調べることができます。詳細は、第11.3.14項「Webサービスに対するHTTPアナライザの使用」を参照してください。

HTTPアナライザを使用すると、次の操作を実行できます。

  • WebサービスのTCPのリクエスト・パケットとレスポンス・パケットの詳細な内容を調べることができます。

  • リクエスト・パケットの編集と再送信、およびレスポンス・パケットの内容の確認ができます。

  • ポリシーを使用して保護されたWebサービスをテストできます。暗号化されたメッセージは復号化されます。

結果を使用して、ローカルまたはリモートにデプロイされているWebサービスをデバッグできます。


注意:

HTTPアナライザを使用する場合、プロキシ設定を更新する必要が生じることがあります。詳細は、第20.2.1項「プロキシ設定およびJDeveloperの使用方法」を参照してください。

Webサービスのクライアントによって送受信されるパケットを調べるには、次のようにします。

  1. Webサービスを作成します。

  2. ナビゲータでWebサービス・コンテナを右クリックし、「web_serviceの実行」を選択して、Webサービスを実行します。

    または

    Oracle WebLogic ServerでWebサービスをデプロイおよび実行します。詳細は、第20.8項「Webサービスのデプロイ」を参照してください。

  3. 「ツール」→「Httpアナライザ」を選択してHTTPアナライザを起動します。アナライザは、JDeveloper内の専用ウィンドウで開きます。

  4. 「Httpアナライザの起動」この図は周囲のテキストで説明していますをクリックしてHTTPアナライザを実行します。

  5. Webサービスのクライアント・プロキシを実行します。HTTPアナライザ・テスト・ウィンドウにリクエスト・パケットとレスポンス・パケットのペアが表示されます。

    テスト・ウィンドウでは、メッセージのヘッダーとパラメータを調べることができます。サービスをテストするには、適切なパラメータを入力して「リクエストの送信」をクリックします。

  6. リクエストおよびレスポンス・パケットのHTTPヘッダーの内容を調べ、HTTPアナライザ・テスト・ウィンドウの下部にある該当のタブを選択して、SOAP構造(JAX-WS Webサービスの場合)、HTTPコンテンツ、WADL構造(RESTfulサービスの場合)、16進コンテンツまたはRAWメッセージ・コンテンツを確認できます。

  7. 次のいずれかのタスクを実行して、ポリシーで保護されたWebサービスをテストできます。

    • 「資格証明」リストから既存の資格証明を選択します。

      JDeveloperには、事前構成済の資格証明セットとしてHTTPS Credentialが付属しています。

    • 「新規作成」をクリックして、新しい資格証明を作成します。「資格証明」ダイアログで、HTTPアナライザ・テスト・ウィンドウで使用する資格証明を定義します。HTTPS、ユーザー名トークン、X509、STSのいずれかの資格証明を定義できます。詳細は、第11.3.8項「HTTPアナライザによるSSLの使用」を参照してください。