Oracle® Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド 11g リリース1(10.3.3) B61647-01 |
|
前 |
次の各項では、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に再デプロイできます。
この項では、8.1のWebLogic Webサービスをアップグレードして、新しいバージョン10.3.xの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サービスの呼出し」を参照してください。
Javaクラス実装の8.1の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のWebサービスに引き継ぐ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のWebサービスに引き継ぐ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のWebサービスに引き継ぐ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
ファイルを更新する際の主な手順です。詳細な手順については、「WebLogic Webサービスの開発」で説明する標準の反復開発プロセスを参照してください。
次の各手順の例については、「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のWebサービスに引き継ぐ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サービスの保護』の「メッセージ・レベルのセキュリティの構成」を参照してください。 |