Oracle® Fusion Middleware Oracle WebLogic Server JAX-RPC を使用した Web サービス入門 11g リリース 1 (10.3.1) B55567-01 |
|
![]() 戻る |
以下の節では、10.3.1 リリースより前のリリースの WebLogic Server Web サービスを、Oracle WebLogic Server 11g リリース 1 (10.3.1) Web サービスの実行時環境で動作するようにアップグレードする方法を説明します。
注意 : 8.1 および 9.2 WebLogic Web サービスのランタイムは 10.3.1 でもサポートされるため、変更しなくても WebLogic Server のこのリリースで引き続き実行できます。ただし、8.1 および 9.2 WebLogic Web サービスは非推奨になっており、今後のリリースの製品からは削除される予定です。このため、この章の指示に従って、8.1 および 9.2 Web サービスを 10.3.1 にアップグレードすることをお勧めします。8.1 Web サービスを 10.3.1 バージョンの WebLogic Server で実行するためには、以下のシステム プロパティを更新する必要があります。 System.setProperty('javax.xml.soap.SOAPFactory', 'weblogic.webservice.core.soap.SOAPFactoryImpl'); 10.3.1 Web サービス アプリケーションがこのシステム プロパティの設定によって受ける影響を最小限にするには、8.1 Web サービスとクライアントを 10.3.1 Web サービスとクライアントのサーバとは別のサーバにデプロイすることをお薦めします。 |
9.2 または 10.x WebLogic Web サービスを 10.3.1 へアップグレードするために必要な手順はありません。該当 Web サービスは、変更や再コンパイルを行わずに WebLogic Server 10.3.1 へ再デプロイすることができます。
9.0 または 9.1 の Web サービスで以下のいずれかの機能を使用していた場合、WebLogic Server 10.3.1 に再デプロイする前に Web サービスを再コンパイルする必要があります。
会話
@weblogic.jws.Context
JWS アノテーション
weblogic.wsee.jws.JwsContext
API
再コンパイルするには、単に Web サービスを実装する JWS ファイルに対して jwsc
Ant タスクを再実行するだけでかまいません。
9.0 または 9.1 の Web サービスでこれらの機能を使用していなかった場合、変更や再コンパイルをせずに WebLogic Server 10.3.1 に再デプロイできます。
この節では、8.1 WebLogic Web サービスをアップグレードして、新しいバージョン 10.3.1 の Web サービス実行時環境を使用するようにする方法を説明します。10.3.1 ランタイムは、Web Services for Java EE 1.2 仕様 (http://www.jcp.org/en/jsr/detail?id=109
) に基づきます。10.3.1 プログラミング モデルでは、Web Services Metadata for the Java Platform 仕様 (JSR-181) (http://www.jcp.org/en/jsr/detail?id=181
) で指定される JDK 1.5 メタデータ アノテーションを使用します。
注意 : 8.1 WebLogic Web サービスのランタイムは 10.3.1 でもサポートされるため、8.1 の Web サービスは変更しなくても WebLogic Server 10.3.1 で引き続き実行できます。ただし、8.1 WebLogic Web サービスは非推奨になっており、今後のリリースの製品からは削除される予定です。このため、この章の指示に従って、8.1 Web サービスを 10.3.1 にアップグレードすることをお勧めします。 |
8.1 Web サービスのアップグレードには、以下の高度なタスクが含まれます。以降の節の手順説明では、より詳しく説明します。
Web サービスを実装する Java クラスやステートレス セッション EJB の 8.1 Java ソース コードを、JWS アノテーションが使用されるように更新する。
10.3.1 では、WebLogic Web WEB サービスは、JWS ファイルを使用して実装します。JWS ファイルは、JWS アノテーションを含む Java ファイルです。jwsc
Ant タスクは、JWS ファイルに明示的に javax.ejb.SessionBean
を実装しない限り、常に Web サービスをプレーン Java ファイルとして実装します。明示的に javax.ejb.SessionBean を実装するのは、一般的ではありません。このプログラミング モデルは、バックエンド コンポーネントの種類 (Java クラスか EJB か) の指定が必要だった 8.1 のモデルとは異なります。
Web サービスをビルドする Ant ビルド スクリプトを、8.1 の servicegen
タスクではなく 10.3.1 の WebLogic Web サービス Ant タスク jwsc
を呼び出すように更新する。
以下の節では、次のことが前提となっています。
8.1 Web サービスの生成に servicegen
を使用したことがあり、より全般的には、WebLogic Server で動作する Web サービスやその他の Java Platform, Enterprise Edition (Java EE) バージョン 5 アーティファクトを、開発環境で Ant スクリプトを使用して繰り返し開発していること。この節の手順説明では、既存の Ant build.xml
ファイルを更新する手順を説明します。
8.1 Web サービスの Java クラスまたは EJB のソース コードにアクセスできること。
この節では、以下の内容については説明しません。
JMS 実装の 8.1 Web サービスのアップグレード。10.3.1 WebLogic Web サービス ランタイムは、JMS 実装のサービスをサポートしていないためです。
8.1 より前のバージョンの Web サービスのアップグレード。
8.1 Web サービスを呼び出すクライアント アプリケーションから 10.3.1 Web サービスを呼び出すクライアント アプリケーションへのアップグレード。10.3.1 Web サービスを呼び出すクライアント アプリケーションの記述方法については、「Web サービスの呼び出し」を参照してください。
8.1 Java クラス実装の Web サービスを、10.3.1 WebLogic Web サービス ランタイムを使用するようにアップグレードするには、次の手順に従います。
コマンド ウィンドウを開いて、10.3.1 ドメイン ディレクトリの bin
サブディレクトリにある setDomainEnv.cmd
(Windows) または setDomainEnv.sh
(UNIX) スクリプトを実行して、WebLogic Server 10.3.1 環境を設定します。
WebLogic Server ドメインのデフォルトの場所は、MW_HOME
/user_projects/domains/
domainName
です。MW_HOME
は Oracle 製品の最上位のインストール ディレクトリ、domainName
はドメインの名前です。
プロジェクト ディレクトリを作成します。
prompt> mkdir /myExamples/upgrade_pojo
プロジェクト ディレクトリの下に、src
ディレクトリと、古い 8.1 Java クラスに対応する新しい 10.3.1 JWS ファイル (この手順で後述) のパッケージ名に相当するサブディレクトリを作成します。
prompt> cd /myExamples/upgrade_pojo prompt> mkdir src/examples/webservices/upgrade_pojo
8.1 Web サービスを実装する古い Java クラスを、作業ディレクトリの src/examples/webservices/upgrade_pojo
ディレクトリにコピーします。必要に応じてファイル名を変更してください。
次の手順に従って Java ファイルを編集します。新旧のサンプル Java ファイルについては、「8.1 Java ファイルと対応する 10.3.1 JWS ファイルの例」の個々の例を参照してください。
必要に応じて、新しい 10.3.1 ソース環境を反映するように Java ファイルのパッケージ名とクラス名を変更します。
import
文を追加して、標準および WebLogic 固有の JWS アノテーションがインポートされるようにします。
少なくとも、次の JWS アノテーションを追加します。
JWS ファイルが Web サービスを実装することを指定する標準の @WebService
アノテーション (Java クラス レベルで追加)
以下のアノテーションも追加することをお勧めします。
Web サービスの種類 (document-literal-wrapped、RPC-encoded など) を指定する標準の @SOAPBinding
アノテーション (クラス レベルで追加)
デプロイされた Web サービスを呼び出す URL で使用されるコンテキストとサービス URI を指定する WebLogic 固有の @WLHttpTransport
アノテーション (クラス レベルで追加)
標準の @WebMethod
アノテーション (Web サービス オペレーションとして公開されるメソッドごとにメソッド レベルで追加)
Java ファイルでの JWS アノテーションの使用に関する概要については、「JWS ファイルのプログラミング」を参照してください。
10.3.1 Web サービスに引き継ぐ 8.1 Web サービスの機能によっては、JWS ファイルに他のアノテーションを追加することが必要な場合もあります。8.1 では、これらの機能の多くを servicegen
の属性を使用してコンフィグレーションしていました。「servicegen 属性と JWS アノテーションまたは jwsc 属性のマッピング」の表に、8.1 で servicegen
の属性を使用して有効にしていた機能に対応する JWS アノテーションをまとめてあります (相当するアノテーションがある場合のみ)。
8.1 Web サービスのビルドに使用していた古い build.xml
ファイルを 10.3.1 の作業ディレクトリにコピーします。
Ant build.xml
ファイルを更新して、servicegen
の代わりに jwsc
Ant タスクとその他のサポート タスクが実行されるようにします。
Ant ビルド ファイルで build-service
などの新しいターゲットを作成し、前の手順で作成した新しい JWS ファイルをコンパイルする jwsc
Ant タスク呼び出しを追加することをお勧めします。このターゲットがいったん正常に機能すれば、古い servicegen
Ant タスクは削除できます。
次に示す手順は、build.xml
ファイルを更新する際の主な手順です。詳細な手順については、「WebLogic Web サービスの開発」で説明する標準の反復開発プロセスを参照してください。
次の各手順の例については、「8.1 と更新された 10.3.1 の Ant ビルド ファイルの例 (Java クラス実装の Web サービス)」を参照してください。
jwsc
taskdef を build.xml
ファイルに追加します。
build-service
ターゲットを作成し、次の手順の説明に従って 10.3.1 Web サービスをビルドするのに必要なタスクを追加します。
jwsc
タスクをビルド ファイルに追加します。srdir
属性に src ディレクトリ (この例では /myExamples/upgrade_pojo/src
) を設定し、destdir
属性に前の手順で作成したエンタープライズ アプリケーションのルート ディレクトリを設定します。
<jws>
子要素の file
属性に、前の手順で作成した新しい JWS ファイルの名前を指定します。
10.3.1 Web サービスに引き継ぐ 8.1 Web サービスの機能によっては、jwsc
タスクに追加の属性を指定することが必要な場合もあります。8.1 では、これらの機能の多くを servicegen
の属性を使用してコンフィグレーションしていました。「servicegen 属性と JWS アノテーションまたは jwsc 属性のマッピング」の表で、servicegen
の属性を使用して有効にしていた機能に相当する jwsc
属性があるかどうかについて説明しています。
build-service
Ant ターゲットを実行します。すべてのタスクを正しく完了すると、アップグレードされた 10.3.1 Web サービスがエンタープライズ アプリケーションに含まれます。
Web サービスのデプロイとテストの詳細については、「WebLogic Web サービスのデプロイとアンデプロイ」および「Web サービスの WSDL の参照」を参照してください。
以降の節に示すサンプル Java コードの場合、アップグレード後の 10.3.1 Web サービスの WSDL を呼び出すための URL は次のようになります。
http://host:port/upgradePOJO/HelloWorld?WSDL
次のサンプル Java クラスは、8.1 Web サービスを実装していたものと仮定します。
package examples.javaclass; /** * HelloWorld Web サービスを実装する単純な Java クラス。入力として * 整数と文字列を取り、これら 2 つのパラメータを含むメッセージ * を返す。 */ public final class HelloWorld81 { /** * 整数と文字列の入力パラメータを含むテキスト メッセージ * を返す。 * */ public String sayHello(int num, String s) { System.out.println("sayHello operation has been invoked with arguments " + s + " and " + num); String returnValue = "This message brought to you by the letter "+s+" and the number "+num; return returnValue; } }
次に、10.3.1 JAVA クラス実装の Web サービスの JWS ファイルを示します。この例は、上に示した 8.1 の例に対応するもので、相違点が太字で示されています。一部の JWS アノテーションの値が、「8.1 と更新された 10.3.1 の Ant ビルド ファイルの例 (Java クラス実装の Web サービス)」に示す 8.1 servicegen
Ant タスクの属性から取得されている点に注意します。
package examples.webservices.upgrade_pojo; // 標準の JWS アノテーションをインポートする import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.soap.SOAPBinding; // WebLogic JWS アノテーションをインポートする import weblogic.jws.WLHttpTransport; /** * HelloWorld92 Web サービスを実装する単純な Java クラス。入力として * 整数と文字列を取り、これら 2 つのパラメータを含むメッセージ * を返す。 */ @WebService(name="HelloWorld92PortType", serviceName="HelloWorld", targetNamespace="http://example.org") @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED) @WLHttpTransport(contextPath="upgradePOJO", serviceUri="HelloWorld", portName="HelloWorld92Port") public class HelloWorld92Impl { /** * 整数と文字列の入力パラメータを含むテキスト メッセージ * を返す。 * */ @WebMethod() public String sayHello(int num, String s) { System.out.println("sayHello operation has been invoked with arguments " + s + " and " + num); String returnValue = "This message brought to you by the letter "+s+" and the number "+num; return returnValue; } }
次の単純な build.xml
ファイルでは、8.1 で servicegen
Ant タスクを使用して WebLogic Web サービスをビルドする方法を示します。この例では、8.1 Web サービスを実装する Java ファイルが、すでに examples.javaclass.HelloWorld81 クラスにコンパイルされています。
<project name="javaclass-webservice" default="all" basedir="."> <!-- set global properties for this build --> <property name="source" value="."/> <property name="build" value="${source}/build"/> <property name="war_file" value="HelloWorldWS.war" /> <property name="ear_file" value="HelloWorldApp.ear" /> <property name="namespace" value="http://examples.org" /> <target name="all" depends="clean, ear"/> <target name="clean"> <delete dir="${build}"/> </target> <!-- example of old 8.1 servicegen call to build Web Service --> <target name="ear"> <servicegen destEar="${build}/${ear_file}" warName="${war_file}"> <service javaClassComponents="examples.javaclass.HelloWorld81" targetNamespace="${namespace}" serviceName="HelloWorld" serviceURI="/HelloWorld" generateTypes="True" expandMethods="True"> </service> </servicegen> </target> </project>
次に、jwsc
Ant タスクを呼び出して 10.3.1 Web サービスをビルドする build.xml
ファイルを示します。これは上に示した 8.1 の例に対応するもので、この節で説明したタスクが太字で示されています。この例では、10.3.1 WEB サービスを実装する新しい JWS ファイルの名前が HelloWorld92Impl.java
とされています。
<project name="webservices-upgrade_pojo" default="all"> <!-- このビルドのグローバル プロパティを設定する --> <property name="wls.username" value="weblogic" /> <property name="wls.password" value="weblogic" /> <property name="wls.hostname" value="localhost" /> <property name="wls.port" value="7001" /> <property name="wls.server.name" value="myserver" /> <property name="ear.deployed.name" value="upgradePOJOEar" /> <property name="example-output" value="output" /> <property name="ear-dir" value="${example-output}/upgradePOJOEar" /><taskdef name="jwsc" classname="weblogic.wsee.tools.anttasks.JwscTask" /> <taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy"/> <target name="all" depends="clean,build-service,deploy" /> <target name="clean" depends="undeploy"> <delete dir="${example-output}"/> </target>
<target name="build-service"> <jwsc srcdir="src" destdir="${ear-dir}"> <jws file="examples/webservices/upgrade_pojo/HelloWorld92Impl.java" /> </jwsc> </target> <target name="deploy"> <wldeploy action="deploy" name="${ear.deployed.name}" source="${ear-dir}" user="${wls.username}" password="${wls.password}" verbose="true" adminurl="t3://${wls.hostname}:${wls.port}" targets="${wls.server.name}" /> </target> <target name="undeploy"> <wldeploy action="undeploy" name="${ear.deployed.name}" failonerror="false" user="${wls.username}" password="${wls.password}" verbose="true" adminurl="t3://${wls.hostname}:${wls.port}" targets="${wls.server.name}" /> </target> </project>
次の手順では、10.3.1 WebLogic Web サービス ランタイムを使用するように 8.1 EJB 実装の Web サービスをアップグレードする方法について説明します。
10.3.1 Web サービスのプログラミング モデルは、Web サービスの基底の実装を隠す点で 8.1 のモデルとはまったく異なります。Web サービスを Java クラスで実装するか EJB で実装するかを前もって指定するのではなく、JWS ファイルに明示的に javax.ejb.SessionBean
を実装しない限り (一般的には実装しない)、jwsc
Ant タスクで常にプレーン Java クラス実装が選択されます。このため、8.1 Web サービスは明示的に EJB で実装されていましたが、次の手順では EJB クラスをインポートする方法や EJBGen を使用する方法は示されていません。代わりに、EJB 実装の 8.1 Web サービスに対応する標準の 10.3.1 JWS ファイルを作成する方法を示します。
コマンド ウィンドウを開いて、10.3.1 ドメイン ディレクトリの bin
サブディレクトリにある setDomainEnv.cmd
(Windows) または setDomainEnv.sh
(UNIX) スクリプトを実行して、WebLogic Server 10.3.1 環境を設定します。
WebLogic Server ドメインのデフォルトの場所は、MW_HOME
/user_projects/domains/
domainName
です。MW_HOME
は Oracle 製品の最上位のインストール ディレクトリ、domainName
はドメインの名前です。
プロジェクト ディレクトリを作成します。
prompt> mkdir /myExamples/upgrade_ejb
プロジェクト ディレクトリの下に、src
ディレクトリと、8.1 EJB 実装に対応する新しい 10.3.1 JWS ファイル (この手順で後述) のパッケージ名に相当するサブディレクトリを作成します。
prompt> cd /myExamples/upgrade_ejb prompt> mkdir src/examples/webservices/upgrade_ejb
javax.ejb.SessionBean
を実装していた 8.1 EJB Bean ファイルを、作業ディレクトリの src/examples/webservices/upgrade_ejb
ディレクトリにコピーします。必要に応じてファイル名を変更してください。
注意 : 8.1 のホームおよびリモート EJB ファイルをコピーする必要はありません。 |
次の手順に従って EJB Bean ファイルを編集します。新旧のサンプル Java ファイルについては、「8.1 EJB ファイルと対応する 10.3.1 JWS ファイルの例」の個々の例を参照してください。
必要に応じて、新しい 10.3.1 ソース環境を反映するように Java ファイルのパッケージ名とクラス名を変更します。
必要に応じて、EJB クラス (javax.ejb.*
) をインポートする import
文を削除します。これらのクラスは、アップグレード後の JWS ファイルでは必要ありません。
import
文を追加して、標準および WebLogic 固有の JWS アノテーションがインポートされるようにします。
JWS ファイルのクラス宣言から implements SessionBean
コードを削除して、それ以降 javax.ejb.SessionBean
が実装されないようにします。
EJB 固有のメソッドをすべて削除します。
ejbActivate()
ejbRemove()
ejbPassivate()
ejbCreate()
少なくとも、次の JWS アノテーションを追加します。
JWS ファイルが Web サービスを実装することを指定する標準の @WebService
アノテーション (Java クラス レベルで追加)
以下のアノテーションも追加することをお勧めします。
Web サービスの種類 (document-literal-wrapped、RPC-encoded など) を指定する標準の @SOAPBinding
アノテーション (クラス レベルで追加)
デプロイされた Web サービスを呼び出す URL で使用されるコンテキストとサービス URI を指定する WebLogic 固有の @WLHttpTransport
アノテーション (クラス レベルで追加)
標準の @WebMethod
アノテーション (Web サービス オペレーションとして公開されるメソッドごとにメソッド レベルで追加)
Java ファイルでの JWS アノテーションの使用に関する概要については、「JWS ファイルのプログラミング」を参照してください。
10.3.1 Web サービスに引き継ぐ 8.1 Web サービスの機能によっては、JWS ファイルに他のアノテーションを追加することが必要な場合もあります。8.1 では、これらの機能の多くを servicegen
の属性を使用してコンフィグレーションしていました。「servicegen 属性と JWS アノテーションまたは jwsc 属性のマッピング」の表に、8.1 で servicegen
の属性を使用して有効にしていた機能に対応する JWS アノテーションをまとめてあります (相当するアノテーションがある場合のみ)。
8.1 Web サービスのビルドに使用していた古い build.xml
ファイルを 10.3.1 の作業ディレクトリにコピーします。
Ant build.xml
ファイルを更新して、servicegen
の代わりに jwsc
Ant タスクとその他のサポート タスクが実行されるようにします。
Ant ビルド ファイルで build-service
などの新しいターゲットを作成し、前の手順で作成した新しい JWS ファイルをコンパイルする jwsc
Ant タスク呼び出しを追加することをお勧めします。このターゲットがいったん正常に機能すれば、古い servicegen
Ant タスクは削除できます。
次に示す手順は、build.xml
ファイルを更新する際の主な手順です。詳細な手順については、「WebLogic Web サービスの開発」で説明する標準の反復開発プロセスを参照してください。
次の各手順の例については、「8.1 と更新された 10.3.1 の Ant ビルド ファイルの例 (8.1 EJB 実装の Web サービス)」を参照してください。
jwsc
taskdef を build.xml
ファイルに追加します。
build-service
ターゲットを作成し、次の手順の説明に従って 10.3.1 Web サービスをビルドするのに必要なタスクを追加します。
jwsc
タスクをビルド ファイルに追加します。srdir
属性に src ディレクトリ (この例では /myExamples/upgrade_ejb/src
) を設定し、destdir
属性に前の手順で作成したエンタープライズ アプリケーションのルート ディレクトリを設定します。
<jws>
子要素の file
属性に、前の手順で作成した新しい JWS ファイルの名前を指定します。
10.3.1 Web サービスに引き継ぐ 8.1 Web サービスの機能によっては、jwsc
タスクに追加の属性を指定することが必要な場合もあります。8.1 では、これらの機能の多くを servicegen
の属性を使用してコンフィグレーションしていました。「servicegen 属性と JWS アノテーションまたは jwsc 属性のマッピング」の表に、servicegen
の属性を使用して有効にしていた機能に対応する jwsc
属性があるかどうかを示しています。
build-service
Ant ターゲットを実行します。すべてのタスクを正しく完了すると、アップグレードされた 10.3.1 Web サービスがエンタープライズ アプリケーションに含まれます。
Web サービスのデプロイとテストの詳細については、「WebLogic Web サービスのデプロイとアンデプロイ」および「Web サービスの WSDL の参照」を参照してください。
以降の節に示すサンプル Java コードの場合、アップグレード後の 10.3.1 Web サービスの WSDL を呼び出すための URL は次のようになります。
http://host:port/upgradeEJB/HelloWorldService?WSDL
以降の 3 つの節に示す Bean、ホーム、およびリモートのクラスとインタフェースは、8.1 ステートレス セッション EJB (つまり 8.1 Web サービス) を実装していたものと仮定します。
「相当する 10.3.1 JWS ファイル」に、相当する 10.3.1 JWS ファイルを示します。8.1 のクラスと 10.3.1 のクラスの相違点は太字で示してあります。一部の JWS アノテーションの値が、「8.1 と更新された 10.3.1 の Ant ビルド ファイルの例 (8.1 EJB 実装の Web サービス)」に示す 8.1 servicegen
Ant タスクの属性から取得されている点に注意します。
package examples.statelessSession; import javax.ejb.CreateException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; /** * HelloWorldBean はステートレス セッション EJB。メソッドは、整数と文字列を取り、 * 文字列を返す sayHello() の 1 つのみ。 * <p> * sayHello() メソッドは、この EJB に基づく Web サービスのパブリック * オペレーション。 */ public class HelloWorldBean81 implements SessionBean { private static final boolean VERBOSE = true; private SessionContext ctx; // WebLogic のログ サービスの使用も検討すること private void log(String s) { if (VERBOSE) System.out.println(s); } /** * 単一 EJB ビジネス メソッド。 */ public String sayHello(int num, String s) { System.out.println("sayHello in the HelloWorld EJB has "+ "been invoked with arguments " + s + " and " + num); String returnValue = "This message brought to you by the "+ "letter "+s+" and the number "+num; return returnValue; } /** * このメソッドは EJB 仕様では必須だが、 * このサンプルでは使用されない。 * */ public void ejbActivate() { log("ejbActivate called"); } /** * このメソッドは EJB 仕様では必須だが、 * このサンプルでは使用されない。 * */ public void ejbRemove() { log("ejbRemove called"); } /** * このメソッドは EJB 仕様では必須だが、 * このサンプルでは使用されない。 * */ public void ejbPassivate() { log("ejbPassivate called"); } /** * セッション コンテキストを設定する。 * * @param ctx SessionContext Context for session */ public void setSessionContext(SessionContext ctx) { log("setSessionContext called"); this.ctx = ctx; } /** * このメソッドは EJB 仕様では必須だが、 * このサンプルでは使用されない。 * */ public void ejbCreate () throws CreateException { log("ejbCreate called"); } }
package examples.statelessSession; import java.rmi.RemoteException; import javax.ejb.EJBObject; /** * このインタフェース内のメソッドは HelloWorld のパブリック インタフェース * これらのメソッドのシグネチャは EJBean のシグネチャと同じだが、 * java.rmi.RemoteException を送出する点で異なる。 */ public interface HelloWorld81 extends EJBObject { /** * 単に EJB から挨拶を返す * * @param num int 返す回数 * @param s String 返す文字列 * @return String 戻り値 * @exception RemoteException 通信 * やシステムに障害が発生した場合に、送出する例外 */ String sayHello(int num, String s) throws RemoteException; }
package examples.statelessSession; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; /** * HelloWorld ステートレス セッション EJB のホーム インタフェース。 */ public interface HelloWorldHome81 extends EJBHome { /** * このメソッドは、HelloWorldBean81.java ファイルの ejbCreate メソッド * に対応する。 */ HelloWorld81 create() throws CreateException, RemoteException; }
8.1 のファイルと 10.3.1 のファイルの相違点は太字で示してあります。一部の JWS アノテーションの値は、「8.1 と更新された 10.3.1 の Ant ビルド ファイルの例 (8.1 EJB 実装の Web サービス)」に示す 8.1 servicegen
Ant タスクの属性から取得されています。
package examples.webservices.upgrade_ejb; // 標準の JWS アノテーションをインポートする import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; // WebLogic 固有のアノテーションをインポートする import weblogic.jws.WLHttpTransport; // クラスレベルのアノテーション @WebService(name="HelloWorld92PortType", serviceName="HelloWorldService", targetNamespace="http://example.org") @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED) @WLHttpTransport(contextPath="upgradeEJB", serviceUri="HelloWorldService", portName="HelloWorld92Port") /** * HelloWorld92Impl は、8.1 Web サービスを実装していた HelloWorld81 EJB * に相当する JWS。メソッドは、整数と文字列を取り、 * 文字列を返す sayHello() の 1 つのみ。 */ public class HelloWorld92Impl { /** sayHello メソッドが Web サービスのパブリック オペレーション * になる。 */ @WebMethod() public String sayHello(int num, String s) { System.out.println("sayHello in the HelloWorld92 Web Service has "+ "been invoked with arguments " + s + " and " + num); String returnValue = "This message brought to you by the "+ "letter "+s+" and the number "+num; return returnValue; } }
次の単純な build.xml
ファイルでは、8.1 で servicegen
Ant タスクを使用して EJB 実装の WebLogic Web サービスをビルドする方法を示します。このサンプルの後に、10.3.1 Web サービスをビルドするための jwsc
Ant タスクを呼び出す場合の、対応する build.xml
ファイルを示します。
<project name="ejb-webservice" default="all" basedir="."> <!-- このビルドのグローバル プロパティを設定する --> <property name="source" value="."/> <property name="build" value="${source}/build"/> <property name="ejb_file" value="HelloWorldWS.jar" /> <property name="war_file" value="HelloWorldWS.war" /> <property name="ear_file" value="HelloWorldApp.ear" /> <property name="namespace" value="http://examples.org" /> <target name="all" depends="clean,ear"/> <target name="clean"> <delete dir="${build}"/> </target> <!-- Web サービスをビルドする古い 8.1 servicegen 呼び出しの例 --> <target name="ejb"> <delete dir="${build}" /> <mkdir dir="${build}"/> <mkdir dir="${build}/META-INF"/> <copy todir="${build}/META-INF"> <fileset dir="${source}"> <include name="ejb-jar.xml"/> </fileset> </copy> <javac srcdir="${source}" includes="HelloWorld*.java" destdir="${build}" /> <jar jarfile="${ejb_file}" basedir="${build}" /> <wlappc source="${ejb_file}" /> </target> <target name="ear" depends="ejb"> <servicegen destEar="${build}/${ear_file}" warName="${war_file}"> <service ejbJar="${ejb_file}" targetNamespace="${namespace}" serviceName="HelloWorldService" serviceURI="/HelloWorldService" generateTypes="True" expandMethods="True"> </service> </servicegen> </target> </project>
次に、jwsc
Ant タスクを呼び出して 10.3.1 Web サービスをビルドする build.xml
ファイルを示します。これは上に示した 8.1 の例に対応するもので、この節で説明したタスクが太字で示されています。
<project name="webservices-upgrade_ejb" default="all"> <!-- このビルドのグローバル プロパティを設定する --> <property name="wls.username" value="weblogic" /> <property name="wls.password" value="weblogic" /> <property name="wls.hostname" value="localhost" /> <property name="wls.port" value="7001" /> <property name="wls.server.name" value="myserver" /> <property name="ear.deployed.name" value="upgradeEJB" /> <property name="example-output" value="output" /> <property name="ear-dir" value="${example-output}/upgradeEJB" /> <taskdef name="jwsc" classname="weblogic.wsee.tools.anttasks.JwscTask" /> <taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy"/> <target name="all" depends="clean,build-service,deploy" /> <target name="clean" depends="undeploy"> <delete dir="${example-output}"/> </target> <target name="build-service"> <jwsc srcdir="src" destdir="${ear-dir}"> <jws file="examples/webservices/upgrade_ejb/HelloWorld92Impl.java" /> </jwsc> </target> <target name="deploy"> <wldeploy action="deploy" name="${ear.deployed.name}" source="${ear-dir}" user="${wls.username}" password="${wls.password}" verbose="true" adminurl="t3://${wls.hostname}:${wls.port}" targets="${wls.server.name}" /> </target> <target name="undeploy"> <wldeploy action="undeploy" name="${ear.deployed.name}" failonerror="false" user="${wls.username}" password="${wls.password}" verbose="true" adminurl="t3://${wls.hostname}:${wls.port}" targets="${wls.server.name}" /> </target> </project>
次の表に、8.1 servicegen
Ant タスクの属性と、それに対応する 10.3.1 JWS アノテーションまたは jwsc
属性を示します。
最初のカラムには、メインの servicegen
Ant タスクの属性と、servicegen
の 4 つの子要素 (<service>
、<client>
、<handlerChain>
、および <security>
) の属性が混在しています。
10.3.1 JWS アノテーションと jwsc
Ant タスクの詳細については、『Oracle Fusion Middleware Oracle WebLogic Server Web サービス リファレンス』の「JWS アノテーション リファレンス」と「jwsc」を参照してください。
表 8-1 servicegen 属性と JWS アノテーションまたは jwsc 属性のマッピング
servicegen または servicegen の子要素の属性 | 対応する JWS アノテーションまたは jwsc 属性 |
---|---|
|
WebLogic 固有の 注意 : これは WebLogic 固有のアノテーションであるため、JAX-RPC Web サービスの生成にのみ使用可能。JAX-WS Web サービスの生成には使用できない。 |
|
|
|
|
|
対応する属性なし。 |
|
対応する属性なし。 |
|
|
( |
直接的に対応する属性なし。 間接的に対応するのは、JWS ファイルの名前を指定する |
( |
対応する属性なし。 |
( |
対応する属性なし。 |
( |
対応する属性なし。 |
( |
対応する属性なし。 |
( |
対応する属性なし。 |
( |
直接的に対応する属性なし。 間接的に対応するのは、JWS ファイルの名前を指定する |
( |
対応する属性なし。JMS 実装の Web サービスは、10.3.1 リリースではサポートされないため。 |
( |
対応する属性なし。JMS 実装の Web サービスは、10.3.1 リリースではサポートされないため。 |
( |
対応する属性なし。JMS 実装の Web サービスは、10.3.1 リリースではサポートされないため。 |
( |
対応する属性なし。JMS 実装の Web サービスは、10.3.1 リリースではサポートされないため。 |
( |
対応する属性なし。JMS 実装の Web サービスは、10.3.1 リリースではサポートされないため。 |
( |
対応する属性なし。JMS 実装の Web サービスは、10.3.1 リリースではサポートされないため。 |
( |
以下のいずれかの WebLogic 固有アノテーション。
注意 : これらは WebLogic 固有のアノテーションであるため、JAX-RPC Web サービスの生成にのみ使用可能。JAX-WS Web サービスの生成には使用できない。 |
( |
標準の |
( |
WebLogic 固有の 注意 : これらは WebLogic 固有のアノテーションであるため、JAX-RPC Web サービスの生成にのみ使用可能。JAX-WS Web サービスの生成には使用できない。 |
( |
標準の |
( |
対応する属性なし。 |
( |
標準の |
( |
WebLogic 固有の 注意 : これは WebLogic 固有のアノテーションであるため、JAX-RPC Web サービスの生成にのみ使用可能。JAX-WS Web サービスの生成には使用できない。 |
( |
対応する属性なし。 |
( |
直接的に対応する属性なし。 クライアントサイド Java コードおよびアーティファクトを生成するには、 |
( |
対応する属性なし。 |
( |
対応する属性なし。 |
( |
標準の |
( |
標準の |
( |
直接的に対応する属性なし。 Web サービスの信頼性のあるメッセージング ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の 『Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC を使用した Web サービスの高度な機能のプログラミング』の「Web サービスの信頼性のあるメッセージングの使用」を参照。 |
( |
直接的に対応する属性なし。 Web サービスの信頼性のあるメッセージング ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の このリリースでは、対応する属性は JAX-RPC Web サービスに対してのみ有効である。『Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC を使用した Web サービスの高度な機能のプログラミング』の「Web サービスの信頼性のあるメッセージングの使用」を参照。 |
( |
直接的に対応する属性なし。 メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の 注意 : これは WebLogic 固有のアノテーションであるため、JAX-RPC Web サービスの生成にのみ使用可能。JAX-WS Web サービスの生成には使用できない。 『Oracle Fusion Middleware Oracle WebLogic Server Web サービスのセキュリティ』の「メッセージレベルのセキュリティのコンフィグレーション」を参照。 |
( |
直接的に対応する属性なし。 メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の 注意 : これは WebLogic 固有のアノテーションであるため、JAX-RPC Web サービスの生成にのみ使用可能。JAX-WS Web サービスの生成には使用できない。 『Oracle Fusion Middleware Oracle WebLogic Server Web サービスのセキュリティ』の「メッセージレベルのセキュリティのコンフィグレーション」を参照。 |
( |
直接的に対応する属性なし。 メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の 注意 : これは WebLogic 固有のアノテーションであるため、JAX-RPC Web サービスの生成にのみ使用可能。JAX-WS Web サービスの生成には使用できない。 『Oracle Fusion Middleware Oracle WebLogic Server Web サービスのセキュリティ』の「メッセージレベルのセキュリティのコンフィグレーション」を参照。 |
( |
直接的に対応する属性なし。 メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の 『Oracle Fusion Middleware Oracle WebLogic Server Web サービスのセキュリティ』の「メッセージレベルのセキュリティのコンフィグレーション」を参照。 |
( |
直接的に対応する属性なし。 メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の 注意 : これは WebLogic 固有のアノテーションであるため、JAX-RPC Web サービスの生成にのみ使用可能。JAX-WS Web サービスの生成には使用できない。 『Oracle Fusion Middleware Oracle WebLogic Server Web サービスのセキュリティ』の「メッセージレベルのセキュリティのコンフィグレーション」を参照。 |
( |
直接的に対応する属性なし。 メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の 注意 : これは WebLogic 固有のアノテーションであるため、JAX-RPC Web サービスの生成にのみ使用可能。JAX-WS Web サービスの生成には使用できない。 『Oracle Fusion Middleware Oracle WebLogic Server Web サービスのセキュリティ』の「メッセージレベルのセキュリティのコンフィグレーション」を参照。 |
( |
直接的に対応する属性なし。 メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の 注意 : これは WebLogic 固有のアノテーションであるため、JAX-RPC Web サービスの生成にのみ使用可能。JAX-WS Web サービスの生成には使用できない。 『Oracle Fusion Middleware Oracle WebLogic Server Web サービスのセキュリティ』の「メッセージレベルのセキュリティのコンフィグレーション」を参照。 |