How-To: EJB 3.0およびWSメタデータを使用したJava Adventure Builder

日付:2006年5月4日
著者: Debu Panda

はじめに

Java Adventure Builder Reference Application v1.0(Adventure Builder)は、最新のJ2EE 1.4テクノロジを実証するSun Microsystemsのブループリント・アプリケーションです。 このアプリケーションの詳細については、 http://java.sun.com/blueprints/code/adventure/1.0/docs/index.htmlでご覧になれます。

Enterprise JavaBeans(EJB 3.0)とWebサービス・メタデータにより、J2EEサービスの開発は大幅に簡素化されます。 オラクルは、EJB 3.0とWebサービス・メタデータを使用するため、Java Adventure Builder 1.0.1を移行し、EJB 3.0とWebサービス・メタデータのサポートを実証しました。

更新されたこのアプリケーションは、EJB 3.0とWebサービス・メタデータを使用した開発の簡易性を実証するために提供されており、J2EE 1.4のブループリント・アプリケーション、またはEJB 3.0やWebサービス・メタデータのブループリント・アプリケーションかわりと見なされるものではありません。

このドキュメントでは、EJB 3.0とWebサービス・メタデータを使用するために、オラクルによって行われた変更について説明します。 また、アプリケーションを構築(再構築)する方法と、Oracle Application Server 10g 10.1.3.1にAdventure Builderアプリケーションをデプロイする方法についても説明します。

Java Adventure Builderアプリケーションは、次の6つのモジュールから構成されています。

  • Order Processing Center
  • Activity Supplier
  • Airline Supplier
  • Bank
  • Lodging Supplier

これらのモジュールにはすべて、JAX-RPCエンドポイントで公開されて注文の処理や追跡を行う、Entity Bean、MDB、ステートレスEJB WebサービスなどのEJBモジュールがあります。

  • Consumer WebSite

ConsumerWebSiteは、Adventure BuilderのWebモジュールであり、Adventureパッケージの注文の検索および作成を行うWebインタフェースを提供します。 このWebモジュールは、ステートレスEJB 2.1 Webサービスを使用して、Adventureへの注文の送信や状況の追跡を行います。

このHow-Toドキュメントを読むことで以下のことが実行できます。

  • EJB 3.0とWebサービス・メタデータを使用するために更新されたJava Adventure Builder Referenceアプリケーション・バージョン1.0.1をOC4Jにデプロイ
  • 完了したアプリケーションを実行して各自でAdventureを構築

移行の概要

Java Adventure Builderを移行してEJB 3.0とWebサービス・メタデータを使用するおもな目的は、メタデータ・アノテーションがアプリケーションの開発をどの程度簡素化するかの判断と、EJB 3.0とWebサービス・メタデータの有用性の検証について学習することです。 アプリケーションのオブジェクト・モデルやデータ・モデルの再設計を目的としたものではありません。

Consumer Websiteモジュールは更新され、JDBC DAOにかわってEJB 3.0永続化が使用されます。

サーバー側コンポーネントのOrder Processing Centerモジュール、Bankモジュール、Supplierモジュールが移行され、EJB 3.0 Session Bean、Message-Driven Bean、Persistence APIが使用されます。 Webサービスはすべて移行され、Webサービス・メタデータが使用されます。

次の表は、各モジュールの移行作業の概要を示します。

モジュール名 使用テクノロジ
Consumer WebSite
  • O-Rメタデータを使用したEJB 3.0 JPA
Order Processing Center(OPC)
  • EJB 3.0 JPA
  • EJB 3.0 SLSB、JCA-RAを使用したMDB 3.0、依存性の注入
  • SLSB SEIのためのWebサービス・メタデータ
Bank
  • EJB 3.0 SLSB
  • SLSB SEIのためのWebサービス・メタデータ
Activity Supplier
  • EJB 3.0 JPA
  • EJB 3.0 SLSB、JCA-RAを使用したMDB 3.0、依存性の注入
  • SLSB SEIのためのWebサービス・メタデータ
Airline Supplier
  • EJB 3.0 JPA
  • EJB 3.0 SLSB、JCA-RAを使用したMDB 3.0、依存性の注入
  • SLSB SEIのためのWebサービス・メタデータ
