ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド
11g リリース1 (10.3.6)
B61645-05
  目次へ移動
目次

前
 
次
 

3 WebLogic Webサービスの開発

この章では、Java API for XML-based Web services (JAX-WS)を使用したWebLogic Webサービスの反復的な開発プロセスについて説明します。

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

WebLogic Webサービス・プログラミング・モデルの概要

WebLogic Webサービスのプログラミング・モデルはJWSファイル(JWSアノテーションを使用してWebサービスの形式や動作を指定したJavaファイル)と、JWSファイルを実行するAntタスクを中心に展開されます。JWSアノテーションはJDKバージョン5.0で導入されたメタデータ機能に基づいており(JSR-175 http://www.jcp.org/en/jsr/detail?id=175で規定)、Web Services Metadata for the Java Platform仕様(JSR-181)(http://www.jcp.org/en/jsr/detail?id=181)およびJAX-WS仕様(JSR-224)(http://jax-ws.java.net)で定義された標準のアノテーションと追加のアノテーションがあります。サポートされるJWSアノテーションの完全なリストについては、『Oracle WebLogic Server WebLogic Webサービスの紹介』のWebサービスのアノテーション・サポートに関する項を参照してください。このプログラミング・モデルの詳細は、『Oracle WebLogic Server WebLogic Webサービスの紹介』のWebLogic Webサービスの構造に関する項を参照してください。

Webサービスは、2つの開発手法(ボトムアップまたはトップダウン)を使用して作成できます。ボトムアップ開発は、SOAPを使用して基礎となるJava実装からWebサービスを開発するプロセスを意味します。トップダウン開発は、WSDLソースからWebサービスを開発することを意味します。

次の項では、Webサービスを繰返し開発する主要な手順を、Javaから開始する場合(ボトムアップ)、または既存のWSDLファイルから開始する場合(トップダウン)について説明します。

反復的な開発とは、希望どおりに動作するまで、Webサービスを繰返しコーディング、コンパイル、パッケージ化、デプロイ、およびテストできるように、開発環境を設定することです。WebLogic Webサービス・プログラミング・モデルでは、Antタスクを使用して、反復的な開発のほとんどの手順を実行します。一般に、すべての手順に対応するターゲットを含んだ1つのbuild.xmlファイルを作成して、そのターゲットを繰返し実行し、JWSファイルを新しいJavaコードで更新したら、その更新が期待どおりに動作することをテストします。

このセクションで説明されているコマンド・ライン・ツールの他に、Webサービスを開発するためにOracle JDeveloperまたはOracle Enterprise Pack for Eclipse (OEPE)のようなIDEを使用できます。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』のWebサービスをビルドするためのOracle IDEの使用に関する項を参照してください。

高度なWebサービス機能のためのドメインの構成

ドメインを作成または拡張する際には、JAX-WS拡張用のWebLogicの高度なWebサービス・テンプレート(wls_webservice_jaxws.jar)を適用して、次に示す高度なWebサービス機能のサポートに必要なリソースを自動的に構成できます。

この拡張テンプレートの使用は必須ではありませんが、必要なリソースの構成が非常に簡単になります。また、これらの拡張機能に必要なリソースを、Oracle WebLogic管理コンソールやWLSTを使用して手動で構成することも可能です。


注意:

拡張テンプレートを使用してドメインを構成する場合、WS-SecureConversationを使用するJAX-WS WebサービスにはAdvanced JAX-WSテンプレート(wls_webservice_jaxws)が必要です。


次の手順では、高度なWebサービス機能用にドメインを自動的に構成する方法を説明します。構成ウィザードを使用してWebLogic Serverドメインを作成および更新する詳細な手順については、『構成ウィザードによるドメインの作成』を参照してください。

高度なWebサービス機能に必要なリソース

表3-1に、JAX-WS拡張用のWebLogicの高度なWebサービス・テンプレートを使用する際に自動的に定義されるリソースをリストします。

拡張テンプレートを適用しない場合は、Oracle WebLogic管理コンソールまたはWLSTを使用して、リソースを手動で構成する必要があります。JMSターゲット指定は、必ず『Oracle WebLogic Server JMSの構成と管理』のJMS初級ユーザーおよび上級ユーザーのベスト・プラクティスに関する項で定義されているベスト・プラクティスに従って構成してください。具体的には:

  • 各WebLogic Serverに、JMSサーバー、ストア・アンド・フォワード(SAF)サービス・エージェントおよび永続ストアを構成します。クラスタで、それぞれをローカルの移行可能なターゲット(サーバー以外)にターゲット指定します。ほとんどの場合、そのホスト・サーバーのデフォルトの移行可能ターゲットを指定すれば十分です。

  • JMSモジュールをクラスタ(クラスタ環境を使用していない場合は単一サーバー)のターゲットに指定します。

  • モジュールにつき厳密に1つのサブデプロイメントを作成し、そのサブデプロイメントを適用可能なJMSサーバーまたはSAFエージェントにのみ(サーバーはではない)に移入します。

  • サブデプロイメントに対してJMS宛先をターゲット指定します(管理コンソールでは高度なターゲット指定とも呼ばれます)。JMS宛先にはデフォルトのターゲット指定オプションは決して使用しないでください。

表では次の変数が使用されます。

  • server_designator - 構成フレームワークにより自動的に生成されるIDを指定します。通常、このIDはauto_numberという形式です。

  • uniqueID - 構成フレームワークにより自動的に生成される一意の数値IDを指定します。通常、このIDは1234などの数値です。

  • server_name - ユーザー指定のサーバー名を指定します。


注意:

実行時にリソース名を変更しないでください。変更すると、実行時エラーやデータ損失が発生する可能性があります。

この表に示すように、一部のリソースは今後使用予定であるため予約されています。


表3-1 高度なWebサービス機能に必要なリソース

リソース名 リソースの種類 説明

WseeJaxwsJmsModule

JMSモジュール

高度なWebサービスに必要なJMSリソースを定義するJMSモジュールを定義します。このJMSモジュールの関連するすべてのターゲット(サーバーをターゲットとするJMSサーバー)がJAX-WS Webサービスのサポートに使用されます。このモジュールがターゲットとするすべてのサーバーには、適切なWebサービス・リソースが構成されている必要があります。

このモジュールは、ドメイン内のすべてのサーバーにターゲット設定することをお薦めします。

注意: 共通分散宛先(UDD)としてJMSモジュールを構成する必要があります。JAX-WSでWebサービスが使用するすべてのキューは共通分散宛先である必要があります。それ以外の場合は、例外がスローされます。

分散宛先を手動で構成する方法および詳細は、『Oracle WebLogic Server JMSのプログラミング』の分散宛先の使用に関する項を参照してください。

WseeJaxwsFileStore_server_designator

ファイル・ストア

WebLogic Serverが使用してI/O操作を処理し、物理ストレージ(ファイル、DBMSなど)にデータを保存したり、取得したりするファイル・ストアまたは物理ストアを指定します。

server_designatorで指定されているように、WseeJaxwsJmsModuleでターゲット設定されている各管理対象サーバーに個別のファイル・ストアが構成されます。単一のサーバー・ドメインのファイル・ストアの名前はWseeJaxwsFileStoreです。

注意: ファイル・ストアは移行可能なターゲットにターゲット設定することをお薦めします。

ファイル・ストアを手動で構成する方法は、『Oracle WebLogic Serverサーバー環境の構成』のWebLogic永続ストアの使い方に関する項を参照してください。

WseeJaxwsJmsServer_server_designator

JMSサーバー

JMSサーバー管理コンテナを指定します。server_designatorで指定されているように、WseeJaxwsJmsModuleのターゲットである各管理対象サーバーに個別のJMSサーバーが構成されます。JMSサーバーは、WseeFileStore_server_designatorをファイル・ストアとして使用します。

JMSサーバーを構成する際には、次のことをお薦めします。

  • JMSサーバーを移行可能なターゲットにターゲット指定します。

  • 各JMSサーバーで現実的な割当てを設定します。詳細は、『Oracle WebLogic Serverパフォーマンスおよびチューニング』のWebLogic JMSのチューニングに関する項を参照してください。

JMSサーバーを手動で構成する方法は、『Oracle WebLogic Server JMSの構成と管理』のJMS構成に関する項を参照してください。

WseeJaxwsJmsServeruniqueID

JMSサブデプロイメント

クラスタのすべての管理対象サーバーに定義されているJMSサーバーをターゲットとするJMSサブデプロイメントを指定します。

JMSサブデプロイメントを手動で構成する方法は、Oracle WebLogic Server管理コンソール・ヘルプのJMSシステム・モジュールへのサブデプロイメントの構成に関する項を参照してください。

weblogic.wsee.jaxws.mdb.DispatchPolicy

ワーク・マネージャ

アプリケーションがコンテナ内で複数の作業アイテムを同時に実行できるようにします。ドメインにワーク・マネージャが生成されると、WseeJaxwsJmsModuleのターゲットであるすべてのサーバーがターゲットになります。

注意: ワーク・マネージャ・リソースの名前は変更しないでください。

ワーク・マネージャを手動で構成する方法は、『Oracle WebLogic Server Timer and Work Manager API (CommonJ)プログラマーズ・ガイド』のワーク・マネージャAPIの説明に関する項を参照してください。

ReliableWseeJaxwsSAFAgent_server_name

SAFサービス・エージェント

可用性の高いJMSメッセージ生成を可能にします。server_nameで指定するように、各管理対象サーバーに個別のSAFエージェントが構成されます。SAFエージェントは、ファイル・ストアとしてWseeFileStore_server_nameを使用します。

1つのサーバー・ドメインで、SAFエージェントはReliableWseeJaxwsSAFAgentという名前になります。

SAFエージェントを構成する際には、各JMSサーバーで現実的な割当を設定することをお薦めします。詳細は、『Oracle WebLogic Serverパフォーマンスおよびチューニング』のWebLogic JMSのチューニングに関する項を参照してください。

SAFサービス・エージェントを構成するには、『Oracle WebLogic Serverストア・アンド・フォワードの構成と管理』のストア・アンド・フォワード・サービスの理解に関する項を参照してください。

WseeBufferedRequestQueue_server_designator

JMSキュー

バッファされたリクエストに使用するキューを指定します。server_nameで指定するように、各管理対象サーバーに個別のキューが構成されます。

単一のサーバー・ドメインでは、キューはWseeBufferedRequestQueueという名前になります。クラスタ・ドメインでは、各JMSキューの先頭にdist_という接頭辞が付きます。

キューを手動で構成する方法は、Oracle WebLogic Server管理コンソール・ヘルプのキューの構成に関する項を参照してください。

WseeBufferedRequestErrorQueue_server_designator

JMSキュー

最大試行回数内に処理できないバッファされたリクエストのWseeBufferedRequestQueueに使用するエラー・キューを指定します。server_nameで指定するように、各管理対象サーバーに個別のキューが構成されます。

単一のサーバー・ドメインでは、キューはWseeBufferedRequestErrorQueueという名前になります。クラスタ・ドメインでは、各JMSキューの先頭にdist_という接頭辞が付きます。

キューを手動で構成する方法は、Oracle WebLogic Server管理コンソール・ヘルプのキューの構成に関する項を参照してください。

WseeBufferedResponseQueue_server_designator

JMSキュー

バッファされたレスポンスに使用するキューを指定します。server_designatorで指定するように、各管理対象サーバーに個別のキューが構成されます。

単一のサーバー・ドメインでは、キューはWseeBufferedResponseQueueという名前になります。クラスタ・ドメインでは、各JMSキューの先頭にdist_という接頭辞が付きます。

キューを手動で構成する方法は、Oracle WebLogic Server管理コンソール・ヘルプのキューの構成に関する項を参照してください。

WseeBufferedResponseErrorQueue_server_designator

JMSキュー

最大再試行回数内で配信できないバッファされたレスポンス用にWseeBufferedResponseQueueに使用するエラー・キューを指定します。server_designatorで指定するように、各管理対象サーバーに個別のキューが構成されます。

単一のサーバー・ドメインでは、キューはWseeBufferedResponseErrorQueueという名前になります。クラスタ・ドメインでは、各JMSキューの先頭にdist_という接頭辞が付きます。

キューを手動で構成する方法は、Oracle WebLogic Server管理コンソール・ヘルプのキューの構成に関する項を参照してください。

WseeStore

論理ストア

論理ストアを定義します。WseeJaxwsJmsModuleのターゲットである各管理対象サーバーに個別の論理ストアが構成されます。論理ストアは構成およびファイル・ストアにWseeBufferedRequestQueueキューを指定します。

論理ストアを手動で構成するには、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』の論理ストアの手動による構成に関する項を参照してください。


高度なWebサービス機能用にドメインを拡張するスクリプト

WebLogic Advanced Web Services for JAX-WS拡張テンプレート(wls_webservice_jaxws.jar)のJARファイルには、既存のドメインを拡張してWebLogic Advanced Web Services for JAX-WS拡張テンプレートを使用する場合に役立つ次の2つのPythonスクリプトがあります。


注意:

いずれかのスクリプトを実行する前に、JMSモジュールがドメイン内のすべてのサーバーにターゲット設定されていることを確認する必要があります。


表3-2 高度なWebサービス機能用にドメインを拡張するスクリプト

スクリプト 説明

wls_webservice_complete_update_utils.py

WLSTスクリプト内から拡張テンプレートを使用してドメインを拡張できます。詳細および例については、「Web Services拡張テンプレートでドメインを拡張するためのWLSTの使用」を参照してください。

wls_webservice_complete_update.py

Javaのコマンド・ラインから拡張テンプレートを使用してドメインを拡張できます。例:

java weblogic.WLST -i wls_webservice_complete_update.py <domain-dir>


高度なWebサービス機能のための構成ウィザードを使用したドメインの構成

次の項では、高度なWebサービス機能のためにドメインを構成する方法について説明します。

Webサービス拡張テンプレートを使用したドメインの作成

高度なWebサービス機能用に自動的に構成されるドメインを作成するには:

  1. 構成ウィザードを起動します。

  2. 「ようこそ」ウィンドウで、「新しいWebLogicドメインの作成」を選択します。

  3. 「次へ」をクリックします。

  4. 「次の製品をサポートするために、自動的に構成されたドメインを生成する」を選択し、JAX-WS拡張用のWebLogicの高度なWebサービスを選択します。

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

  6. ドメインの名前と場所を入力し、「次へ」をクリックします。

  7. 管理者ユーザーの名前とパスワードを構成し、「次へ」をクリックします。

  8. サーバーの起動モードとJDKを構成し、「次へ」をクリックします。

  9. 追加のサーバーおよびクラスタを構成するには:

    1. 管理対象サーバーおよびクラスタを定義するには、「オプションの構成を選択」画面で、少なくとも「管理対象サーバー、クラスタ、およびマシン」を選択します。必要に応じて、その他のアイテムを選択し「次へ」をクリックします。

    2. 環境の管理対象サーバーを構成し、「次へ」をクリックします。

    3. 環境のクラスタを構成し、「次へ」をクリックします。

    4. 「クラスタに割当て」画面でクラスタに管理対象サーバーを割り当て、「次へ」をクリックします。

    5. 環境のマシンを構成し、「次へ」をクリックします。

    6. 「サービスのクラスタまたはサーバーへのターゲット設定」画面で環境に定義されているサービスをクラスタにターゲット設定し、「次へ」をクリックします。

      注意: WseeJaxwsJmsModule JMSモジュールおよびweblogic.wsee.jaxws.mdb.DispatchPolicyワーク・マネージャは、クラスタ内のすべてのサーバーにターゲット設定してください。

      この画面でターゲット設定されたサーバーは、高度なWebサービスで使用するために完全に構成されます。

    7. (ステップ9aで選択した場合は)残りの構成画面でその他の情報を構成し、「次へ」をクリックします。

  10. 「構成のサマリー」画面が表示されたら、ドメインの詳細を検証して「作成」をクリックします。

Webサービス拡張テンプレートを使用したドメインの拡張

既存のドメインを拡張してこれらのWebサービス機能用に自動的に構成するには:

  1. 構成ウィザードを起動します。

  2. 「ようこそ」ウィンドウで、「既存のWebLogicドメインの拡張」を選択します。

  3. 「次へ」をクリックします。

  4. 拡張テンプレートを適用するドメインを選択します。

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

  6. 「次の追加製品をサポートするために、自動的にドメインを拡張する」を選択し、JAX-WS拡張用のWebLogicの高度なWebサービスを選択します。

  7. 「次へ」をクリックします。

  8. 追加のサーバーおよびクラスタを構成するには:

    1. 管理対象サーバーおよびクラスタを定義するには、「オプションの構成を選択」画面で、少なくとも「管理対象サーバー、クラスタ、およびマシン」を選択します。必要に応じて、その他のアイテムを選択し「次へ」をクリックします。

    2. 環境の管理対象サーバーを構成し、「次へ」をクリックします。

    3. 環境のクラスタを構成し、「次へ」をクリックします。

    4. 「クラスタに割当て」画面でクラスタに管理対象サーバーを割り当て、「次へ」をクリックします。

    5. 環境のマシンを構成し、「次へ」をクリックします。

    6. 「サービスのクラスタまたはサーバーへのターゲット設定」画面で環境に定義されているサービスをクラスタにターゲット設定し、「次へ」をクリックします。

      注意: WseeJaxwsJmsModule JMSモジュールおよびweblogic.wsee.jaxws.mdb.DispatchPolicyワーク・マネージャは、クラスタ内のすべてのサーバーにターゲット設定してください。

      この画面でターゲット設定されたサーバーは、高度なWebサービスで使用するために完全に構成されます。

    7. (ステップ9aで選択した場合は)残りの構成画面でその他の情報を構成し、「次へ」をクリックします。

  9. 拡張するドメインが正しいことを確認して「拡張」をクリックします。

  10. 終了するには「完了」をクリックします。

Webサービス拡張テンプレートを使用したドメイン拡張でのWLSTの利用

次に、Webサービス拡張テンプレートを使用してドメインを拡張する際にWLSTを使用する方法の例を示します。特にこの例では、単一のサーバー・ドメインを拡張する方法について説明します。すでに単一のサーバー・ドメインを作成済であることを前提としています。次のサンプル・スクリプトで示されている場所に、サーバーおよびクラスタを追加できます。

スクリプトを更新し、ドメインに対して実行したら、すべてのリソースが高度なWebサービス機能用に構成されます。

詳細は、サンプルに記載されているコメントを確認してください。記述されているWLSTコマンドの詳細は、『Oracle WebLogic Scripting Tool』を参照してください。


注意:

この例の最後で使用されているwls_webservice_complete_update_utils.pyスクリプトは、Webサービス拡張テンプレートを使用してドメインを拡張する際にドメイン・ディレクトリに追加されます。


例3-1 Webサービス拡張テンプレートを使用したドメイン拡張のためのWLSTスクリプト

# Read the domain. 
readDomain(single_server_domain_dir)
 
# Apply the template to the domain to configure the servers for advanced Web service features.
installDir = install_directory/wlserver_10.3
templateLocation = installDir + '/common/templates/applications/wls_webservice_jaxws.jar'
addTemplate(templateLocation)

# Save and close the domain
updateDomain()
closeDomain()

# Read the domain
readDomain(domain_dir)
 
# Optionally create any servers and clusters required in your domain environment.
# <Include create calls here . . . >
# For example: create('server1','Server') or create('cluster1','Cluster')
 
# Optionally configure the JMS module as a Uniform Distributed Destination (Recommended)
setDistDestType('WseeJaxwsJmsModule', 'UDD')

# Target WseeJaxwsJmsModule to the desired servers and clusters.
assign('JMSSystemResource', 'WseeJaxwsJmsModule', 'Target', server_or_cluster)
# Repeat assign call for other servers and clusters in the environment.

# Unassign the resource from the Administration Server.
unassign('JMSSystemResource', 'WseeJaxwsJmsModule', 'Target', Administration_Server)
 
sys.path.append(domain_dir)

# Import the wls_webservice_complete_update_utils.py script. This script is added to the domain directory
# when you extend the domain using the Web services extension template.
import wls_webservice_complete_update_utils as update
update.doWseeFixup(globals())

# Save and close the domain
updateDomain()
closeDomain()

ドメインの拡張後に追加されたリソースの更新

JAX-WS拡張用のWebLogicの高度なWebサービス・テンプレートを使用してドメインを作成または拡張した後に、ドメインでリソースを変更すると、次のWLSTスクリプトを使用してこれらのリソースの構成を迅速かつ簡単に更新できます。

スクリプトを更新し、ドメインに対して実行したら、すべてのリソースが高度なWebサービス機能用に構成されます。


注意:

この例の最後で使用されているwls_webservice_complete_update_utils.pyスクリプトは、Webサービス拡張テンプレートを使用してドメインを拡張する際にドメイン・ディレクトリに追加されます。


詳細は、サンプルに記載されているコメントを確認してください。記述されているWLSTコマンドの詳細は、『Oracle WebLogic Scripting Tool』を参照してください。

例3-2 ドメインの拡張後に追加されたリソースを更新するためのWLSTスクリプト

# Read the domain.
readDomain(domain_dir)

# Optionally configure the JMS module as a Uniform Distributed Destination (Recommended)
setDistDestType('WseeJaxwsJmsModule', 'UDD')

# Target WseeJaxwsJmsModule to the desired servers and clusters.
assign('JMSSystemResource', 'WseeJaxwsJmsModule', 'Target', server_or_cluster_name)
# Repeat assign call for other servers and clusters in the environment.

# Unassign the resource from the Administration Server.
unassign('JMSSystemResource', 'WseeJaxwsJmsModule', 'Target', Administration_Server_name)

sys.path.append(domain_dir)

# Import the wls_webservice_complete_update_utils.py script. This script is added to the domain directory
# when you extend the domain using the Web services extension template.
import wls_webservice_complete_update_utils as update
update.doWseeFixup(globals())

# Save and close the domain.
updateDomain()

WebLogic Advanced Web Services for JAX-WS拡張テンプレートを適用するときの問題に関するトラブルシューティング

WebLogic Advanced Web Services for JAX-WS拡張テンプレート(wls_webservice_jaxws.jar)を使用してドメインを作成または拡張するとき、次に類似したケースとしてfinal.pyスクリプトの実行中に例外が発生する場合があります。

2011-02-24 15:36:26,730 WARN  [Thread-32]
com.oracle.cie.domain.script.ScriptExecutor - warn: set obj126 attribute
Targets to "new_Cluster_1, new_Cluster_2, new_Cluster_3, new_Cluster_4,
new_Cluster_5, new_Cluster_6"
com.oracle.cie.domain.script.ScriptException: Unable to find attribute Targets
...

この問題を回避するには、次の手順に従います。

  1. 次のファイルを、WL_HOME/common/templates/applications以外のディレクトリにバックアップします。

    WL_HOME/common/templates/applications/wls_webservice_jaxws.jar

    たとえば、ファイルをWL_HOME/common/templates/applications/backupにコピーします。

  2. script/final.pyファイルをWL_HOME/common/templates/applications/wls_webservice_jaxws.jarファイルから削除します。

    Winzipなどのグラフィカル・ツールを使用するか、または次に示すコマンドラインを使用してこれを実行できます。

    1. WL_HOME/common/templates/applicationsディレクトリの直下にtempディレクトリを作成します。

    2. tempディレクトリにcdします。

    3. WL_HOME/common/templates/applications/wls_webservice_jaxws.jarファイル(オリジナル・コピー)をJAR解除します。例:

      jar -xvf  ../wls_webservice_jaxws.jar 
      
    4. script/final.pyファイルをディレクトリから削除します。

    5. オリジナルJARファイルを削除します。例:

      rm ../wls_webservice_jaxws.jar
      
    6. wls_webservice_jaxws.jarでJarファイルを作成します。例:

      jar cvf  ../wls_webservice_jaxws.jar *
      
  3. 次の手順を実行し、Javaコマンドラインから拡張テンプレートを使用してドメインを拡張します。

    1. ドメイン・ディレクトリにcdします。

    2. wls_webservice_complete_update.pyスクリプトを実行します。例:

      java weblogic.WLST -i wls_webservice_complete_update.py  .
      

      wls_webservice_complete_update.pyスクリプトの詳細は、「高度なWebサービス機能用にドメインを拡張するスクリプト」を参照してください。

Javaから開始するWebLogic Webサービスの開発: 主な手順

このセクションでは、Javaから開始してWebLogic Webサービスを開発する一般的な手順(JWSファイルを最初からコーディングして、サービスについて記述するWSDLファイルを後で生成する手順)について説明します。このプロセスの具体的な例については、第2章「ユース・ケースとサンプル」を参照してください。

次に示すのは推奨の手順にすぎません。独自の開発環境を設定してある場合は、WebLogic Webサービスを開発するために既存の環境を更新する際のガイドとして、この手順を利用できます。


注意:

この手順では、WebLogic Webサービスの分割開発ディレクトリ環境は使用しません。この開発環境を使用していて、Webサービスの開発をそこに統合する場合の詳細は、「WebサービスのWebLogic分割開発ディレクトリ環境への統合」を参照してください。


表3-3 Javaから開始するWebサービスの開発手順

#
手順 説明

1

環境を設定します。

コマンド・ウィンドウを開いて、ドメイン・ディレクトリのbinサブディレクトリにあるsetDomainEnv.cmd (Windows)またはsetDomainEnv.sh (UNIX)コマンドを実行します。WebLogic Serverドメインのデフォルトの場所は、MW_HOME/user_projects/domains/domainNameです。MW_HOMEはOracle製品の最上位のインストール・ディレクトリ、domainNameはドメインの名前です。

2

プロジェクト・ディレクトリを作成します。

JWSファイル、ユーザー定義のデータ型のJavaソース、Ant build.xmlファイルが格納されるプロジェクト・ディレクトリを作成します。このディレクトリには自由に名前を付けることができます。

3

Webサービスを実装するJWSファイルを作成します。

第4章「JWSファイルのプログラミング」を参照してください。

4

ユーザー定義のデータ型を作成する(オプション)

Webサービスでユーザー定義のデータ型を使用する場合は、その型を記述したJavaBeanを作成します。「ユーザー定義のJavaデータ型のプログラミング」を参照してください。

5

基本のAntビルド・ファイルbuild.xmlを作成します。

「基本的なAnt build.xmlファイルの作成」を参照してください。

6

JWSファイルに対してjwsc Antタスクを実行します。

ソース・コード、データ・バインディング・アーティファクト、デプロイメント記述子などがjwsc Antタスクによって出力ディレクトリ内に生成されます。この出力ディレクトリには、エンタープライズ・アプリケーションのディレクトリ構造も生成されます。この展開されたディレクトリは、後で反復的な開発プロセスの一環としてWebLogic Serverにデプロイします。「jwsc WebLogic WebサービスAntタスクの実行」を参照してください。

7

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

「WebLogic Webサービスのデプロイとアンデプロイ」を参照してください。

8

WebサービスのWSDLを参照します。

WebサービスのWSDLを参照して、Webサービスが適切にデプロイされたことを確認します。「WebサービスのWSDLの参照」を参照してください。

9

Webサービスをテストします。

「Webサービスのテスト」を参照してください。

10

Webサービスを編集します。(オプション)

Webサービスに変更を加えるには、JWSファイルを更新し、「WebLogic Webサービスのデプロイとアンデプロイ」の説明のとおりにWebサービスをアンデプロイしてから、jwsc Antタスクの実行(ステップ6)から始まる手順を繰り返します。


Webサービスを呼び出すクライアント・アプリケーションの記述の詳細は、第6章「Webサービスの呼出し」を参照してください。

WSDLファイルから開始するWebLogic Webサービスの開発: 主な手順

このセクションでは、既存のWSDLファイルに基づいてWebLogic Webサービスを開発する一般的な手順について説明します。このプロセスの具体的な例は、第2章「ユース・ケースとサンプル」を参照してください。

次に示すのは推奨の手順にすぎません。独自の開発環境を設定してある場合は、WebLogic Webサービスを開発するために既存の環境を更新する際のガイドとして、この手順を利用できます。

この手順では既存のWSDLファイルがすでにあることを前提としています。


注意:

この手順では、WebLogic Webサービスの分割開発ディレクトリ環境は使用しません。この開発環境を使用していて、Webサービスの開発をそこに統合する場合の詳細は、「WebサービスのWebLogic分割開発ディレクトリ環境への統合」を参照してください。


表3-4 Javaから開始するWebサービスの開発手順

#
手順 説明

1

環境を設定します。

コマンド・ウィンドウを開いて、ドメイン・ディレクトリのbinサブディレクトリにあるsetDomainEnv.cmd (Windows)またはsetDomainEnv.sh (UNIX)コマンドを実行します。WebLogic Serverドメインのデフォルトの場所は、MW_HOME/user_projects/domains/domainNameです。MW_HOMEはOracle製品の最上位のインストール・ディレクトリ、domainNameはドメインの名前です。

2

プロジェクト・ディレクトリを作成します。

生成されるアーティファクトやAnt build.xmlファイルが格納されるプロジェクト・ディレクトリを作成します。

3

基本のAntビルド・ファイルbuild.xmlを作成します。

「基本的なAnt build.xmlファイルの作成」を参照してください。

4

WSDLファイルを、build.xml Antビルド・ファイルから読取り可能なディレクトリに置きます。

たとえば、WSDLファイルをプロジェクト・ディレクトリのwsdl_files子ディレクトリに置くことができます。

5

WSDLファイルに対してwsdlc Antタスクを実行します。

JWSサービス・エンドポイント・インタフェース(SEI)、途中まで作成済みのJWSクラス・ファイル、XMLスキーマ・データ型を表すJavaBeanなどが、wsdlc Antタスクによって出力ディレクトリ内に生成されます。「wsdlc WebLogic WebサービスAntタスクの実行」を参照してください。

6

wsdlc Antタスクにより生成された途中まで作成済みのJWSファイルを更新します。

wsdlc Antタスクでは途中まで作成済のJWSファイルが生成されます。Webサービスが希望どおりに動作するようにするには、独自のビジネス・コードを追加する必要があります。「wsdlcで生成される途中まで作成済のJWS実装クラス・ファイルの更新」を参照してください。

7

JWSファイルに対してjwsc Antタスクを実行します。

wsdlc Antタスクによって生成されたアーティファクトと更新したJWS実装ファイルを指定して、Webサービスを実装するエンタープライズ・アプリケーションを生成します。「jwsc WebLogic WebサービスAntタスクの実行」を参照してください。

8

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

「WebLogic Webサービスのデプロイとアンデプロイ」を参照してください。

9

WebサービスのWSDLを参照します。

WebサービスのWSDLを参照して、Webサービスが適切にデプロイされたことを確認します。「WebサービスのWSDLの参照」を参照してください。

10

Webサービスをテストします。

「Webサービスのテスト」を参照してください。

11

Webサービスを編集します。(オプション)

Webサービスに変更を加えるには、JWSファイルを更新し、「WebLogic Webサービスのデプロイとアンデプロイ」の説明のとおりにWebサービスをアンデプロイしてから、jwsc Antタスクの実行(ステップ6)から始まる手順を繰り返します。


Webサービスを呼び出すクライアント・アプリケーションの記述の詳細は、第6章「Webサービスの呼出し」を参照してください。

基本的なAnt build.xmlファイルの作成

Antでは、<project>ルート要素と、Webサービス開発プロセスの様々な段階を指定した1つまたは複数のターゲットが含まれている、XMLで記述されたビルド・ファイル(デフォルト名はbuild.xml)を使用します。各ターゲットには、1つまたは複数のタスク、または実行可能なコードが含まれています。このセクションでは、基本的なAntビルド・ファイルの作成方法について説明し、その後のセクションでは、Webサービス開発プロセスの様々な段階(jwsc Antタスクを実行してJWSファイルを処理する、WebサービスをWebLogic Serverにデプロイする、など)の実行方法を指定したターゲットをビルド・ファイルに追加する方法について説明します。

以下のスケルトンのbuild.xmlファイルでは、以降の項で追加される他のすべてのターゲットを呼び出す、デフォルトのallターゲットを指定しています。

<project default="all">
  <target name="all" 
          depends="clean,build-service,deploy" />
  <target name="clean">
    <delete dir="output" />
  </target>
  <target name="build-service">
     <!--add jwsc and related tasks here -->
  </target>
  <target name="deploy">
      <!--add wldeploy task here -->
 </dftarget>
</project>

jwsc WebLogic WebサービスAntタスクの実行

jwsc Antタスクは、JWSアノテーションを含むJWSファイルを入力として使用し、WebLogic Webサービスの作成に必要なアーティファクトをすべて生成します。JWSファイルは、最初から自分でコーディングしたものでも、wsdlc Antタスクによって生成されたものでもかまいません。jwscによって生成されるアーティファクトには、次のものがあります。

これらのアーティファクトは、wsdlc Antタスクによってすでに生成され、JARファイル内にパッケージ化されているため、wsdlc Antタスクによって生成されたJWSファイルに対してjwsc Antタスクを実行しても、jwscタスクによってはアーティファクトは生成されません。この場合、jwsc Antタスクの属性を使用して、このwsdlc生成JARファイルを指定します。

必要なアーティファクトをすべて生成した後、jwsc Antタスクは、Javaファイル(JWSファイルも含む)をコンパイルし、コンパイルされたクラスと生成されたアーティファクトを、デプロイ可能なJARアーカイブ・ファイルにパッケージ化して、最後に、そのJARファイルを格納する、展開されたエンタープライズ・アプリケーション・ディレクトリを作成します。

jwsc Antタスクを実行するには、以下のtaskdefおよびbuild-serviceターゲットをbuild.xmlファイルに追加します。

<taskdef name="jwsc"
         classname="weblogic.wsee.tools.anttasks.JwscTask" />  
<target name="build-service">
    <jwsc
      srcdir="src_directory"
      destdir="ear_directory"
      >
      <jws file="JWS_file" 
           compiledWsdl="WSDLC_Generated_JAR" 
            type="WebService_type"/>
    </jwsc>
  </target>

ここで:

必須のtaskdef要素では、jwsc Antタスクの完全修飾クラス名を指定します。

jwsc Antタスクのsrcdirおよびdestdir属性のみが必須です。つまり、デフォルトでは、JWSファイルが参照するJavaファイル(JavaBean入力パラメータやユーザー定義の例外など)はJWSファイルと同じパッケージ内にあると想定されています。これに当てはまらない場合は、sourcepath属性を使用して、これらの他のJavaファイルの最上位ディレクトリを指定します。詳細は、『Oracle WebLogic Server WebLogic Webサービス・リファレンス』のjwscに関する項を参照してください。

jwscの使用例

以下のbuild.xmlの抜粋では、JWSファイルに対してjwsc Antタスクを実行する基本的な例を示します。

  <taskdef name="jwsc"
           classname="weblogic.wsee.tools.anttasks.JwscTask" />  
  <target name="build-service">
      <jwsc
        srcdir="src"
        destdir="output/helloWorldEar">
        <jws 
           file="examples/webservices/hello_world/HelloWorldImpl.java" 
           type="JAXWS"/>
      </jwsc>  
  </target>

この例では:

  • カレント・ディレクトリに対して相対的なoutput/helloWorldEarに、エンタープライズ・アプリケーションが展開形式で生成されます。

  • JWSファイルはHelloWorldImpl.javaという名前で、カレント・ディレクトリに対して相対的なsrc/examples/webservices/hello_worldディレクトリにあります。つまり、JWSファイルはパッケージexamples.webservices.helloWorld内にあります。

  • JAX-WS Webサービスが生成されます。

以下の例は前の例と似ていますが、compiledWsdl属性を使用して、wsdlcが生成したアーティファクト(「WSDLから開始する」ユース・ケース)を含むJARファイルを指定している点が異なります。

  <taskdef name="jwsc"
           classname="weblogic.wsee.tools.anttasks.JwscTask" />  
  <target name="build-service">
    <jwsc
      srcdir="src"
      destdir="output/wsdlcEar">
      <jws
          file="examples/webservices/wsdlc/TemperaturePortTypeImpl.java"
          compiledWsdl="output/compiledWsdl/TemperatureService_wsdl.jar" 
          type="JAXWS"/>
    </jwsc>
  </target>

この例では、TemperaturePortTypeImpl.javaファイルが、独自のビジネス・ロジックを含めて更新した、途中まで作成されていたJWSファイルです。compiledWsdl属性が指定されてJARファイルを指し示しているので、jwsc Antタスクでは、JARに含まれているアーティファクトを再生成することはありません。

このタスクを実際に実行するには、コマンド・ラインで次のように入力します。

  prompt> ant build-service

jwscの高度な使用方法

この項では、jwsc Antタスクの非常に簡単な使用例を紹介します。ただし、このタスクには、非常に有用なツールにするための追加の属性と子要素を含めます。以下のような使用方法が考えられます。

  • 複数のJWSファイルを一度に処理します。生成されたWebサービスをそれぞれ別のWebアプリケーションWARファイルにパッケージ化するか、すべてのWebサービスをグループ化して1つのWARファイルにパッケージ化するかを選択できます。

  • Webサービスの呼出し時にクライアント・アプリケーションが使用できるトランスポート手段(HTTP/HTTPS)を指定します。

  • 新しいエンタープライズ・アプリケーションまたはWebアプリケーションを生成するのではなく、既存のアプリケーションを更新します。

jwsc Antタスクの詳細および例については、『Oracle WebLogic Server WebLogic Webサービス・リファレンス』のjwscに関する項を参照してください。

wsdlc WebLogic WebサービスAntタスクの実行

wsdlc AntタスクはWSDLファイルを入力として処理し、WebLogic Webサービスの実装を構成するアーティファクトを生成します。次のようなアーティファクトがあります。

wsdlc AntタスクはJWS SEIとデータ・バインディング・アーティファクトを一緒にJARファイルにパッケージ化します。このJARファイルを後でjwsc Antタスクに指定します。このJARファイルを更新する必要はありません。更新するファイルはJWS実装クラスのみです。

wsdlc Antタスクを実行するには、以下のtaskdefおよびgenerate-from-wsdlターゲットをbuild.xmlファイルに追加します。

  <taskdef name="wsdlc"
          classname="weblogic.wsee.tools.anttasks.WsdlcTask"/>
  <target name="generate-from-wsdl">
    <wsdlc
        srcWsdl="WSDLFile"
        destJwsDir="JWS_interface_directory"
        destImplDir="JWS_implementation_directory"
        packageName="Package_name" 
        type="WebService_type"/>
  </target>

ここで:

必須のtaskdef要素では、wsdlc Antタスクの完全修飾クラス名を指定します。

wsdlc Antタスクでは、srcWsdlおよびdestJwsDir属性のみが必須です。ただし、通常は、プログラミングを容易にするために、途中まで作成済みのJWSファイルを生成します。WSDLファイルのtargetNamespaceが、読取り可能なパッケージ名への変換に適していない場合に備えて、パッケージ名を明示的に指定することをお薦めします。

以下のbuild.xmlの抜粋では、WSDLファイルに対してwsdlc Antタスクを実行する例を示します。

  <taskdef name="wsdlc"
          classname="weblogic.wsee.tools.anttasks.WsdlcTask"/>
  <target name="generate-from-wsdl">
      <wsdlc
          srcWsdl="wsdl_files/TemperatureService.wsdl"
          destJwsDir="output/compiledWsdl"
          destImplDir="impl_output"
          packageName="examples.webservices.wsdlc" 
          type="JAXWS" />
  </target>

この例では:

このタスクを実際に実行するには、コマンド・ラインで次のように入力します。

  prompt> ant generate-from-wsdl

詳細は、『Oracle WebLogic Server WebLogic Webサービス・リファレンス』のwsdlcに関する項を参照してください。

wsdlcで生成される途中まで作成済みのJWS実装クラス・ファイルの更新

wsdlc Antタスクは、destImplDir属性で指定されたディレクトリに、途中まで作成済のJWS実装ファイルを生成します。ファイルの名前はService_PortTypeImpl.javaで、Serviceは元のWSDLファイル内のサービスの名前、PortTypeはポート・タイプ名です。このクラス・ファイルには、独自のビジネス・ロジックを除いて、Webサービスへコンパイルするために必要なすべてのものが含まれています。

JWSクラスは、WSDLファイルに対応するJWS Webサービス・エンドポイント・インタフェースを実装しています。このJWS SEIもwsdlcによって生成され、他のアーティファクト(WSDL内のXMLスキーマ・データ型のJava表現など)が含まれているJARファイル内に置かれています。JWSクラスのパブリック・メソッドはWSDLファイル内の操作に対応しています。

wsdlc Antタスクは、JWS実装クラスに@WebServiceアノテーションを自動的に含めます。属性の値は、WSDL内の関連する値に対応しています。たとえば、@WebServiceserviceName属性は、WSDLファイル内の<service>要素のname属性と同じです。

JWSファイルを更新するときは、該当のWebサービス操作が希望どおりに動作するように、メソッドにJavaコードを追加します。通常、生成されるJWSファイルには、コードを追加すべき場所に次のようなコメントがあります。

  //replace with your impl here

また、他のJWSアノテーションをファイルに追加することもできますが、以下のような制限があります。

JWSファイルを更新したら、wsdlcの出力ディレクトリにそのまま置いておかないで、正式なソースの場所に移動することをお薦めします。

次の例は、「サンプルWSDLファイル」のWSDLからwsdlcが生成したJWS実装ファイルです。太字のテキストは、Webサービスの1つの操作(getTemp)を実装するJavaコードを追加する場所を示しています。

package examples.webservices.wsdlc;
import javax.jws.WebService;
/**
 * TemperaturePortTypeImpl class implements web service endpoint interface 
 * TemperaturePortType */
@WebService(
  serviceName="TemperatureService",
  endpointInterface="examples.webservices.wsdlc.TemperaturePortType")
public class TemperaturePortTypeImpl implements TemperaturePortType {
  public TemperaturePortTypeImpl() {
  }
  public float getTemp(java.lang.String zipcode)
  {
    //replace with your impl here
     return 0;
  }
}

WebLogic Webサービスのデプロイとアンデプロイ

Webサービスはエンタープライズ・アプリケーションとしてパッケージ化されるので、Webサービスのデプロイとは、該当するEARファイルまたは展開されたディレクトリをデプロイすることになります。

管理コンソールの使用からweblogic.Deployer Javaユーティリティの使用まで、WebLogicアプリケーションのデプロイには多様な方法があります。開発環境とは異なり、本番環境にアプリケーションをデプロイする際には、他にも様々な問題を考慮する必要があります。デプロイメントの詳細は、『Oracle WebLogic Serverへのアプリケーションのデプロイ』を参照してください。

このガイドでは、開発の性質上、Webサービスの2つのデプロイ方法についてのみ説明します。

wldeploy Antタスクを使用したWebサービスのデプロイ

反復的な開発プロセスの一環としてWebサービスをデプロイする最も簡単な方法は、wldeploy WebLogic Antタスクを実行するターゲットを、jwsc Antタスクが含まれる同じbuild.xmlファイルに追加することです。Javaコードを追加してサービスを再生成するたびに、サービスの再デプロイとテストを繰返し行えるように、Webサービスをデプロイするタスクとアンデプロイするタスクの両方を追加することができます。

wldeploy Antタスクを使用するには、以下のターゲットをbuild.xmlファイルに追加します。

  <target name="deploy">
      <wldeploy action="deploy"
        name="DeploymentName"
        source="Source" user="AdminUser"
        password="AdminPassword" 
        adminurl="AdminServerURL"
        targets="ServerName"/>
  </target>

ここで:

  • DeploymentName - エンタープライズ・アプリケーションのデプロイメント名、または、管理コンソールでデプロイメントのリストに表示される名前。

  • Source - デプロイするエンタープライズ・アプリケーションのEARファイルまたは展開されたディレクトリの名前。デフォルトでは、jwsc Antタスクが展開されたエンタープライズ・アプリケーション・ディレクトリを生成します。

  • AdminUser - 管理ユーザー名。

  • AdminPassword - 管理パスワード。

  • AdminServerURL - 管理サーバーのURL。通常はt3://localhost:7001です。

  • ServerName - WebサービスをデプロイするWebLogic Serverインスタンスの名前。

たとえば、以下のwldeployタスクでは、エンタープライズ・アプリケーションの展開されたディレクトリ(カレント・ディレクトリに対して相対的なoutput/ComplexServiceEarにある)がmyServer WebLogic Serverインスタンスにデプロイされることを指定します。デプロイメント名はComplexServiceEarです。

  <target name="deploy">
    <wldeploy action="deploy"
      name="ComplexServiceEar"
      source="output/ComplexServiceEar" user="weblogic"
      password="weblogic" verbose="true"
      adminurl="t3://localhost:7001"
      targets="myserver"/>
  </target>

Webサービスを実際にデプロイするには、コマンド・ラインでdeployターゲットを実行します。

  prompt> ant deploy

ソース・コードに変更を加えてからWebサービスを再デプロイできるように、Webサービスを簡単にアンデプロイするターゲットを追加することもできます。

  <target name="undeploy">
    <wldeploy action="undeploy"
      name="ComplexServiceEar"
      user="weblogic"
      password="weblogic" verbose="true"
      adminurl="t3://localhost:7001"
      targets="myserver"/>
  </target>

Webサービスをアンデプロイするときは、source属性を指定する必要はなく、名前によってアンデプロイします。

管理コンソールを使用したWebサービスのデプロイ

管理コンソールを使用してWebサービスをデプロイするには、最初に、ブラウザで次のURLを使用してWebサービスを呼び出します。

  http://[host]:[port]/console

ここで:

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

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

次にデプロイメント・アシスタントを使用して、エンタープライズ・アプリケーションをデプロイします。管理コンソールの詳細は、Oracle WebLogic Server管理コンソール・ヘルプを参照してください。

WebサービスのWSDLの参照

WebサービスのWSDLをブラウザで表示して、Webサービスが適切にデプロイされていることを確認できます。

次のURLは、WebサービスのWSDLをブラウザで表示する方法を示しています。

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

ここで:

たとえば、次のようにWebサービスの構築に使用するjwscタスクで<WLHttpTransport>子要素を指定したものとします。

<target name="build-service">
  <jwsc
     srcdir="src"
     destdir="${ear-dir}"
     keepGenerated="true">
    <jws file="examples/webservices/complex/ComplexImpl.java" 
       type="JAXWS">
    <WLHttpTransport
       contextPath="complex" serviceUri="ComplexService"
       portName="ComplexServicePort"/>
    </jws>
  </jwsc>
</target>

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

  http://ariel:7001/complex/ComplexService?WSDL

動的なWSDLで指定されたサーバー・アドレスの構成

デプロイ済のWebサービスのWSDL(動的なWSDLともいいます)には、特定のWebサービス・ポートにアドレス(URI)を割り当てる<address>要素が含まれています。たとえば、次に示すWSDLの抜粋には、ComplexServiceというデプロイ済のWebLogic Webサービスの一部が記述されています。

<definitions name="ComplexServiceDefinitions"
             targetNamespace="http://example.org">
...
  <service name="ComplexService">
    <port binding="s0:ComplexServiceSoapBinding" name="ComplexServicePort">
      <s1:address location="http://myhost:7101/complex/ComplexService"/>
    </port>
  </service>
</definitions>

この例では、ComplexService WebサービスにComplexServicePortというポートが含まれており、そのアドレスはhttp://myhost:7101/complex/ComplexServiceとなっています。

WebLogic Serverは、このアドレスのcomplex/ComplexServiceの部分を、jwsc要素のcontextPathおよびserviceURI属性を調べることによって決定します(「WebサービスのWSDLの参照」に説明があります)。しかし、WebLogic Serverがアドレスのプロトコルおよびホスト部分(この例ではhttp://myhost:7101)を決定するために使用する方法は、次で説明するとおり、より複雑です。この項では、わかりやすいように、アドレスのプロトコルとホストの部分をまとめてサーバー・アドレスと呼ぶことにします。

WebLogic Serverがデプロイ済のWebサービスの動的なWSDL内にパブリッシュするサーバー・アドレスは、そのWebサービスをHTTP/SやJMSで呼び出せるかどうか、プロキシ・サーバーを構成しているかどうか、Webサービスがクラスタにデプロイされているかどうか、Webサービスが実際にはコールバック・サービスであるかどうかによって異なります。

以下では、これらの構成の違いに応じたサーバー・アドレスの決定方法について説明します。また、ニーズに合わせて構成を変更するための手順説明へのリンクも示します。

なお、ここでは、クラスタとスタンドアロン・サーバーを、WebLogic Server管理コンソールを使用して構成することを前提としています。

Webサービスがコールバック・サービスでなく、HTTP/Sを使用して呼び出せる場合

  1. Webサービスがクラスタにデプロイされており、クラスタのFrontend HostFrontend HTTP Port、およびFrontend HTTPS Portが設定されている場合は、動的なWSDLのサーバー・アドレスにこれらの値が使用されます。

    Oracle WebLogic Server管理コンソール・ヘルプクラスタのHTTP設定の構成に関する項を参照してください。

  2. 前述のクラスタ値は設定されていないが、Webサービスがデプロイされている個々のサーバーFrontend HostFrontend HTTP Port、およびFrontend HTTPS Portの値が設定されている場合は、サーバー・アドレスにこれらの値が使用されます。

    Oracle WebLogic Server管理コンソール・ヘルプHTTPプロトコルの構成に関する項を参照してください。

  3. これらの値がクラスタにも個々のサーバーにも設定されていない場合は、動的なWSDL内のWSDLリクエストのサーバー・アドレスが使用されます。

Webサービスがコールバック・サービスである場合

  1. コールバック・サービスがクラスタにデプロイされており、クラスタのFrontend HostFrontend HTTP Port、およびFrontend HTTPS Portが設定されている場合は、動的なWSDLのサーバー・アドレスにこれらの値が使用されます。

    Oracle WebLogic Server管理コンソール・ヘルプクラスタのHTTP設定の構成に関する項を参照してください。

  2. コールバック・サービスがクラスタまたはスタンドアロン・サーバーにデプロイされており、上記のクラスタ値は設定されていないが、コールバック・サービスがデプロイされている個々のサーバーFrontend HostFrontend HTTP Port、およびFrontend HTTPS Portの値が設定されている場合は、サーバー・アドレスにこれらの値が使用されます。

    Oracle WebLogic Server管理コンソール・ヘルプHTTPプロトコルの構成に関する項を参照してください。

  3. コールバック・サービスがクラスタにデプロイされており、上記のどの値も設定されていないがCluster Addressが設定されている場合は、サーバー・アドレスにこの値が使用されます。

    Oracle WebLogic Server管理コンソール・ヘルプクラスタの構成に関する項を参照してください。

  4. 上記のどの値も設定されていないが、コールバック・サービスがデプロイされているサーバーのListen Addressが設定されている場合は、サーバー・アドレスにこの値が使用されます。

    Oracle WebLogic Server管理コンソール・ヘルプリスニング・アドレスの構成に関する項を参照してください。

Webサービスがプロキシ・サーバーを使用して呼び出せる場合

必須ではありませんが、Webサービスがデプロイされているクラスタまたは個々のサーバーのFrontend HostFrontEnd HTTP Port、およびFrontend HTTPS Portがプロキシ・サーバーを指すように明示的に設定することをお薦めします。

Oracle WebLogic Server管理コンソール・ヘルプクラスタのHTTP設定の構成に関する項またはHTTPプロトコルの構成に関する項を参照してください。

Webサービスのテスト

WebLogic Webサービスのデプロイメントが完了したら、WebLogic管理コンソールに含まれているWebサービス・テスト・クライアントを使用して、コードを記述することなくサービスをテストできます。複合型を持つWebサービスや、WebLogic Serverの高度な機能(会話など)を使用するWebサービスも含めて、Webサービスを素早く簡単にテストできます。テスト・クライアントはリクエストの完全なログを自動的に保持しているので、ユーザーは以前の呼出しに戻って結果を表示することができます。

デプロイしたWebサービスを管理コンソールを使用してテストするには、次の手順に従います。

  1. 次のURLを使用して、ブラウザで管理コンソールを呼び出します。

    http://[host]:[port]/console
    

    ここで:

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

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

  2. Oracle WebLogic Server管理コンソール・ヘルプWebサービスのテストに関する項を参照してください。

WebサービスのWebLogic分割開発ディレクトリ環境への統合

このセクションでは、Webサービスの開発をWebLogic分割開発ディレクトリ環境に統合する方法について説明します。このWebLogic機能について理解していること、標準のJava Platform, Enterprise Edition (Java EE)バージョン5アプリケーションおよびモジュール(EJBやWebアプリケーションなど)の開発用にこのタイプの環境を設定済であること、Webサービスの開発が含まれるようにbuild.xmlファイルの更新を計画していることを前提としています。

WebLogic分割開発ディレクトリ環境の詳細は、『Oracle WebLogic Serverアプリケーションの開発』の分割開発ディレクトリ環境の作成に関する項およびWebLogic Serverと一緒にインストールされるsplitdir/helloWorldEarサンプルを参照してください(サンプルは、WL_HOME/samples/server/examples/src/examplesディレクトリにあり、WL_HOMEはWebLogic Serverがインストールされている最上位ディレクトリです)。

  1. メイン・プロジェクト・ディレクトリ内に、Webサービスを実装するJWSファイルを格納するためのディレクトリを作成します。

    たとえば、メイン・プロジェクト・ディレクトリが/src/helloWorldEarである場合、/src/helloWorldEar/helloWebServiceというディレクトリを作成します。

    prompt> mkdir /src/helloWorldEar/helloWebService
    
  2. helloWebServiceディレクトリの下に、JWSファイルのパッケージ名に対応するディレクトリ階層を作成します。

    たとえば、JWSファイルがexamples.splitdir.helloパッケージにパッケージ化されている場合は、examples/splitdir/helloというディレクトリ階層を作成します。

    prompt> cd /src/helloWorldEar/helloWebService
    prompt> mkdir examples/splitdir/hello
    
  3. メイン・プロジェクト・ディレクトリに作成したWebサービスのサブディレクトリ(この例では/src/helloWorldEar/helloWebService/examples/splitdir/hello)にJWSファイルを置きます。

  4. エンタープライズ・アプリケーションをビルドするbuild.xmlファイル内に、「jwsc WebLogic WebサービスAntタスクの実行」の説明に従ってjwsc WebLogic WebサービスAntタスクの呼出しを追加して、Webサービスをビルドする新しいターゲットを作成します。

    jwscsrcdir属性は、JWSファイルを格納する最上位ディレクトリ(この例ではhelloWebService)を指すようにします。jwscdestdir属性は、wlcompileに指定するのと同じ宛先ディレクトリを指すようにします。次の例を参照してください。

      <target name="build.helloWebService">
        <jwsc
            srcdir="helloWebService"
            destdir="destination_dir"
            keepGenerated="yes" >
            <jws file="examples/splitdir/hello/HelloWorldImpl.java" 
             type="JAXWS" />
        </jwsc>
      </target>
    

    この例のdestination_dirは、他の分割開発ディレクトリ環境のAntタスク(wlappcwlcompileなど)も使用する宛先ディレクトリを表します。

  5. Webサービス関連のターゲットを呼び出すように、build.xmlファイルのメインのbuildターゲットを更新します。

      <!-- Builds the entire helloWorldEar application -->
      <target name="build"
        description="Compiles helloWorldEar application and runs appc"
        depends="build-helloWebService,compile,appc" />
    

    注意:

    エンタープライズ・アプリケーションを実際にビルドするときは、wlappc Antタスクを実行するに、jwsc Antタスクを実行するようにしてください。wlappcを正常に実行するには、jwscによって生成されるアーティファクトの一部が必要になるためです。この例の場合は、appcターゲットよりもbuild-helloWebServiceターゲットを指定する必要があります。


  6. wlcompileおよびwlappc Antタスクを使用してエンタープライズ・アプリケーション全体をコンパイルおよび検証する場合は、両方のAntタスクでWebサービスのソース・ディレクトリを除外するようにしてください。これは、jwsc AntタスクでWebサービスのコンパイルとパッケージ化をすでに扱っているためです。例:

    <target name="compile">
       <wlcompile srcdir="${src.dir}" destdir="${dest.dir}"
               excludes="appStartup,helloWebService">
       ...
       </wlcomplile>
    ...
    </target>
    <target name="appc">
       <wlappc source="${dest.dir}" deprecation="yes" debug="false"
               excludes="helloWebService"/>
    </target>
    
  7. META-INFプロジェクト・ソース・ディレクトリにあるapplication.xmlファイルを更新して、<web>モジュールを追加し、jwsc Antタスクによって生成されるWARファイルの名前を指定します。

    たとえば、helloWorld Webサービスのapplication.xmlファイルに次のように追加します。

    <application>
    ...
      <module>
        <web>
          <web-uri>examples/splitdir/hello/HelloWorldImpl.war</web-uri>
          <context-root>/hello</context-root>
        </web>
      </module>
    ...
    </application>
    

    注意:

    jwsc Antタスクでは通常、Webサービスを実装するJWSファイルからWebアプリケーションWARファイルが生成されまが、JWSファイルに@Statelessアノテーションを使用してEJBが定義されている場合は例外です。その場合は、application.xmlファイルに<ejb>モジュール要素を追加する必要があります。


これで、分割開発ディレクトリ環境は、Webサービスの開発を含むように更新されました。エンタープライズ・アプリケーション全体を再ビルドしてデプロイするときに、WebサービスもEARの一部としてデプロイされます。Webサービスは、「WebサービスのWSDLの参照」で説明されている標準的な方法で呼び出します。