...

JAX-WS, JAXB, Java クラスの再定義

by user

on
Category: Documents
32

views

Report

Comments

Transcript

JAX-WS, JAXB, Java クラスの再定義
Oracle Workshop for WebLogic 10g Release 3 ハンズオン・ラボ
Oracle Workshop for WebLogic は、Web サービス、Java、Java EE、オブジェクト・リレーショナル・マッピン
グ、Spring、Beehive、Web アプリケーションを開発するための Eclipse と Web ツール・プラットフォームを強
化します。既存の Eclipse のプラグインとしてインストールするか、専用の Eclipse としてインストールします。
Oracle Workshop for WebLogic を使用して、Eclipse の Java SE、Java EE、Web サービス、Java Web アプリケー
ション、オブジェクト・リレーショナル・マッピングを開発、構築、アセンブル、配置、デバッグ、およびテ
ストします。Oracle WebLogic Server のユーザーは、このツールを無償で利用できます。
Oracle Workshop for WebLogic 10g Release 3 リリース・ノート
Oracle Workshop for WebLogic では、Java EE 5.0 標準をサポートする新しいツールを導入しています。Java EE 5
のサポートには、次のテクノロジーが含まれます。
Java EE 5 標準サポート
•
Servlet 2.5
•
JSP 2.1
•
JSF 1.2
•
JSTL 1.2
•
Unified EL
•
JAX-WS
•
JAXB 2.0
•
EJB 3
•
EE 5 EAR
•
EJB 3 Session Bean
•
EJB 3 Message Driven Bean
Eclipse 3.3.2 および Web ツール・プラットフォーム 2.0.3 に基づく構築
Oracle Workshop for WebLogic 10g Release 3 は、Java開発に広く使用されているオープン・ソース・フレームワー
クのEclipseプラットフォームに基づいて構築されています。また、Eclipse 3.3.2およびWebツール・プラット
フォーム2.0.3を拡張します。
Windows Vista でのサポート
Oracle Workshop for WebLogic 10g Release 3 は、Windows Vistaでもサポートされます。
XML Beans
Oracle Workshop for WebLogic 10g Release 3 は、XMLBeans 2.3をサポートします。
Oracle Workshop for WebLogic IDE ランチャ
Oracle Workspace Studioランチャ は廃止されました。Oracle Workshop for WebLogic IDEランチャは、
WORKSHOP_HOME/workshop[.exe]です。
Oracle Workshop for WebLogic 10g Release 3 の理解
この Eclipse ベースの開発環境のコア・コンポーネントは、次の機能的な分野で定義されます。
•
複数のバージョンの Oracle WebLogic Server をサポートする拡張されたサーバー・プラグイン
•
視覚的な Oracle WebLogic Server Web サービスおよび XML IDE
•
移植可能な Java Web アプリケーションの WYSIWYG Web およびプレゼンテーション層ツール
•
オブジェクト・リレーショナル・マッピング・ワークベンチおよびデータベース・ツール
•
Java のページ・フローおよびコントロールの Apache Beehive IDE
•
上記のコンポーネントの AppXRay サポート
•
Spring IDE プロジェクトおよび Spring コード生成ウィザード
•
Java SE および Java EE の IDE 基本機能
•
組込み Web アプリケーションおよび Web サービス・テスト・クライアント
•
Workshop 8.1、9.2、および 10 ユーザー用のアップグレード・ツール
Oracle Workshop for WebLogic 10g Release 3 の実践的な実習
このドキュメントには、次の実習の手順が含まれます。
1.
簡単な JAX-WS Web サービスの作成
2.
Workshop ClientGen 機能の使用
3.
カスタム・バインディングを使用した JAX-WS Web サービス
4.
5.
JAXB
FastSwap Java クラスの再定義
完全なプロジェクトは、付属の 10gR3Labs.zip ファイルで提供されています。フォルダ名とこのドキュメント
の実習タイトルは同じです。
実習 1:JAX-WS サービス
目的:WLW の簡単な JAX-WS Web サービスの作成および実行中のサーバーへの配置
Oracle WebLogic Serverのこのリリースでは、Java API for XML-Based Web Services 2.1(JAX-WS)およびJava API
for XML-Based RPC 1.1(JAX-RPC)のWebサービスをサポートします。
古い仕様のJAX-RPCでは、JAX-RPC実装の相互運用性を向上させるWS-I Basic Profile 1.0 のサポートとともに
JavaプラットフォームのXML WebサービスをサポートするAPIおよび規則を定義しました。JAX-RPC 1.1 の後
継であるJAX-WSでは、Java EE 5 の多くの新機能を実装しています。JAX-WS Webサービスの次の項に記載さ
れている機能のプログラミングの追加ドキュメントおよび例については、https://jax-ws.dev.java.netから取得で
きるJAX-WSドキュメントを参照してください。
Java API for XML-Based Web Services(JAX-WS)2.1 がこのリリースでサポートされ、次の機能が JAX-WS 2.0
の機能に追加されます。
JAXB 2.1(JSR 222)データ・バインディング API のサポート
WS-Addressing サポート
エンドポイントの動的な公開
EndpointReference を作成および伝播する API
MTOM や Addressing など、有効/無効な機能の注釈および API
JAX-WSのOracle WebLogic Server実装は、JAX-WS Reference Implementation(RI)のバージョン 2.1.4に基づい
ています。これには、JAX-WSサービスの構築および配置を簡素化してJAX-RPCからJAX-WSへの移行を容易
にするツール層の拡張機能が含まれます。次の機能および拡張機能は、JAX-WS RI 2.1.4 から使用できます。
.NET 2.0/WSF 3.0 MTOM 相互運用性サポート
Woodstox StAX Parser の使用によるパフォーマンスの大幅な向上
SOAPAction ベースのディスパッチ
JAXB RI 2.1.5 の統合
JAXB 型の代用サポート
W3C(1.0)および Member Submission(2004/08)の WS-Addressing サポート
非同期クライアント/サーバー・サポート
ディスパッチおよびプロバイダ・サポート
•
Dispatch<Message>および Provider<Message>サポート
•
REST など、WSDL 以外および SOAP 以外のエンドポイントの開発
Oracle WebLogic Server 10.0 と同様に、開発者は Java ソース・ファイルまたは WSDL ファイルで開発を開始で
きます。Oracle WebLogic Server Ant タスクの<jwsc>と<clientgen>は、移植可能なデータ・バインディング・ク
ラスの生成、デプロイメント・ディスクリプタの作成、およびパッケージ化を自動化します。
手順
注:JAX-WS サービスおよび ClientGen プロジェクトは、JaxWsService.zip アーカイブで結合されます。サービ
スは'JaxwsServiceWeb'、クライアントは'JaxwsClientWeb'です。
1.
ワークスペースを開いて、'SimpleJaxwsSpace'という新しい領域を作成します。
2.
「File」→「New」→「Project」→「J2EE」を選択します。
3.
'JaxwsProjectEAR'という新しいエンタープライズ・アプリケーションを作成します。
4.
デフォルトの構成を保持します。
5.
「Next」をクリックします。
6.
「Finish」をクリックします。
7.
「File」→「New」→「Project」を選択します。
8.
'Web Services'の下の'Web Service Project'を検索します。選択して「Next」をクリックします。
9.
プロジェクトに'JaxwsServiceWeb'という名前をつけます。
10. 'Configurations'で「Annotated Web Services Facets JAX-WS(Recommended) (v10.3)」を選択します。
11. 「Add project to an EAR」を選択します。
12. 「Next」をクリックします。
13. 「Next」をクリックします。
14. 「Finish」をクリックします。
15. 'Project Explorer'ビューで JaxwsServiceWeb プロジェクトの「Java Resources/src」フォルダを右クリッ
クして、「New」→「package」を選択します。
16. パッケージに'webservice'という名前をつけます。
17. 「webservice」パッケージ・フォルダを右クリックします。
18. 「New」→「WebLogic Web Service」を選択します。
19. クラス名に'HelloJaxWs'と入力して、「Finish」をクリックします。
20. '@WebService'注釈のソースが取得されます。
21. 'hello'メソッドを次のように入力します。
public String hello(String name) {
System.out.println("Service invoked with name:" + name);
return "Hello " + name + " from JAX-WS service";
}
22. サーバー・タブを右クリックし、「new」→「server」を選択して、サーバーを作成します。サーバー
を作成する場合、<bea_home>¥wlserver_10.3¥samples¥domains¥wl_server ディレクトリをポイントして
製品に付属するサンプル・ドメインを使用できます。
23. アプリケーションを保存、構築、および配置します。
24. 配置するアプリケーションにサーバーの編集ロックが占有されているというエラーが発生している場
合、「WLS console」→「Preferences」へ移動し、自動ロックを無効にします。「Release Edit Lock」
をクリックします。これで適切な処理がおこなわれます。
25. 試しにブラウザを開く場合は、http://localhost:7001/JaxwsServiceWeb/HelloJaxWsService?wsdl へ移動し
ます。
実習 2:ClientGen
目的:以前に作成したJAX-WS Webサービスのクライアントの作成(WLWのClientGen機能を使用)
Clientgen Antタスクは、既存のWSDLファイルからクライアント・コンポーネント・ファイルを生成します。
クライアント・アプリケーションは、このファイルを使用して、WebLogicおよびWebLogic以外のWebサービ
スを起動します。このため、WebクライアントまたはWeb以外のクライアントからWebサービスを呼び出すこ
とができます。JAX-WS Webサービスを生成する場合、以下の出力が含まれます。
起動する特定の Web サービスのサービス・インタフェース実装の Java クラス
JAXB データ・バインディング成果物
WSDL ファイルに含まれるユーザー定義の XML スキーマ・データ型の Java クラス
JAX-RPC Webサービスを生成する場合、以下の出力が含まれます。
起動する特定の Web サービスのスタブおよびサービス・インタフェース実装の Java クラス
WSDL ファイルに含まれるユーザー定義の XML スキーマ・データ型の Java ソース・コード
WSDL ファイルの Java ユーザー定義データ型と対応する XML スキーマ型のマッピングの情
報を含む JAX-RPC マッピング・デプロイメント・ディスクリプタ・ファイル
WSDL ファイルのクライアント側のコピー
クライアント・アプリケーションは、clientgen の生成された成果物を使用して、Web サービスを起動できます。
以下に例を挙げます。
Java Platform Enterprise Edition バージョン 5 クライアント・コンテナを使用しないスタンドア
ロンの Java クライアント
Java EE クライアント・コンテナを使用する EJB、JSP、Web サービスなどの Java EE クライ
アント
また、WebLogic の共有 Java EE ライブラリとして ClientGen の出力ライブラリを使用または宣言できます。
Oracle WebLogic Server の Java EE ライブラリ・サポートは、複数のエンタープライズ・アプリケーション間で
1 つ以上の Java EE モジュールまたは JAR ファイルを共有できる便利な手段です。Java EE ライブラリは、スタ
ンドアロンの Java EE モジュール、エンタープライズ・アプリケーションにパッケージ化された複数の Java EE
モジュール(EAR)、または配置時に Java EE アプリケーション・コンテナに登録される通常の JAR ファイル
です。Java EE ライブラリが登録されたあと、ライブラリを参照するエンタープライズ・アプリケーションを
配置できます。それぞれの参照アプリケーションは、配置時に共有 Java EE ライブラリ・モジュールのコピー
を受け取って、アプリケーションの一部としてパッケージ化されているかのようにそれらのモジュールを使用
できます。
手順
注:JAX-WS サービスおよび ClientGen プロジェクトは、JaxWsService.zip アーカイブで結合されます。サービ
スは'JaxwsServiceWeb'、クライアントは'JaxwsClientWeb'です。
1.
ワークスペースを開いて、'ClientGenSpace'という新しい領域を作成します。
2.
「File」→「New」→「Project」→「Web」を選択します。
3.
「Dynamic Web Project」を選択します。
4.
「Next」をクリックします。
5.
プロジェクトに'JaxwsClientWeb'という名前をつけて、'Configurations'で「Annotated Web Services Facets
JAX-WS (Recommended) (v10.3)」を選択します。
6.
「Next」をクリックします。
7.
「Next」をクリックします。
8.
「Finish」をクリックします。
9.
サーバー・タブを右クリックし、「new」→「server」を選択して、サーバーを作成します。サーバー
を作成する場合、<bea_home>¥wlserver_10.3¥samples¥domains¥wl_server ディレクトリをポイントして
製品に付属するサンプル・ドメインを使用できます。
10. プロジェクトをサーバーに追加して起動します。
11. 「WebContent」フォルダを右クリックします。
12. 「New」→「Other」→「Web Service」→「ClientGen Web Service Client」を選択します。
13. 「Remote」ラジオ・ボタンを選択して、次の URL を入力します。
http://localhost:7001/JaxwsServiceWeb/HelloJaxWsService?wsdl
14. 「Validate WSDL」をクリックします。
15. 「Next」をクリックします。
16. 「Copy WSDL into Client jar」を選択します。
17. 「Finish」をクリックします。
18. WEB-INF/lib の HelloJaxWsService.jar ファイルを確認します。
19. index.jsp を WebContent フォルダにコピーします。
20. 構築してサーバーに配置します。
21. ブラウザを開いて、http://localhost:7001/JaxwsClientWeb/index.jsp へ移動します。
次の実習では、ユーザー・インタフェース・コードのクライアント JAR を活用します。
実習 3:カスタム・バインディング
目的:JAX-Bカスタム・バインディングを活用するWebサービスの作成、クライアントJARの生成、JSPへのク
ライアント・コードのプラグインおよび実行
バインディング宣言を使用した XML スキーマと Java のマッピングのカスタマイズに関する概要
WSDL の分散の特性から、アプリケーションの要件を満たすためにコンテンツを常に制御または変更すること
はできません。たとえば、WSDL が占有されていなかったり、パートナーによって常に使用されていたりする
ために変更ができなくなる場合があります。直接 WSDL を編集できない場合、カスタム・バインディング宣
言を指定して、Java オブジェクトに WSDL コンポーネントをマップする方法をカスタマイズできます。バイ
ンディング宣言を使用して、非同期、ラッパー・スタイルなどの特定の機能を制御したり、XML スキーマを
カスタマイズして生成される JAXB データ・バインディング成果物を制御したりできます。次のいずれかの方
法でバインディング宣言を定義できます。
特定の WSDL ドキュメントまたは XML スキーマ・ドキュメントのすべてのバインディング
宣言を含む外部のバインディング宣言ファイルを作成します。
注:カスタマイズが必要な場合、オラクルは、WSDLドキュメントおよびXMLスキーマ・ド
キュメントとカスタマイズを分離して柔軟性を維持するこの方法を推奨しています。
WSDL ドキュメントまたは XML スキーマ・ドキュメント内にバインディング宣言を組み込
みます。
どの方法を選択しても、バインディング宣言は意味的に同じです。次の図のように、カスタム・バインディン
グ宣言はスコープに関連します。
カスタム・バインディング宣言のスコープ
次の表は、各スコープの意味を示しています。
カスタム・バインディング宣言のスコープ
スコープ
定義
グローバル・
スコープ
グローバル・スコープでカスタマイズ値を示します。具体例:
• JAX-WS バインディング宣言の場合、ルート要素の一部として定義されるカスタマイ
ズ値を示します。
• JAXB 注釈の場合、<globalBindings>バインディング宣言内に含まれるカスタマイズ値
を示します。グローバル・スコープ値は、含まれるスキーマおよびインポートされる
スキーマとともにソース・スキーマのすべてのスキーマ要素に適用されます。
スキーマ・
スコープ
<schemaBindings>バインディング宣言内に含まれるJAXBカスタマイズ値を示します。ス
キーマ・スコープ値は、スキーマのターゲットの名前空間の要素に適用されます。注:この
スコープは、JAXBバインディング宣言のみに適用されます。
定義スコープ
型定義のバインディング宣言またはグローバル宣言に定義されるJAXBカスタマイズ値を示
します。定義スコープ値は、型定義またはグローバル宣言を参照する要素に適用されます。
注:このスコープは、JAXBバインディング宣言のみに適用されます。
コンポーネン
ト・スコープ
注釈された WSDL またはスキーマ要素に適用されるカスタマイズ値を示します。
カスタム・バインディング宣言のスコープは、以下の継承およびオーバーライド・ルールに準拠します。
継承 - カスタマイズ値はトップダウンで継承されます。たとえば、コンポーネント・スコー
プの WSDL 要素(JAX-WS)は、グローバル・スコープで定義されたカスタマイズ値を継承
します。コンポーネント・スコープのスキーマ要素(JAXB)は、グローバル・スコープ、ス
キーマ・スコープ、および定義スコープで定義されたカスタマイズ値を継承します。
オーバーライド - カスタマイズ値がボトムアップでオーバーライドされます。たとえば、コ
ンポーネント・スコープの WSDL 要素(JAX-WS)は、グローバル・スコープで定義された
カスタマイズ値をオーバーライドします。コンポーネント・スコープのスキーマ要素(JAXB)
は、定義スコープ、スキーマ・スコープ、およびグローバル・スコープで定義されたカスタ
マイズ値をオーバーライドします。
手順
1.
2.
'CustomBindingsSpace'という新しいワークスペースを作成します。
2 つの新しい Web サービス・プロジェクト('CustomBindingsServiceWeb'および'CustomBindingsClientWeb')
を作成します。両方の’Configurations’ドロップダウンから「Annotated Web Service Facets JAX-WS
(Recommended)(v10.3)」を選択します。
3.
CustomBindingsServiceWeb プロジェクトで'WebContent'の下に'wsdl'フォルダを作成して、
4.
'myBindings.xml'ファイルを CustomBindingsServiceWeb/WebContent/wsdl にコピーします。
5.
'myBindingsClient.xml'を CustomBindingsClientWeb の WebContent/bindings フォルダ(このフォルダを作
'CustomBindingsServiceWeb'の'TemperatureService.wsdl'ファイルをコピーします。
成します)にコピーします。
6.
wsdl ファイルを右クリックして、「Web Services」→「Generate Web Service using WSDLC」を選択
します。
7.
最初の画面で、'package'フィールドから値を削除します。
8.
「Next」をクリックします。
9.
'JAXB Bindings for WSDLC'で「Add」を選択し、'WebContent/wsdl'へ移動して、「myBindings.xml」を
選択します。
10. 「Finish」をクリックします。
11. 'WEB-INF/lib/TemperatureService_wsdl.jar'に Web サービス・ファイルが作成されます。ファイルを開い
て、カスタム・パッケージを確認します。
12. アプリケーションを構築してサーバーに配置します。
13. 'CustomBindingsClientWeb'プロジェクトへ移動します。
14. 「WebContent」フォルダを右クリックして、「New」→「Other」を選択します。
15. 「Web Services」→「ClientGen Web Service Client」を選択します。
16. 「Validate WSDL」をクリックします。
17. 「Remote」ラジオ・ボタンを選択して、次の wsdl の場所を入力します。
‘http://localhost:7001/CustomBindingsServiceWeb/TemperatureService?wsdl’
18. 「Next」をクリックします。
19. 「Next」をクリックします。
20. 'Bindings'セクションで、「Add」を選択します。'myBindingsClient.xml'へ移動して追加します。
21. 「Finish」をクリックします。
22. WEB-INF/lib に'TemperatureService.jar'が配置されています。開いてパッケージ構造を表示します。
23. 'index.jsp'を WebContent にコピーします。
24. サーバーを作成し、JSP を構築および配置して http://localhost:7001/CustomBindingsClientWeb/index.jsp
にアクセスします。
実習 4:JAXB
目的:WorkshopのJAXB機能のデモ(xsdからJAXBクラスを作成して簡単なアプリケーションでそれらのクラ
スを使用します)
JAXB を使用したデータ・バインディングの概要
異なるシステム間でデータを交換する標準としてXMLが出現したため、Webサービス・アプリケーションで
JavaアプリケーションからXML形式のデータに直接アクセスする方法が必要になりました。とくに、XMLコン
テンツをJavaアプリケーションで読取り可能な形式に変換する必要があります。データ・バインディングは、
XMLとJava表現のデータの変換を示します。JAX-WSは、Java Architecture for XML Binding(JAXB)を使用し
て、すべてのデータ・バインディング・タスクを管理します。とくに、JAXBは、Javaメソッド・シグネチャ、
WSDLメッセージ、および操作をバインドします。また、実行時の変換を自動的に処理する場合にマッピング
をカスタマイズできます。このため、XMLに精通していなくてもJavaテクノロジーに基づくアプリケーション
のXMLデータおよび処理機能を簡単に組み込むことができます。次の図は、JAXBデータ・バインディング・
プロセスを示しています。
JAXB によるデータ・バインディング
前の図で示されているように、JAXB データ・バインディング・プロセスは、次のタスクで構成されます。
バインド - スキーマから派生したJAXB Javaクラス(値クラス)にXMLスキーマをバインドし
ます。各クラスは、一連のJavaBeanスタイルのアクセス方式(getとset)によるコンテンツへ
のアクセスを提供します。バインディングは、JAXBスキーマ・コンパイラによって管理され
ます。
アンマーシャル - XMLドキュメントを変換して、Javaコードがアクセスできるドキュメント
のコンテンツおよび編成を表すJavaプログラム要素(オブジェクト)のツリーを作成します。
コンテンツ・ツリーで、複雑な型が値クラスにマップされます。属性宣言または簡単な型の
要素が値クラス内のプロパティまたはフィールドにマップされます。getおよびsetメソッドを
使用して、それらの値にアクセスできます。アンマーシャリングは、JAXBバインディング・
フレームワークによって管理されます。
マーシャル - JavaオブジェクトをXMLコンテンツに戻します。この場合、WSDL操作として
配置されているJavaメソッドは、wsdl:typesセクションのスキーマ・コンポーネントを決定し
ます。マーシャリングは、JAXBバインディング・フレームワークによって管理されます。JAXB
バインディング言語を使用して、カスタム・バインディング宣言を定義できます。または、
JAXB注釈を指定して、XMLおよびJavaのデータの変換を制御できます。
手順
1.
'JaxbSpace'という新しいワークスペースを作成します。
2.
'JaxbApp'というエンタープライズ・アプリケーションを作成します。すべてのデフォルト値を受け入
3.
'JaxbWeb'という動的な Web プロジェクトを作成します。
れて、「Finish」をクリックします。
4.
プロジェクトを EAR に追加して、「Next」をクリックします。
5.
Web サービス・ファセットを選択して、「Finish」をクリックします。
6.
book.xsd ファイルを WebContent/xsd にコピーします。
7.
books.xml ファイルをサーバーのドメイン・ルートにコピーします。
8.
「book.xsd」を右クリックして、「Web Services」→「Generate a JAXB type JAR」を選択します。
9.
「Next」をクリックします。
10. パッケージとして'book'を入力します。
11. 「Finish」をクリックします。
12. book.jar ファイルが WEB-INF/lib に作成されます。
ダブルクリックして WinZip で内容を表示でき
ます。
13. Java Resources/src の下に'book'パッケージを作成します。
14. JaxbTest ソース・ファイルを'book'パッケージにコピーします。
15. index.jsp を WebContent にコピーします。
16. サーバー・タブを右クリックし、「new」→「server」を選択して、サーバーを作成します。サーバー
を作成する場合、<bea_home>¥wlserver_10.3¥samples¥domains¥wl_server ディレクトリをポイントして
製品に付属するサンプル・ドメインを使用できます。
17. ブラウザを開いて、http://localhost:7001/JaxbWeb/index.jsp へ移動します。
実習 5:クラスの再定義(FastSwap)
目的:ステートフルSession Beanを使用したWorkshopプロジェクト内からのWLS FastSwap機能のデモ
Java SE 5 では、ClassLoader の削除や既存のインスタンスの破棄をおこなうことなく、実行時にクラスを再定
義する機能を導入しています。このため、実行アプリケーションを損なわずに変更されたクラスをコンテナで
再ロードできます。これによって、継続的な開発サイクルの高速化と全体の開発およびテスト経験の向上が実
現します。ただし、クラスの構成(宣言されたフィールドおよびメソッド)を変更できない制限から、Java SE
5 の動的なクラス再定義の実用性が大幅に抑えられます。FastSwap の目的は、Oracle WebLogic Server のこの制
限を排除することです。これによって、継続的な開発を容易にする新しい構成のクラスを動的に再定義でき
ます。
FastSwap を使用すると、ClassLoader を再ロードせずに Java クラスがインプレースで再定義されるので、所要
時間が短縮される大きな利点があります。つまり、開発者はアプリケーションの再配置を待機して Web ペー
ジ・フローの任意の場所に戻る必要がありません。変更や自動コンパイルを実行して、効果をすぐに確認でき
ます。
サポートされているアプリケーション構成
•
サーバーが開発モードで実行されている場合、FastSwap のみサポートされます。本番モードでは、自動的
に無効になります。
•
展開されているディレクトリのクラス・ファイルの変更だけがサポートされます。アーカイブされたアプ
リケーションのクラス・ファイルおよびアプリケーションのクラスパスに表示されるアーカイブ jar への
変更はサポートされていません。例は以下のとおりです。
•
Web アプリケーションが EAR 内のアーカイブ WAR として配置されている場合、FastSwap エー
ジェントはクラスの変更を検出しません。
•
展開されている Web アプリケーションで、Java クラスの変更は WEB-INF/classes ディレクトリで
のみサポートされます。FastSwap エージェントは WEB-INF/lib のアーカイブ jar の変更を検出し
ません。
FastSwap でサポートされるアプリケーションのタイプおよび変更
FastSwap は、展開されている形式で配置された POJO(JAR)、Web アプリケーション(WAR)、およびエン
タープライズ・アプリケーション(EAR)でサポートされます。FastSwap は、リソース・アダプタ(RAR)で
サポートされません。
次のタイプの変更が FastSwap でサポートされます。
•
静的メソッドの追加
•
静的メソッドの削除
•
インスタンス・メソッドの追加
•
インスタンス・メソッドの削除
•
静的メソッドの本体の変更
•
インスタンス・メソッドの本体の変更
•
静的フィールドの追加
•
静的フィールドの削除
•
インスタンス・フィールドの追加
•
インスタンス・フィールドの削除
オンライン・ドキュメントには、FastSwapでサポートされている変更のタイプを示した詳細な表があります。
FastSwap の制限
•
Java Reflection の結果に新しく追加したフィールドおよびメソッドは含まれません。削除されたフィー
ルドおよびメソッドが含まれます。このため、変更されたクラスの Reflection API を使用すると予期し
ない動作が発生する場合があります。
•
既存のクラスの階層の変更は、FastSwap でサポートされません。例:a)クラスの実装済みインタフェー
スのリスト変更。b)クラスのスーパークラスの変更はサポートされません。
•
上記の Reflection 変更に関連しているため、Java 注釈の追加および削除は、FastSwap でサポートされ
ません。
•
実行時に変更を反映するために EJB コンパイル・ステップが必要になるため、EJB インタフェースの
メソッドの追加または削除は、FastSwap でサポートされません。
•
Enum の定数の追加および削除は、このリリースでサポートされていません。
•
finalize メソッドの追加および削除は、サポートされません。
手順
1.
'FastSwapSpace'という新しいワークスペースを作成します。
2.
'FastSwapApp'という新しいエンタープライズ・アプリケーションを作成します。
3.
新しい動的な Web プロジェクトを作成し、'FastSwapWeb'という名前をつけて、EAR に追加します。
4.
'EJBProject'という新しい EJB プロジェクトを作成します。「File」→「New」→「Project」→「EJB」
→「EJB Project」を選択します。EAR に追加します。
5.
WebLogic 10.3 のデフォルト構成を選択して、デフォルトのファセットを受け入れます。
6.
「Window」→「Preferences」→「Validation」へ移動して、すべての検証を無効にします。
7.
'ejbModule'の下に'sessionbean'というパッケージを作成します。
8.
'Account.java'、'AccountBean.java'、および'AuditInterceptor.java'を sessionbean パッケージにコピーし
ます。
9.
'index.jsp'を'FastSwapWeb'の WebContent フォルダにコピーします。
10. サーバー・タブを右クリックし、「new」→「server」を選択して、サーバーを作成します。サーバー
を作成する場合、<bea_home>¥wlserver_10.3¥samples¥domains¥wl_server ディレクトリをポイントして
製品に付属するサンプル・ドメインを使用できます。
11. アプリケーションを構築して配置します。
12. ブラウザを開いて、http://localhost:7001/FastSwapWeb/index.jsp へ移動します。現在の残高が 100 である
ことを確認します。数回リフレッシュして、残高が 100 ずつ増加することを確認します。
13. EJBProject で AccountBean.java ファイルを開いて、'getBalance'メソッドで戻り値を'balance + 1'に変更し
ます。変更を保存します。
14. サーバー・タブで Status が'Republish'になっていますが、まだ再公開はおこなわれていません。
15. ブラウザを数回リフレッシュして、まだ偶数で増えることを確認します。
16. サーバーで再公開します。
17. ブラウザに戻ってリフレッシュします。残高が毎回 xx1 になることを確認します。
18. getBalance メソッドから'+1'を削除して、変更を保存します。
19. weblogic-application.xml ファイルを開きます。
20. クローズ・タグ</wls:weblogic-application>の前に'<fast-swap/>'を追加します。
21. 保存して再公開します。検証エラーでこの処理が失敗した場合は、手順 6 へ移動します。
22. ブラウザをリフレッシュします。これで残高が 100 に戻ります。
23. getBalance メソッドに'+1'を再度追加して、変更を保存します。
24. 再度サーバー・ステータスが'Republish'になりますが、公開は実行されていません。
25. ブラウザをリフレッシュして、xx1 を確認します。'FastSwap'によってランタイム・クラスが ClassLoader
で更新されたため、このようになります。
Fly UP