Lodging Supplier
  • EJB 3.0 JPA
  • EJB 3.0 SLSB、JCA-RAを使用したMDB 3.0、依存性の注入
  • SLSB SEIのためのWebサービス・メタデータ

移行されたアプリケーションは、アノテーションとデプロイメント・ディスクリプタの両方をEJB 3.0モジュールで使用でき、さらにEJB 3.0とEJB 2.1が相互運用可能であることも実証します。

アプリケーションを再構築するには、 How To Rebuild - Java Adventure Builder Application using EJB 3.0 and Web services Metadataを参照してください。

前提条件

必須知識

  • EJB 3.0
  • SunのJava Adventure Builderアプリケーション

ソフトウェア要件

ソフトウェアを使用できる場所へのリンクを提供します。 少なくとも、JDK、Ant、およびOC4Jを含みます。

表記法

  • %ORACLE_HOME% - Oracle Containers for J2EEをインストールしたディレクトリ
  • %JAVA_HOME% - JDKがインストールされているディレクトリ

アプリケーションの構築

このドキュメントは、移行されたAdventure Builder 1.0.1をOC4J 10g(10.1.3.1.0)にデプロイする方法について説明します。

元のアプリケーションをSunのWebサイトから直接ダウンロードして、EJB 3.0およびWSメタデータ使用のために行われた変更を比較できます。

アプリケーションを最初から構築するには、 how-to-rebuild-adventurebuilder-ejb3-wsm.htmlを参照してください。

アプリケーションの実行

How-toの配布物の確認

この例には次のファイルが含まれます。

  • doc/
    • how-to-adventurebuilder-ejb3wsm.html - このドキュメント
  • config/: JMS、DB構成用のOC4Jのサンプル構成ファイル
  • scripts/
    • Oracle Databaseに表を作成するスクリプト

アプリケーションの設定

Oracle Databaseの使用

1) OC4Jの構成、または提供されたSQLスクリプト scripts/oracle.sqlを使用してアプリケーションを配置する前に、Oracle Databaseを構成します。 このスクリプトは、アプリケーションの使用に必要な表およびデータを作成します。 OracleデータベースでSQL*Plusを使用している場合は、 abという名前のユーザーが作成されていると仮定して、次のコマンドを使用できます。

>sqlplus ab/ab @oracle.sql
@opc_tables
@supplier_tables

元のAdventure Builderアプリケーションは、CMP 2.1 Entity Beanの表の自動作成機能を使用します。 提供されたスクリプトでOPCおよびサプライヤ表のスキーマを明示的に作成できるため、これは適切ではありません。

2) OC4Jにデータソースを作成し、必要な表とデータをロードするユーザーに接続します。 新しいデータソースのJNDIロケーションは、 jdbc/adventure/AdventureDBとなります。

ANTタスクを使用して、JDBCリソースを作成できます。 ant-oracle.propertiesファイルのデータベース構成(db.host、db.sid、db.port、db.user、db.password)が変更されていることを確認してください。

$ORACLE_HOME/ant/binPATH環境変数に含まれていることを確認し、次のコマンドを実行してください。

>ant configure-ds

この新しいデータソースを作成するには、次のいずれかを行ってください。

OC4Jリソースの構成

Adventure Builderは、J2EEコンテナの提供するさまざまなリソースに依存します。 アプリケーションを配置および実行する前に、これらのリソースをOC4Jで構成する必要があります。

メール・サーバー

注文の送信および完了に関する電子メールを作成するアプリケーションを有効にするには、OC4Jでメール・セッション・リソースを構成する必要があります。

1) %ORACLE_HOME%/j2ee/home/config/application.xmlファイルを編集して、使用するメール・サーバーのエントリを追加します。 たとえば、 application.xmlに次のエントリを設定します。

<mail-session location="mail/MailSession" smtp-host="mailhost.maildomain.com">
  <property name="mail.transport.protocol" value="smtp"/>
  <property name="mail.smtp.from" value="yourmail@yourhome.com"/>
</mail-session>

JMSキュー

Adventure Builderは、メッセージ・キューを使用して注文とフルフィルメントの詳細を送信します。 Adventure Builderが使用する複数のJMSキューを構成する必要があります。

ANTタスクを使用して、JMSリソースを構成できます。 $ORACLE_HOME/ant/binPATH環境変数に含まれていることを確認してください。JMSリソースの構成は、サンプルのルート・ディレクトリのコマンド・プロンプトから、次のコマンドを使用して行います。

>ant configure-jms

環境の設定

次の環境変数が定義されていることを確認してください。

  • %ORACLE_HOME% - Oracle Containers for J2EEをインストールしたディレクトリ
  • %JAVA_HOME% - J2SE 5.0をインストールしたディレクトリ
  • %PATH% - %ORACLE_HOME% /ant/binを含む

サーバーの起動

以上を変更した後に、次のコマンドを使用してOracle Containers for J2EEをスタンドアロンで起動します。

>set OC4J_JVM_ARGS=-Doracle.xdkjava.transformer.compatible.jdkversion=JDK_1.4

>%ORACLE_HOME%/bin/oc4j -start

Oracle Application Server管理インストールを使用している場合、上記の変更後に次のコマンドを使用します。

> %ORACLE_HOME%/opmn/bin/opmnctl startall

4. アプリケーションの生成、コンパイル、および配置

Ant 1.6.2はOracle Containers for J2EEに同梱されており、 PATH環境変数を $ORACLE_HOME/ant/binに設定する必要があります。 オペレーティング・システムによっては、現在はAntが環境変数をサポートしていないものがあります。 該当するオペレーティング・システムの場合は、 %HOWTO_HOME% ディレクトリにあるant-oracle.xmlを修正してください。

demo directoryのant-oracle.propertiesを編集し、 次のOracle Containers for J2EEスタンドアロンで示されているとおりに、プロパティに正しい値が設定されていることを確認してください。

  • oc4j.host:Oracle Containers for J2EEが稼働しているホスト (デフォルトはlocalhost)
  • oc4j.admin.port:RMIポート番号(デフォルトは23791)
  • oc4j.admin.user:管理ユーザー名(デフォルトはoc4jadmin)
  • oc4j.admin.password:管理ユーザーのパスワード(デフォルトはwelcome)
  • oc4j.binding.module:配置したWebモジュールがあるWebサイト名(デフォルトはhttp-web-site)

Oracle Application Server管理インストールを使用している場合、Oracle Application Serverのインストールにおいて管理されているOracle Containers for J2EEインスタンスの oc4j.admin.userおよび oc4j.admin.password以外の変更については、次のプロパティを変更します。

  • opmn.host:Oracle Application Serverが稼働しているhostname/IP (デフォルトはlocalhost)
  • opmn.port:Oracle Application Serverインストール時のOPMNリクエスト・ポート(デフォルトは6003)
  • oc4j.instance:管理ユーザー名(デフォルトはoc4jadmin)

環境に応じて、ant-oracle.propertiesのdeployer.uriを適切にコメントアウトする必要があります。たとえば、OPMNの管理する単一のOracle Containers for J2EEインスタンスやクラスタ化されたOracle Containers for J2EEインスタンス/グループなどです。

注:OracleAS環境でデプロイする場合や、httpポートが8888以外の場合は、ディスクリプタを適宜変更して、 how-to-rebuild-adventurebuilder-ejb3-wsm.htmlに示された手順に従ってアプリケーションを再構築する必要があります。

$ORACLE_HOME/ant/binPATH環境変数に含まれていることを確認してください。Adventure Builderのデプロイは、サンプルのルート・ディレクトリのコマンド・プロンプトから、次のコマンドを使用して行います。

>ant

提供されているbuild.xmlファイルのデフォルトの ターゲットを実行すると、次の手順が実行されます。

  • 次に示す各種アプリケーション・コンポーネント用earファイルのデプロイ
    • ActivitySupplier.ear
    • AirlineSupplier.ear
    • Bank.ear
    • ConsumerWebsite.ear
    • LodgingSupplier.ear
    • OPC.ear
  • ConsumerWebsiteのWebモジュールを、 "/ab"のコンテキスト・パスにバインドします。

アプリケーションの実行

Antのビルド・スクリプトを使用してアプリケーションの配置に成功したら、次のURLからConsumer Websiteアプリケーションにアクセスして、アプリケーションのテストを行うことができます。 http://localhost:port/ab/

まとめ

このドキュメントで学習した内容は、次のとおりです。

  • Adventure Builderアプリケーションについて
  • EJB 3.0とWebサービス・メタデータの使用のために、オラクルによって行われた変更について
  • アプリケーションのOC4Jでのデプロイおよびテスト