Oracle® Fusion Middleware Oracle WebLogic Serverアップグレード・ガイド 12cリリース1 (12.1.1) B65938-02 |
|
前 |
次 |
次の項では、WebLogic Server 9.xまたは10.xからWebLogic Server 12.1.xリリースへのWebLogic Webサービスのアップグレード手順について説明します。また、8.1のWebLogic Webサービスを12.1.x WebLogic Webサービスにアップグレードする方法も説明します。
ここで説明するトピックは以下のとおりです。
9.2または10.xのWebLogic Webサービス(JAX-WSまたはJAX-RPC)の12.1.xへのアップグレード
9.0または9.1のWebLogic Webサービス(JAX-WSまたはJAX-RPC)の12.1.xへのアップグレード
注意: 関連するWebサービス・ランタイムはこのリリースでもサポートされるため、9.2および10.3.xのWebLogic Webサービス(JAX-WSまたはJAX-RPC)は変更しなくてもバージョン12.1.xのWebLogic Serverで引き続き実行できますが、対象のWebサービス・ランタイムは非推奨になっており、今後のリリースの製品からは削除される予定です。このため、この章の指示に従って、9.2または10.3.xのWebサービスを12.1.xにアップグレードすることを強くお薦めします。 |
10.3.xでは、Jersey 1.9および1.1.5.1 JAX-RS RIをサポートするために一連の事前構築済共有ライブラリがWebLogic Serverに付属しています。共有ライブラリを使用するためには、WebLogic Serverインスタンスにそのライブラリを登録し、Jerseyサーブレットを使用して共有ライブラリを参照するためにweb.xml
およびweblogic.xml
のデプロイメント記述子をそれぞれ変更する必要があります。
次の項では、10.3.xのRESTful Webサービスを12.1.x環境で実行できるように、使用環境をアップグレードするために必要な手順について説明します。
10.3.x RESTful WebLogic WebサービスでJersey 1.9共有ライブラリを使用している場合は、12.1.x環境でアプリケーションを実行するための追加手順は不要です。この場合、システム・クラスパスにあるJersey 1.9 JARファイルはWebLogic Serverのシステム・クラスローダによってロードされます。
注意: RESTful Webサービス・アプリケーションがサーブレットとパッケージ化されている場合、WebアプリケーションがServlet 3.0以下を使用しているかどうかに基づいて適切にパッケージ化されているか確認します。詳細は、『RESTful Webサービスの開発』のサーブレットとのパッケージ化に関する項を参照してください。 |
注意: Jersey 1.1.5.1 JAX-RS RI共有ライブラリは、下位互換性のためにのみ提供されています。WebLogic Serverシステム・クラスパスで使用可能なJersey 1.9 JAX-RS RI APIを使用するため、RESTful Webサービス・アプリケーションをアップグレードすることをお薦めします。 |
下位互換性のため、Jersey 1.1.5.1 JAX-RS RI共有ライブラリは12.1.xリリースのWebLogic Serverに付属しています。共有ライブラリは、WL_HOME
/common/deployable-libraries
ディレクトリに格納されています。
表7-1に、Jersey JAX-RS RIバージョン1.1.5.1 Webサービスをサポートする構築済共有ライブラリを、対応する機能ごとにまとめています。共有ライブラリが必須か省略可能かも示します。
表7-1 Jersey JAX-RS RI 1.1.5.1の共有ライブラリ
機能 | 説明 | 必須/省略可能 |
---|---|---|
Jersey |
|
必須 |
JAX-RS API |
|
必須 |
JSON処理 |
|
省略可能 |
JSON処理 |
|
省略可能 |
JSON処理 |
|
省略可能 |
JSONストリーミング |
|
省略可能 |
ATOM処理 |
|
省略可能 |
10.3.x RESTful Webサービスを12.1.x環境で実行し、Jersey 1.1.5.1共有ライブラリを引き続き使用するために、使用環境をアップグレードするには、次の手順を実行する必要があります。
Jersey 1.1.5.1共有ライブラリを1つ以上のWebLogic Serverインスタンスに登録します。
共有Java EEライブラリを1つまたは複数のWebLogic Serverインスタンスに登録するには、ターゲット・サーバーにライブラリをデプロイし、デプロイメントが共有されるように指定します。共有Java EEライブラリは、ライブラリを参照するアプリケーションをデプロイするのと同じWebLogic Serverインスタンスにターゲット指定する必要があります。
次に、Jersey JAX-RS RIの基本機能とJAX-RS APIをサポートする共有ライブラリのデプロイ例を示します。
weblogic.Deployer -verbose -noexit -source C:\myinstall\wlserver_10.3\common\deployable-libraries\jersey-bundle-1.1.5.1.war -targets myserver -adminurl t3://localhost:7001 -user system -password ******** -deploy -library weblogic.Deployer -verbose -noexit -source C:\myinstall\wlserver_10.3\common\deployable-libraries\jsr311-api-1.1.1.war -targets myserver -adminurl t3://localhost:7001 -user system -password ******** -deploy -library
weblogic.Deployerの詳細は、『Oracle WebLogic Serverへのアプリケーションのデプロイ』のweblogic.Deployerコマンドライン・リファレンスを参照してください。
RESTful Webサービス・アプリケーションがサーブレットとパッケージ化されている場合、WebアプリケーションがServlet 3.0以下を使用しているかどうかに基づいて適切にパッケージ化されているか確認します。詳細は、『RESTful Webサービスの開発』のサーブレットとのパッケージ化に関する項を参照してください。
RESTful Webサービス・アプリケーションをデプロイします。
9.2または10.x WebLogic Webサービスを12.1.xへアップグレードするために必要な手順はありません。JAX-WSまたはJAX-RPCのWebサービスは、変更や再コンパイルを行わずにWebLogic Server 12.1.xへ再デプロイすることができます。
9.0または9.1のWebサービスで次のいずれかの機能を使用していた場合、WebLogic Server 12.1.xに再デプロイする前にWebサービスを再コンパイルする必要があります。
会話
@weblogic.jws.Context
JWSアノテーション
weblogic.wsee.jws.JwsContext
API
再コンパイルするには、Webサービスを実装するJWSファイルに対してjwsc
Antタスクを再実行するだけです。
9.0または9.1のWebサービスでこれらの機能を使用していなかった場合、変更や再コンパイルを行わずにWebLogic Server 12.1.xに再デプロイできます。
12.1.1リリースで、8.1 WebLogic Webサービス・ランタイムは削除されています。8.1 WebLogic Webサービスを使用している場合、このリリースで使用可能なWebサービス・スタックに8.1 WebLogic Webサービス・アプリケーションをアップグレードする必要があります。8.1 WebLogic Webサービスは、SOAPペイロード内のXML要素をJavaオブジェクト内にマッピングする(その逆もまた同様)目的のため、Apache XMLBeansに依存します。XMLBeansは12.1.1でサポートされていません。次のアップグレード・パスを使用できます。
WebLogic JAX-RPCスタックへのアップグレード: これは、アップグレードに必要な作業レベルにおいて最も単純なアップグレード・パスです。WebLogic JAX-RPCスタックのXMLBeansサポートは8.1 WebLogic Webサービスと互換性があります。詳細は、「8.1のWebLogic WebサービスのWebLogic JAX-RPCスタックへのアップグレード」を参照してください。
JAX-WSスタックへのアップグレード: これは、WebLogic Serverにおける最新のテクノロジおよび規準のサポートを利用するという点で、最も優れたアップグレード・パスです。このパスには手作業によるアップグレード・プロセスが必要であり、作業レベルは既存の8.1 Webサービス・アプリケーションの性質によって決まります。たとえば、アプリケーションでXMLBeansをほとんど使用しない場合、アップグレード・プロセスは比較的容易なものになります。XMLBeansの依存性が高い8.1 Webサービス・アプリケーションの場合、XMLBeansクラスのかわりにJAXBクラスを使用するにはサービス実装のビジネス・ロジックを変更する必要があります。JAX-WSではRPCエンコード・スタイルはサポートされていません。RPCエンコード・スタイルの8.1 Webサービス・アプリケーションは、より相互運用性の高いリテラル・スタイルのサービス規定に対応することが必要になります。詳細は、「8.1のWebLogic WebサービスのWebLogic JAX-WSスタックへのアップグレード」を参照してください。
この項では、WebLogic JAX-RPC実行時環境を使用するように8.1 WebLogic Webサービスをアップグレードする方法を説明します。WebLogic JAX-RPCのランタイムは、JSR 109: Implementing Enterprise Web Services仕様(http://www.jcp.org/en/jsr/detail?id=109
)に基づいています。12.1.xのプログラミング・モデルでは、JSR 181: Web Services Metadata for the Java Platform仕様(JSR-181)(http://www.jcp.org/en/jsr/detail?id=181
)で指定される標準JDK 1.5メタデータ・アノテーションを使用します。
8.1のWebサービスのアップグレードで行うタスクを大まかにまとめると次のようになります。以降の項の手順では、より詳しく説明します。
Webサービスを実装するJavaクラスやステートレス・セッションEJBの8.1のJavaソース・コードを、JWSアノテーションを使用するように更新します。
12.1.xでは、WebLogic Webサービスは、JWSファイル(JWSアノテーションを含むJavaファイル)を使用して実装します。jwsc
Antタスクは、常にWebサービスをプレーンJavaファイルとして実装します(ただし、JWSファイルに明示的にjavax.ejb.SessionBean
を実装する場合を除きます)。後者のケースは一般的ではありません。このプログラミング・モデルは、バックエンド・コンポーネントの種類(JavaクラスかEJBか)の指定が必要だった8.1のモデルとは異なります。
WebサービスをビルドするAntビルド・スクリプトを、8.1のservicegen
タスクではなく12.1.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サービスのアップグレード(WebLogic WebサービスJAX-RPCランタイムは、JMS実装のサービスをサポートしていないためです)。
8.1より前のバージョンのWebサービスのアップグレード。
8.1のWebサービスを呼び出すクライアント・アプリケーションから12.1.xのWebサービスを呼び出すクライアント・アプリケーションへのアップグレード。12.1.x Webサービスを呼び出すクライアント・アプリケーションの記述方法の詳細は、『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のWebサービスの呼出しに関する項を参照してください。
Javaクラス実装の8.1のWebサービスを、WebLogic WebサービスJAX-RPCランタイムを使用するようにアップグレードする手順:
コマンド・ウィンドウを開き、12.1.xのドメイン・ディレクトリのbin
サブディレクトリにあるsetDomainEnv.cmd
(Windows)またはsetDomainEnv.sh
(UNIX)スクリプトを実行して、WebLogic Server 12.1.x環境を設定します。
WebLogic Serverドメインのデフォルトの場所は、MW_HOME
/user_projects/domains/
domainName
です。MW_HOME
はOracle製品の最上位のインストール・ディレクトリ、domainName
はドメインの名前です。
プロジェクト・ディレクトリを作成します。
prompt> mkdir /myExamples/upgrade_pojo
プロジェクト・ディレクトリの下に、src
ディレクトリと、古い8.1のJavaクラスに対応する新しい12.1.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ファイルと対応する12.1.xのJWSファイルの例」にある新旧のサンプルJavaファイルを参照してください。
必要に応じて、新しい12.1.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アノテーションの使用に関する概要については、『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のJWSファイルのプログラミングに関する項を参照してください。
12.1.x Webサービスに引き継ぐ8.1 Webサービスの機能によっては、JWSファイルに他のアノテーションを追加することが必要な場合もあります。8.1では、これらの機能の多くをservicegen
の属性を使用して構成していました。「servicegen属性とJWSアノテーションまたはjwsc属性のマッピング」の表に、8.1でservicegen
の属性を使用して有効にしていた機能に対応するJWSアノテーションをまとめてあります(相当するアノテーションがある場合のみ)。
8.1のWebサービスのビルドに使用していた古いbuild.xml
ファイルを12.1.xの作業ディレクトリにコピーします。
Ant build.xml
ファイルを更新して、servicegen
の代わりにjwsc
Antタスクとその他のサポート・タスクが実行されるようにします。
Antビルド・ファイルでbuild-service
などの新しいターゲットを作成し、前の手順で作成した新しいJWSファイルをコンパイルするjwsc
Antタスク呼出しを追加することをお薦めします。このターゲットがいったん正常に機能すれば、古いservicegen
Antタスクは削除できます。
次に示す手順は、build.xml
ファイルを更新する際の主な手順です。詳細な手順については、『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のWebLogic Webサービスの開発に関する項で説明する、標準の反復開発プロセスを参照してください。
次の各手順の例については、「8.1と更新された12.1.xのAntビルド・ファイルの例(Javaクラス実装のWebサービス)」を参照してください。
jwsc
taskdefをbuild.xml
ファイルに追加します。
build-service
ターゲットを作成し、この後の手順に従って12.1.xのWebサービスをビルドするのに必要なタスクを追加します。
jwsc
タスクをビルド・ファイルに追加します。srdir
属性にsrcディレクトリ(この例では/myExamples/upgrade_pojo/src
)を設定し、destdir
属性に前の手順で作成したエンタープライズ・アプリケーションのルート・ディレクトリを設定します。
<jws>
子要素のfile
属性に、前の手順で作成した新しいJWSファイルの名前を指定します。
12.1.x Webサービスに引き継ぐ8.1 Webサービスの機能によっては、jwsc
タスクに追加の属性を指定することが必要な場合もあります。8.1では、これらの機能の多くをservicegen
の属性を使用して構成していました。「servicegen属性とJWSアノテーションまたはjwsc属性のマッピング」の表で、servicegen
の属性を使用して有効にしていた機能に相当するjwsc
属性があるかどうかについて説明しています。
build-service
Antターゲットを実行します。すべてのタスクを正しく完了すると、アップグレードされた12.1.xのWebサービスがエンタープライズ・アプリケーションに含まれます。
Webサービスのデプロイとテストの詳細は、『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のWebLogic Webサービスのデプロイとアンデプロイに関する項と、WebサービスのWSDLの参照に関する項を参照してください。
次の各項に示すサンプルJavaコードの場合、アップグレードされた12.1.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クラス実装の12.1.x WebサービスのJWSファイルを次に示します(相違点が太字で示されています)。一部のJWSアノテーションの値が、「8.1と更新された12.1.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タスクを呼び出して12.1.xのWebサービスをビルドするbuild.xml
ファイルを次に示します(この項で説明する該当タスクは太字で示してあります)。この例では、12.1.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>
次の手順では、WebLogic WebサービスJAX-RPCランタイムを使用するようにEJB実装の8.1 Webサービスをアップグレードする方法について説明します。
12.1.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サービスに対応する12.1.xの標準的なJWSファイルを作成する方法を示します。
コマンド・ウィンドウを開き、12.1.xのドメイン・ディレクトリのbin
サブディレクトリにあるsetDomainEnv.cmd
(Windows)またはsetDomainEnv.sh
(UNIX)スクリプトを実行して、WebLogic Server 12.1.x環境を設定します。
WebLogic Serverドメインのデフォルトの場所は、MW_HOME
/user_projects/domains/
domainName
です。MW_HOME
はOracle製品の最上位のインストール・ディレクトリ、domainName
はドメインの名前です。
プロジェクト・ディレクトリを作成します。
prompt> mkdir /myExamples/upgrade_ejb
プロジェクト・ディレクトリの下に、src
ディレクトリと、8.1のEJB実装に対応する新しい12.1.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ファイルと対応する12.1.xのJWSファイルの例」にある新旧のサンプルJavaファイルを参照してください。
必要に応じて、新しい12.1.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アノテーションの使用に関する概要については、『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のJWSファイルのプログラミングに関する項を参照してください。
12.1.x Webサービスに引き継ぐ8.1 Webサービスの機能によっては、JWSファイルに他のアノテーションを追加することが必要な場合もあります。8.1では、これらの機能の多くをservicegen
の属性を使用して構成していました。「servicegen属性とJWSアノテーションまたはjwsc属性のマッピング」の表に、8.1でservicegen
の属性を使用して有効にしていた機能に対応するJWSアノテーションをまとめてあります(相当するアノテーションがある場合のみ)。
8.1のWebサービスのビルドに使用していた古いbuild.xml
ファイルを12.1.xの作業ディレクトリにコピーします。
Ant build.xml
ファイルを更新して、servicegen
の代わりにjwsc
Antタスクとその他のサポート・タスクが実行されるようにします。
Antビルド・ファイルでbuild-service
などの新しいターゲットを作成し、前の手順で作成した新しいJWSファイルをコンパイルするjwsc
Antタスク呼出しを追加することをお薦めします。このターゲットがいったん正常に機能すれば、古いservicegen
Antタスクは削除できます。
次に示す手順は、build.xml
ファイルを更新する際の主な手順です。詳細な手順については、次で説明する標準の反復開発プロセスを参照してください:
次の各手順の例については、「8.1と更新された12.1.xのAntビルド・ファイルの例(EJB実装の8.1のWebサービス)」を参照してください。
jwsc
taskdefをbuild.xml
ファイルに追加します。
build-service
ターゲットを作成し、この後の手順に従って12.1.xのWebサービスをビルドするのに必要なタスクを追加します。
jwsc
タスクをビルド・ファイルに追加します。srdir
属性にsrcディレクトリ(この例では/myExamples/upgrade_ejb/src
)を設定し、destdir
属性に前の手順で作成したエンタープライズ・アプリケーションのルート・ディレクトリを設定します。
<jws>
子要素のfile
属性に、前の手順で作成した新しいJWSファイルの名前を指定します。
12.1.x Webサービスに引き継ぐ8.1 Webサービスの機能によっては、jwsc
タスクに追加の属性を指定することが必要な場合もあります。8.1では、これらの機能の多くをservicegen
の属性を使用して構成していました。「servicegen属性とJWSアノテーションまたはjwsc属性のマッピング」の表に、servicegen
の属性を使用して有効にしていた機能に対応するjwsc
属性があるかどうかを示しています。
build-service
Antターゲットを実行します。すべてのタスクを正しく完了すると、アップグレードされた12.1.xのWebサービスがエンタープライズ・アプリケーションに含まれます。
Webサービスのデプロイとテストの詳細は、『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のWebLogic Webサービスのデプロイとアンデプロイに関する項と、WebサービスのWSDLの参照に関する項を参照してください。
次の各項に示すサンプルJavaコードの場合、アップグレードされた12.1.xのWebサービスのWSDLを呼び出すURLは次のようになります。
http://host:port/upgradeEJB/HelloWorldService?WSDL
次の3つの項に示すBean、ホームおよびリモートのクラスとインタフェースが8.1のステートレス・セッションEJB(つまり8.1のWebサービス)を実装していたものと仮定します。
「対応する12.1.xのJWSファイル」に、対応する12.1.xのJWSファイルを示します。8.1のクラスと12.1.xのクラスの相違点は太字で示してあります。一部のJWSアノテーションの値が、「8.1と更新された12.1.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のファイルと12.1.xのファイルの相違点は太字で示してあります。一部のJWSアノテーションの値は、「8.1と更新された12.1.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タスクを呼び出して12.1.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タスクを呼び出して12.1.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タスクの属性と、それに対応する12.1.xのJWSアノテーションまたはjwsc
属性を示します。
最初の列には、メインのservicegen
Antタスクの属性と、servicegen
の4つの子要素(<service>
、<client>
、<handlerChain>
、および<security>
)の属性が混在しています。
12.1.xのJWSアノテーションとjwsc
Antタスクの詳細は、『Oracle WebLogic Server WebLogic Webサービス・リファレンス』のJWSアノテーション・リファレンスと「jwsc」を参照してください。
表7-2 servicegen属性とJWSアノテーションまたはjwsc属性のマッピング
servicegenまたはservicegenの子要素の属性 | 対応するJWSアノテーションまたはjwsc属性 |
---|---|
|
WebLogic固有の 注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。 |
|
|
|
|
|
対応する属性はありません。 |
|
対応する属性はありません。 |
|
|
( |
間接的に対応するのは、JWSファイルの名前を指定する |
( |
対応する属性はありません。 |
( |
対応する属性はありません。 |
( |
対応する属性はありません。 |
( |
対応する属性はありません。 |
( |
対応する属性はありません。 |
( |
間接的に対応するのは、JWSファイルの名前を指定する |
( |
JMS実装のWebサービスは12.1.xリリースではサポートされないため、対応するものはありません。 |
( |
JMS実装のWebサービスは12.1.xリリースではサポートされないため、対応するものはありません。 |
( |
JMS実装のWebサービスは12.1.xリリースではサポートされないため、対応するものはありません。 |
( |
JMS実装のWebサービスは12.1.xリリースではサポートされないため、対応するものはありません。 |
( |
JMS実装のWebサービスは12.1.xリリースではサポートされないため、対応するものはありません。 |
( |
JMS実装のWebサービスは12.1.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 WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のWebサービスの信頼性のあるメッセージングの使用に関する項を参照してください。 |
( |
直接的に対応する属性はありません。 Webサービスの信頼性のあるメッセージングのポリシー・アサーションを含むWS-Policyファイルを指定するには、WebLogic固有の このリリースでは、対応する属性はJAX-RPC Webサービスに対してのみ有効です。『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のWebサービスの信頼性のあるメッセージングの使用に関する項を参照してください。 |
( |
直接的に対応する属性はありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。 『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
( |
直接的に対応する属性はありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。 『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
( |
直接的に対応する属性はありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。 『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
( |
直接的に対応する属性はありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
( |
直接的に対応する属性はありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。 『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
( |
直接的に対応する属性はありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。 『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
( |
直接的に対応する属性はありません。 メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の 注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。 『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。 |
この項では、WebLogic JAX-WSスタックを使用するように8.1 WebLogic Webサービスをアップグレードする方法を説明します。
WebLogic JAX-WSのランタイムは、JAX-WS (The Java API for XML-Based Web Services) 2.2仕様とWeb Services for Java EE v1.3 (JSR 109)仕様に基づいています。これらはWebサービスの定義にJava Web Service (JWS)ソース・ファイルで使用されるアノテーションを定義します。Antタスクが次に使用されてJWSがJavaクラスにコンパイルされ、すべての関連するアーティファクトが生成されます。Java Webサービス(JWS)は、JAX-WS Webサービスの中核部分です。
8.1 Webサービスのアップグレードには次の高レベル・タスクが含まれます。
WebサービスEJBの2.xから3.xへのアップグレード。
JAX-WSはEJB 3.0および3.xをサポートします。EJB 2.xはサポートしません。
8.1 Webサービス・クラスをJAX-WS JWSファイルとして書き換えて、8.x固有の機能を類似したJAX-WS機能にマッピングします。
8.1 Webサービス機能とJAX-WS 12.1.x機能の間に1対1で対応するものはありません。
WebサービスをビルドするAntビルド・スクリプトを、8.1のservicegen
タスクではなく12.1.xのWebLogic WebサービスAntタスクjwsc
を呼び出すように更新します。
JAX-WS clientgen
Antタスクを使用して新規のJAX-WSクライアントを生成します。
JAX-WSのアップグレードに関する考慮事項
JAX-WSにアップグレードする前に、次の点を考慮してください。
JAX-WS仕様はdocument-literalおよびrpc-literal形式をサポートしていますが、rpc-encodedはサポートしていません。rpc-encodedが必要な場合は、8.1 Webサービスを、JAX-WSではなくJAX-RPCモデルにアップグレードすることを検討してください。
SOAP配列はJAX-WSではサポートされていませんが、JAX-RPCで使用できます。
JAX-WSの詳細は、次のドキュメントを参照してください。
Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド
Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング