EJBセッションとしてのBC4JのJBossへのデプロイ

次のセクションでは、EJBセッションBeanとしてのBC4Jアプリケーションのデプロイについて説明します。このトピックに記載されている情報は、http://otn.oracle.com/products/jdev/howtos/appservers/deploy_bc4j_to_jboss.htmlからも入手できます。

JBossでのOracleデータソースの作成

Oracle JDBCドライバのデータソースを作成するには、JBoss/conf/<configuration>ディレクトリにあるjboss.jcmlファイルを編集します。たとえば、C:\<JBoss_install>\jboss\conf\catalinaディレクトリにあります。このファイルには、1つの変更と1つの追加を行います。

  1. 次のエントリを探します。

    <mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
           <attribute name="Drivers">org.hsqldb.jdbcDriver</attribute>
           </mbean>

    このエントリを、次のエントリで置換します。

    <mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
           <attribute name="Drivers">oracle.jdbc.driver.OracleDriver,org.hsqldb.jdbcDriver</attribute>
           </mbean>

  2. 変更した</mbean>のすぐ下に次のエントリを追加します。データベース構成に合せてURLJDBCUserおよびPasswordのプロパティを変更します。

    <mbean code="org.jboss.jdbc.XADataSourceLoader"
               name="DefaultDomain:service=XADataSource,name=OracleDS">
               <attribute name="PoolName">OracleDS</attribute>
               <attribute name="DataSourceClass">
               org.jboss.pool.jdbc.xa.wrapper.XADataSourceImpl
               </attribute>
               <attribute name="URL">
               jdbc:oracle:thin:@rcleveng-sun:1521:RCLEVENG
               </attribute>
               <attribute name="JDBCUser">scott</attribute>
               <attribute name="Password">tiger</attribute>
               <attribute name="MinSize">0</attribute>
               <attribute name="MaxSize">10</attribute>
               </mbean>

最初の変更により、Oracle JDBCドライバをロードし、JDBC DriverManagerクラスに登録できます。

2番目の変更は、java:/OracleDSのJNDI名にバインドされるJDBCデータソースを作成します。

JBossのBC4J構成の作成

JDeveloperデプロイメント・プロファイルのウィザードにより、ビジネス・コンポーネントをJ2EE EJB JARモジュールとしてターゲット・サーバーにデプロイする際に必要なすべてのコードを作成します。このセクションでは、JBossにコピーされるOracle9iASデプロイメントのBC4Jアプリケーション・モジュール用のデプロイメント・プロファイルの作成について説明します。

  1. BC4J EJBのデプロイメント・プロファイルを作成します。
    1. EJBタイプについて、「使用可能」リストから「セッションFacade(BMT)」を選択し、「選択済」リストに移動します。
  2. ナビゲータで、BC4Jアプリケーション・モジュール・アイコン(application_module_icon)を選択します。
  3. application_module_iconを右クリックし、「構成」を選択します。
  4. 適切な<YourApplicationModule>9iAS構成を選択します。
  5. 「コピー」を選択します。構成のコピーが作成され、「名前」リストの下に表示されます。
  6. この構成を選択し、「編集」をクリックします。
  7. 「ビジネス・コンポーネントの構成名」フィールドで、構成の名前をJBoss構成として認識する名前に変更します。たとえば、JBossに変更します。
  8. 「接続タイプ」リストで、「JDBCデータソース」を選択します。
  9. 「データソース名」に入力します。たとえば、java:/OracleDSと入力します。

EJBとしてアプリケーション・モジュールにアクセスするためのJSPの作成

ビジネス・コンポーネントをテストするには、そのビジネス・コンポーネントを使用する新規JSPアプリケーションを作成します。

  1. 新しい空のプロジェクトを作成します。
  2. ビジネス・コンポーネントJSPアプリケーション・ウィザードを使用し、作成したBC4JオブジェクトのデフォルトのJSPアプリケーションを作成します。
  3. ステップ2/4で、JBoss構成を必ず選択します。
  4. メイン・メニューから、「ファイル」->「すべて保存」を選択します。
  5. ナビゲータで、webxml_icon web.xmlアイコンを右クリックし、「設定」を選択します。
  6. BC4Jプロジェクトからアプリケーション・モジュールへのEJB参照があることを確認します。
  7. ナビゲータで、デプロイメント・プロファイル・アイコン(WAR_dep_profile_icon <myappwar>.deploy)を選択します。
  8. このアイコンを右クリックし、「EARファイルにデプロイ」を選択します。JBossはEJB参照をWARファイルのjava:comp/env/ JNDIネームスペースの下に追加しないため、このアプリケーションは、WARファイルではなくEARファイルにデプロイする必要があります。
  9. このEARファイルを<JBoss_install>\deployディレクトリにコピーします。たとえば、C:\<JBoss_install>\jboss\deployにコピーします。

