| Oracle® Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド 11g リリース1 (10.3.6) B61647-05 |
|
![]() 前 |
この章では、10.3.xより前のWebLogic Server WebサービスをOracle WebLogic Server 11g リリース1 (10.3.x) Webサービスの実行時環境で動作するようにアップグレードする方法を説明します。
この章では、以下のトピックについて説明します。
|
注意: 8.1および9.2のWebサービス・ランタイムはこのリリースでもサポートされるため、8.1および9.2のWebLogic Webサービスは変更しなくてもバージョン10.3.xのWebLogic Serverで引き続き実行できますが、8.1および9.2のWebサービス・ランタイムは非推奨になっており、今後のリリースの製品からは削除される予定です。このため、この章の指示に従って、8.1および9.2のWebサービスを10.3.xにアップグレードすることを強くお薦めします。 8.1のWebサービスをバージョン10.3.xのWebLogic Serverで実行するためには、次のシステム・プロパティを更新する必要があります。
System.setProperty('javax.xml.soap.SOAPFactory',
'weblogic.webservice.core.soap.SOAPFactoryImpl');
10.3.xのWebサービス・アプリケーションがこのシステム・プロパティの設定によって受ける影響を最小限にするには、8.1のWebサービスおよびクライアントを10.3.xのWebサービスおよびクライアントとは別のサーバーにデプロイすることをお薦めします。 |
9.2または10.xのWebLogic Webサービスを10.3.xにアップグレードするために必要な手順はありません。該当Webサービスは、変更や再コンパイルを行わずにWebLogic Server 10.3.xに再デプロイできます。
9.0または9.1のWebサービスで次のいずれかの機能を使用していた場合、WebLogic Server 10.3.xに再デプロイする前にWebサービスを再コンパイルする必要があります。
会話
@weblogic.jws.Context JWSアノテーション
weblogic.wsee.jws.JwsContext API
再コンパイルするには、Webサービスを実装するJWSファイルに対してjwsc Antタスクを再実行するだけです。
9.0または9.1のWebサービスでこれらの機能を使用していなかった場合、変更や再コンパイルを行わずにWebLogic Server 10.3.xに再デプロイできます。
この項では、新しいバージョン10.3.xのWebサービス実行時環境を使用するように8.1 WebLogic Webサービスをアップグレードする方法を説明します。10.3.xのランタイムは、Web Services for Java EE 1.2仕様(http://www.jcp.org/en/jsr/detail?id=109)に基づいています。10.3.xのプログラミング・モデルでは、Web Services Metadata for the Java Platform仕様(JSR-181)(http://www.jcp.org/en/jsr/detail?id=181)で指定される標準JDK 1.5メタデータ・アノテーションを使用します。
|
注意: 8.1のWebサービス・ランタイムは10.3.xでもサポートされるため、8.1のWebLogic Webサービスは変更しなくてもバージョン10.3.xのWebLogic Serverで引き続き実行できますが、8.1のWebサービス・ランタイムは非推奨になっており、今後のリリースの製品からは削除される予定です。このため、この章の指示に従って、8.1のWebサービスを10.3.xにアップグレードすることを強くお薦めします。 |
8.1のWebサービスのアップグレードで行うタスクを大まかにまとめると次のようになります。以降の項の手順では、より詳しく説明します。
Webサービスを実装するJavaクラスやステートレス・セッションEJBの8.1のJavaソース・コードを、JWSアノテーションを使用するように更新します。
10.3.xでは、WebLogic Webサービスは、JWSファイル(JWSアノテーションを含むJavaファイル)を使用して実装します。jwsc Antタスクは、常にWebサービスをプレーンJavaファイルとして実装します(ただし、JWSファイルに明示的にjavax.ejb.SessionBeanを実装する場合を除きます)。後者のケースは一般的ではありません。このプログラミング・モデルは、バックエンド・コンポーネントの種類(JavaクラスかEJBか)の指定が必要だった8.1のモデルとは異なります。
WebサービスをビルドするAntビルド・スクリプトを、8.1のservicegenタスクではなく10.3.xの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.xのWebLogic Webサービス・ランタイムは、JMS実装のサービスをサポートしていないためです)。
8.1より前のバージョンのWebサービスのアップグレード。
8.1のWebサービスを呼び出すクライアント・アプリケーションから10.3.xのWebサービスを呼び出すクライアント・アプリケーションへのアップグレード。10.3.xのWebサービスを呼び出すクライアント・アプリケーションの記述方法の詳細は、第6章「Webサービスの呼出し」を参照してください。
8.1 Javaクラス実装のWebサービスを、10.3.x WebLogic Webサービス・ランタイムを使用するようにアップグレードするには:
コマンド・ウィンドウを開き、10.3.xのドメイン・ディレクトリのbinサブディレクトリにあるsetDomainEnv.cmd(Windows)またはsetDomainEnv.sh(UNIX)スクリプトを実行して、WebLogic Server 10.3.x環境を設定します。
WebLogic Serverドメインのデフォルトの場所は、MW_HOME/user_projects/domains/domainNameです。MW_HOMEはOracle製品の最上位のインストール・ディレクトリ、domainNameはドメインの名前です。
プロジェクト・ディレクトリを作成します。
prompt> mkdir /myExamples/upgrade_pojo
プロジェクト・ディレクトリの下に、srcディレクトリと、古い8.1のJavaクラスに対応する新しい10.3.xのJWSファイル(この手順で後述)のパッケージ名に相当するサブディレクトリを作成します。
prompt> cd /myExamples/upgrade_pojo
prompt> mkdir src/examples/webservices/upgrade_pojo
8.1のWebサービスを実装する古いJavaクラスを、作業ディレクトリのsrc/examples/webservices/upgrade_pojoディレクトリにコピーします。必要に応じてファイル名を変更してください。
次の手順に従ってJavaファイルを編集します。具体的な例については、「8.1のJavaファイルと対応する10.3.xのJWSファイルの例」にある新旧のサンプルJavaファイルを参照してください。
必要に応じて、新しい10.3.xのソース環境を反映するように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アノテーションの使用に関する概要については、第4章「JWSファイルのプログラミング」を参照してください。
10.3.xに繰越す8.1 Webサービス機能によっては、アノテーションをJWSファイルに追加する必要があります。8.1では、このような機能の多くはservicegen属性を使用して構成されていました。「servicegen属性とJWSアノテーションまたはjwsc属性のマッピング」の表に、8.1でservicegenの属性を使用して有効にしていた機能に対応するJWSアノテーションをまとめてあります(相当するアノテーションがある場合のみ)。
8.1のWebサービスのビルドに使用していた古いbuild.xmlファイルを10.3.xの作業ディレクトリにコピーします。
Ant build.xmlファイルを更新して、servicegenのかわりにjwsc Antタスクとその他のサポート・タスクが実行されるようにします。
Antビルド・ファイルでbuild-serviceなどの新しいターゲットを作成し、前の手順で作成した新しいJWSファイルをコンパイルするjwsc Antタスク呼出しを追加することをお薦めします。このターゲットがいったん正常に機能すれば、古いservicegen Antタスクは削除できます。
次に示す手順は、build.xmlファイルを更新する際の主な手順です。詳細な手順については、第3章「WebLogic Webサービスの開発」で説明する標準の反復開発プロセスを参照してください。
次の各手順の例については、「8.1と更新された10.3.xのAntビルド・ファイルの例(Javaクラス実装のWebサービス)」を参照してください。
jwsc taskdefをbuild.xmlファイルに追加します。
build-serviceターゲットを作成し、この後の手順に従って10.3.xのWebサービスをビルドするのに必要なタスクを追加します。
jwscタスクをビルド・ファイルに追加します。srdir属性にsrcディレクトリ(この例では/myExamples/upgrade_pojo/src)を設定し、destdir属性に前の手順で作成したエンタープライズ・アプリケーションのルート・ディレクトリを設定します。
<jws>子要素のfile属性に、前の手順で作成した新しいJWSファイルの名前を指定します。
10.3.xに繰越す8.1 Webサービス機能によっては、追加属性をjwscタスクに指定する必要があります。8.1では、このような機能の多くはservicegen属性を使用して構成されていました。「servicegen属性とJWSアノテーションまたはjwsc属性のマッピング」の表で、servicegenの属性を使用して有効にしていた機能に相当するjwsc属性があるかどうかについて説明しています。
build-service Antターゲットを実行します。すべてのタスクを正しく完了すると、アップグレードされた10.3.xのWebサービスがエンタープライズ・アプリケーションに含まれます。
Webサービスのデプロイとテストの詳細は、「WebLogic Webサービスのデプロイとアンデプロイ」および「WebサービスのWSDLの参照」を参照してください。
次の各項に示すサンプルJavaコードの場合、アップグレードされた10.3.xのWebサービスのWSDLを呼び出すURLは次のようになります。
http://host:port/upgradePOJO/HelloWorld?WSDL
次のサンプルJavaクラスが8.1のWebサービスを実装していたものと仮定します。
package examples.javaclass;
/**
* Simple Java class that implements the HelloWorld Web service. It takes
* as input an integer and a String, and returns a message that includes these
* two parameters.
*/
public final class HelloWorld81 {
/**
* Returns a text message that includes the integer and String input
* parameters.
*
*/
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;
}
}
これに対応するものとして、Javaクラス実装の10.3.x WebサービスのJWSファイルを次に示します(相違点が太字で示されています)。一部のJWSアノテーションの値が、「8.1と更新された10.3.xのAntビルド・ファイルの例(Javaクラス実装のWebサービス)」に示す8.1のservicegen Antタスクの属性から取得されている点に注意してください。
package examples.webservices.upgrade_pojo; // Import standard JWS annotations import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.soap.SOAPBinding; // Import WebLogic JWS anntoation import weblogic.jws.WLHttpTransport; /** * Simple Java class that implements the HelloWorld92 Web service. It takes * as input an integer and a String, and returns a message that includes these * two parameters. */ @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 { /** * Returns a text message that includes the integer and String input * parameters. * */ @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.xのWebサービスをビルドするbuild.xmlファイルを次に示します(この項で説明する該当タスクは太字で示してあります)。この例では、10.3.xのWebサービスを実装する新しいJWSファイルにHelloWorld92Impl.javaという名前が付けられています。
<project name="webservices-upgrade_pojo" default="all">
<!-- set global properties for this build -->
<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.xのWebLogic Webサービス・ランタイムを使用するようにEJB実装の8.1 Webサービスをアップグレードする方法について説明します。
10.3.xの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.xの標準的なJWSファイルを作成する方法を示します。
コマンド・ウィンドウを開き、10.3.xのドメイン・ディレクトリのbinサブディレクトリにあるsetDomainEnv.cmd(Windows)またはsetDomainEnv.sh(UNIX)スクリプトを実行して、WebLogic Server 10.3.x環境を設定します。
WebLogic Serverドメインのデフォルトの場所は、MW_HOME/user_projects/domains/domainNameです。MW_HOMEはOracle製品の最上位のインストール・ディレクトリ、domainNameはドメインの名前です。
プロジェクト・ディレクトリを作成します。
prompt> mkdir /myExamples/upgrade_ejb
プロジェクト・ディレクトリの下に、srcディレクトリと、8.1のEJB実装に対応する新しい10.3.xの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ファイルを編集します。具体的な例については、「8.1のEJBファイルと対応する10.3.xのJWSファイルの例」にある新旧のサンプルJavaファイルを参照してください。
必要に応じて、新しい10.3.xのソース環境を反映するように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アノテーションの使用に関する概要については、第4章「JWSファイルのプログラミング」を参照してください。
10.3.xに繰越す8.1 Webサービス機能によっては、アノテーションをJWSファイルに追加する必要があります。8.1では、このような機能の多くはservicegen属性を使用して構成されていました。「servicegen属性とJWSアノテーションまたはjwsc属性のマッピング」の表に、8.1でservicegenの属性を使用して有効にしていた機能に対応するJWSアノテーションをまとめてあります(相当するアノテーションがある場合のみ)。
8.1のWebサービスのビルドに使用していた古いbuild.xmlファイルを10.3.xの作業ディレクトリにコピーします。
Ant build.xmlファイルを更新して、servicegenのかわりにjwsc Antタスクとその他のサポート・タスクが実行されるようにします。
Antビルド・ファイルでbuild-serviceなどの新しいターゲットを作成し、前の手順で作成した新しいJWSファイルをコンパイルするjwsc Antタスク呼出しを追加することをお薦めします。このターゲットがいったん正常に機能すれば、古いservicegen Antタスクは削除できます。
次に示す手順は、build.xmlファイルを更新する際の主な手順です。詳細な手順については、標準の反復開発プロセスを参照してください。
次の各手順の例については、「8.1と更新された10.3.xのAntビルド・ファイルの例(EJB実装の8.1のWebサービス)」を参照してください。
jwsc taskdefをbuild.xmlファイルに追加します。
build-serviceターゲットを作成し、この後の手順に従って10.3.xのWebサービスをビルドするのに必要なタスクを追加します。
jwscタスクをビルド・ファイルに追加します。srdir属性にsrcディレクトリ(この例では/myExamples/upgrade_ejb/src)を設定し、destdir属性に前の手順で作成したエンタープライズ・アプリケーションのルート・ディレクトリを設定します。
<jws>子要素のfile属性に、前の手順で作成した新しいJWSファイルの名前を指定します。
10.3.xに繰越す8.1 Webサービス機能によっては、追加属性をjwscタスクに指定する必要があります。8.1では、このような機能の多くはservicegen属性を使用して構成されていました。「servicegen属性とJWSアノテーションまたはjwsc属性のマッピング」の表に、servicegenの属性を使用して有効にしていた機能に対応するjwsc属性があるかどうかを示しています。
build-service Antターゲットを実行します。すべてのタスクを正しく完了すると、アップグレードされた10.3.xのWebサービスがエンタープライズ・アプリケーションに含まれます。
Webサービスのデプロイとテストの詳細は、「WebLogic Webサービスのデプロイとアンデプロイ」および「WebサービスのWSDLの参照」を参照してください。
次の各項に示すサンプルJavaコードの場合、アップグレードされた10.3.xのWebサービスのWSDLを呼び出すURLは次のようになります。
http://host:port/upgradeEJB/HelloWorldService?WSDL
次の3つの項に示すBean、ホームおよびリモートのクラスとインタフェースが8.1のステートレス・セッションEJB(つまり8.1のWebサービス)を実装していたものと仮定します。
「対応する10.3.xのJWSファイル」に、対応する10.3.xのJWSファイルを示します。8.1のクラスと10.3.xのクラスの相違点は太字で示しています。一部のJWSアノテーションの値が、「8.1と更新された10.3.xのAntビルド・ファイルの例(EJB実装の8.1のWebサービス)」に示す8.1のservicegen Antタスクの属性から取得されている点に注意してください。
package examples.statelessSession;
import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
/**
* HelloWorldBean is a stateless session EJB. It has a single method,
* sayHello(), that takes an integer and a String and returns a String.
* <p>
* The sayHello() method is the public operation of the Web service based on
* this EJB.
*/
public class HelloWorldBean81 implements SessionBean {
private static final boolean VERBOSE = true;
private SessionContext ctx;
// You might also consider using WebLogic's log service
private void log(String s) {
if (VERBOSE) System.out.println(s);
}
/**
* Single EJB business method.
*/
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;
}
/**
* This method is required by the EJB Specification,
* but is not used by this example.
*
*/
public void ejbActivate() {
log("ejbActivate called");
}
/**
* This method is required by the EJB Specification,
* but is not used by this example.
*
*/
public void ejbRemove() {
log("ejbRemove called");
}
/**
* This method is required by the EJB Specification,
* but is not used by this example.
*
*/
public void ejbPassivate() {
log("ejbPassivate called");
}
/**
* Sets the session context.
*
* @param ctx SessionContext Context for session
*/
public void setSessionContext(SessionContext ctx) {
log("setSessionContext called");
this.ctx = ctx;
}
/**
* This method is required by the EJB Specification,
* but is not used by this example.
*
*/
public void ejbCreate () throws CreateException {
log("ejbCreate called");
}
}
package examples.statelessSession;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
/**
* The methods in this interface are the public face of HelloWorld.
* The signatures of the methods are identical to those of the EJBean, except
* that these methods throw a java.rmi.RemoteException.
*/
public interface HelloWorld81 extends EJBObject {
/**
* Simply says hello from the EJB
*
* @param num int number to return
* @param s String string to return
* @return String returnValue
* @exception RemoteException if there is
* a communications or systems failure
*/
String sayHello(int num, String s)
throws RemoteException;
}
package examples.statelessSession;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
/**
* This interface is the Home interface of the HelloWorld stateless session EJB.
*/
public interface HelloWorldHome81 extends EJBHome {
/**
* This method corresponds to the ejbCreate method in the
* HelloWorldBean81.java file.
*/
HelloWorld81 create()
throws CreateException, RemoteException;
}
8.1のファイルと10.3.xのファイルの相違点は太字で示してあります。一部のJWSアノテーションの値は、「8.1と更新された10.3.xのAntビルド・ファイルの例(EJB実装の8.1のWebサービス)」に示す8.1のservicegen Antタスクの属性から取得されています。
package examples.webservices.upgrade_ejb; // Import the standard JWS annotations import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; // Import the WebLogic specific annotation import weblogic.jws.WLHttpTransport; // Class-level annotations @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 is the JWS equivalent of the HelloWorld81 EJB that * implemented the 8.1 Web Service. It has a single method, * sayHello(), that takes an integer and a String and returns a String. */ public class HelloWorld92Impl { /** the sayHello method will become the public operation of the Web * Service. */ @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サービスをビルドする方法を示します。この例の後に、jwsc Antタスクを呼び出して10.3.xのWebサービスをビルドする場合の、対応するbuild.xmlファイルを示します。
<project name="ejb-webservice" default="all" basedir=".">
<!-- set global properties for this build -->
<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>
<!-- example of old 8.1 servicegen call to build Web Service -->
<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.xのWebサービスをビルドするbuild.xmlファイルを次に示します(この項で説明する該当タスクは太字で示してあります)。
<project name="webservices-upgrade_ejb" default="all">
<!-- set global properties for this build -->
<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.xのJWSアノテーションまたはjwsc属性を示します。
最初の列には、メインのservicegen Antタスクの属性と、servicegenの4つの子要素(<service>、<client>、<handlerChain>、および<security>)の属性が混在しています。
10.3.xのJWSアノテーションとjwsc Antタスクの詳細は、『Oracle Fusion Middleware Oracle WebLogic Server WebLogic 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.xリリースではサポートされないため、対応するものはありません。 |
|
( |
JMS実装のWebサービスは10.3.xリリースではサポートされないため、対応するものはありません。 |
|
( |
JMS実装のWebサービスは10.3.xリリースではサポートされないため、対応するものはありません。 |
|
( |
JMS実装のWebサービスは10.3.xリリースではサポートされないため、対応するものはありません。 |
|
( |
JMS実装のWebサービスは10.3.xリリースではサポートされないため、対応するものはありません。 |
|
( |
JMS実装のWebサービスは10.3.xリリースではサポートされないため、対応するものはありません。 |
|
( |
以下のいずれかの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 WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
|
( |
直接的に相当するものはありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。 『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
|
( |
直接的に相当するものはありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。 『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
|
( |
直接的に相当するものはありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
|
( |
直接的に相当するものはありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。 『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
|
( |
直接的に相当するものはありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。 『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
|
( |
直接的に相当するものはありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。 『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |