次のセクションでは、EJBセッションBeanとしてのBC4Jアプリケーションのデプロイについて説明します。このトピックに記載されている情報は、http://otn.oracle.com/products/jdev/howtos/appservers/deploy_bc4j_to_jboss.html
からも入手できます。
Oracle JDBCドライバのデータソースを作成するには、JBoss/conf/<configuration>
ディレクトリにあるjboss.jcml
ファイルを編集します。たとえば、C:\<JBoss_install>\jboss\conf\catalina
ディレクトリにあります。このファイルには、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> |
</mbean>
のすぐ下に次のエントリを追加します。データベース構成に合せてURL、JDBCUserおよび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データソースを作成します。
JDeveloperデプロイメント・プロファイルのウィザードにより、ビジネス・コンポーネントをJ2EE EJB JARモジュールとしてターゲット・サーバーにデプロイする際に必要なすべてのコードを作成します。このセクションでは、JBossにコピーされるOracle9iASデプロイメントのBC4Jアプリケーション・モジュール用のデプロイメント・プロファイルの作成について説明します。
<YourApplicationModule>
9iAS構成を選択します。java:/OracleDS
と入力します。ビジネス・コンポーネントをテストするには、そのビジネス・コンポーネントを使用する新規JSPアプリケーションを作成します。
<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クラスを使用してアプリケーション・モジュールへの参照を取得します。
import oracle.jbo.*; import javax.naming.*; import java.util.*; import mypackage2.common.ejb.beanmanaged.Mypackage2ModuleHome; import oracle.jbo.client.remote.ejb.ApplicationModuleProxy; |
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(); } } |
DEPT
データベース表の内容がアプリケーションのログ・ウィンドウに表示されていることを確認します。 注意: メッセージ・ログが表示されていない場合は、メイン・メニューから「表示」->「ログ・ウィンドウ」を選択する必要があります。