これで、正常に機能するBC4J JSPアプリケーションがWebモジュールとしてデプロイされました。次のようなアプリケーションURLを入力することにより、Webブラウザでアプリケーションを起動できます。

http://localhost:8080/<context root>

ここで、<context root>は、BC4J JSPアプリケーションを含むプロジェクトのJ2EEコンテキスト・ルートです。たとえば、Workspace1-Project1-context-root/などです。

アプリケーション・モジュールのアプリケーション・テスト・クライアントの作成

JSPクライアントから分離されたスタンドアロンJavaアプリケーションは、EJBセッションBeanとしてデプロイされるBC4Jアプリケーション・モジュールにアクセスできます。

セッションBeanとしてデプロイされるBC4Jアプリケーション・モジュールと対話する新規クラスを作成します。これはスタンドアロンJavaアプリケーションであり、セッションBeanを検索し、ApplicationModuleProxyクラスを使用してアプリケーション・モジュールへの参照を取得します。

  1. ナビゲータで、クラス・ファイルを作成するproject_icon <projectname>.jprを選択します。
  2. 「ファイル」->「新規」を選択し、「新規」ギャラリを開きます。
  3. 「カテゴリ」ツリーで、「General」を開き、「シンプル・ファイル」を選択します。
  4. 「項目」リストで、「Javaクラス」をダブルクリックします。
  5. 「新規クラス」ダイアログで、デフォルトの設定のまま「OK」をクリックします。
  6. 新規に作成したJavaソース・ファイルに次のimport文を追加します。
    import oracle.jbo.*;
    import javax.naming.*;
    import java.util.*;
    import mypackage2.common.ejb.beanmanaged.Mypackage2ModuleHome;
    import oracle.jbo.client.remote.ejb.ApplicationModuleProxy;
    
  7. 次のメイン・メソッドをクラスに追加します。
      public static void main(String[] args)
      {
        try
        {
          Hashtable env = new Hashtable();
          env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
          env.put(Context.PROVIDER_URL, "localhost");
          env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces" );
          Context ctx = new InitialContext(env);
    
          Mypackage2ModuleHome beanHome  = (Mypackage2ModuleHome )ctx.lookup("mypackage2.Mypackage2Module");
    
          // Create the proxy. If you have exported methods then you can cast it to your common am interface.
          ApplicationModule am = ApplicationModuleProxy.create(beanHome, env);
    
          //
          // Note: Change this connect string to the connect string you use to connect to your database
          //
          am.getTransaction().connectToDataSource( null, "java:/OracleDS", null, null, false );
          System.out.println( am.getClass() );
          String[] voNames = am.getViewObjectNames();
          ViewObject vo = am.findViewObject("DeptView");
    
          Row row;
          while ( ( row = vo.next() ) != null )
          {
            int numAttrs = row.getAttributeCount();
            for ( int i=0; i < numAttrs; i++ )
            {
              System.out.println( "Name= " + vo.getAttributeDef(i).getName() +
                                  " Value= " + row.getAttribute(i) );
            }
            System.out.println("");
          }
          am.getTransaction().disconnect();
        }
        catch ( Exception ex )
        {
          ex.printStackTrace();
        }
      }

BC4J EJBアプリケーション・クライアントのテスト

  1. プロジェクト設定を編集し、J2EEライブラリおよびOracle9iASライブラリを削除し、JBossライブラリをプロジェクトに追加します。
  2. テスト・クライアントを実行します。
  3. DEPTデータベース表の内容がアプリケーションのログ・ウィンドウに表示されていることを確認します。

注意: メッセージ・ログが表示されていない場合は、メイン・メニューから「表示」->「ログ・ウィンドウ」を選択する必要があります。

参照先