Copyright © Oracle Corporation, 2005. All rights reserved.
Oracle Application Server 10g (10.1.2)
への移行
技術情報
OC4J Standalone/J2EE & Web Cache
Oracle Application Server10g(10.1.2)へ移行する
上での一般的考慮点
y
設定
–
データソース : data-sources.xml
–デプロイメントディスクリプタ
y WARファイル(Webアプリケーション) : orion-web.xml
y JARファイル(Enterprise JavaBeans) : orion-ejb-jar.xml
y EARファイル(エンタープライズアプリケーション) : orion-application.xml
y RARファイル(JCAリソースアダプタ) : oc4j-ra.xml
–
JMS(Java Message Service)
y OJMS or OracleAS JMSの選択
y OJMS利用の場合 : AQの設定、リソースプロバイダ設定
y OracleAS JMS利用の場合 : jms.xml
–クラスローディング
y どのクラスローダにクラスを登録する
y
プログラム
–各種リソースを取得するJNDI名
–他社アプリケーションサーバに依存したAPI
y 例:WebLogicの場合 : weblogic.*パッケージの利用
Webサービス
Copyright © Oracle Corporation, 2005. All rights reserved.
OC4J Standalone/J2EE & Web Cache
OC4Jディレクトリ構造
ORACLE_HOME
j2ee
application-deployments
applications
config
connectors
default-web-app
demo
jazn
jsp
lib
persistence
ステートフルセッションBeanリポジトリ
Oracle以外が提供するライブラリ *
JSPタグライブラリ *
JAZN(JAAS)設定・デモ *
各種デモ **
デフォルトWebアプリケーション *
JCAリソースアダプタ置き場
OC4Jインスタンス全体の設定
EAR・WARファイル置き場
EAR・WAR展開場所
y
ORACLE_HOME配下のディレクトリ構造
OC4Jインスタンス名
applib
共通ライブラリ置き場
J2EE_HOME
OC4J StandaloneとJ2EE & Web
Cacheでインストールしたときのデ
フォルトOC4Jインスタンスhomeと
新規に作成したOC4J
インスタンス ディレクトリ構成は多少異なります。
log
ログ
tldcahe
タグリブディレクティブキャッシュ
(OC4Jインスタンスhomeの例)
Copyright © Oracle Corporation, 2005. All rights reserved.
5
OC4J Standalone/J2EE & Web Cache
OC4J関連主な設定ファイル
y
J2EE_HOME/config配下の主要な設定ファイル
–
OC4Jインスタンス全体の各種設定
config
J2EE_HOME
* J2EE & Web Cacheでインストールした場合のRMI、JMSのポート番号の設定はORACLE_HOME/opmn/conf/opmn.xml で行います。(OC4J Standaloneの場合にはrmi.xml,jms.xmlで行います)
oc4j-connectors.xml
単体JCAリソースアダプタの設定
application.xml
グローバルアプリケーション設定
data-sources.xml
データソース設定
グローバルWebアプリケーション設定
global-web-application.xml
Webサイトの設定(HTTP)
http-web-site.xml
Webサイトの設定(AJP)
default-web-site.xml
OC4J全体の設定
server.xml
RMIの設定 *
rmi.xml
jms.xml
OracleAS JMSの設定 *
パッケージ構造と
Copyright © Oracle Corporation, 2005. All rights reserved.
7
OC4J Standalone/J2EE & Web Cache
OC4JにデプロイするEARパッケージ構造
y
OC4JのEARファイル内のデプロイメントディスクリプタ(DD)とパッケージ構造
–OC4J固有のDDを含まない場合、デプロイ時に雛形が生成される
EAR ファイル META-INF MANIFEST.INF web.xml orion-web.xml WEB-INF classes lib MANIFEST.INF ejb.xml META-INF MANIFEST.INF ra.xml META-INF JAR MENIFEST.INF application.xml META-INF MANIFEST.INF application-client.xml META-INF JAR WAR ファイル EJB-JAR ファイル CLIENT-JAR ファイル RAR ファイル orion-application.xml data-sources.xml orion-ejb.xml orion-application-client.xml oc4j-ra.xml J2EE汎用 OC4J固有OC4J Standalone/J2EE & Web Cache
デプロイメントディスクリプタ
の生成方法
y
OC4J固有のデプロイメントディスクリプタの生成方法は3種類
1.OC4Jによる自動生成
–
OC4J固有のデプロイメントディスクリプタ(orion-web.xml、orion-ejb-jar.xml等)
を含まないEARファイルをそのままデプロイするとデプロイメントディスクリプ
タの雛形が生成
→雛形生成後編集 → EARファイルに格納
2.手動による作成
–
テキストエディタ等、手動によりOC4J固有のデプロイメントディスクリプタを作
成しEARファイルに格納しデプロイ
3.JDeveloperによる生成(個人的におすすめ)
–
JDeveloperを用いOC4J固有のデプロイメントディスクリプタを作成しEARファ
イルに格納。ウィザード形式で生成されるので一番容易に作成することが可
能
Copyright © Oracle Corporation, 2005. All rights reserved.
9
OC4J Standalone/J2EE & Web Cache
移行が必要な主なデプロイメントディスクリプタ
・設定ファイル(WebLogicの場合)
y
各APサーバ固有のデプロイメントディスクリプタの比較
–WebLogicからOC4Jにアプリケーションを移行する際に変換(作成)・設定が必要な、
デプロイメントディスクリプタ・設定ファイル
weblogic-ra.xml
oc4j-ra.xml
RARファイル内(JCA)
weblogic-ejb-jar.xml
weblogic-cmp.xml(任意)
orion-ejb-jar.xml
JARファイル内(EJB)
config.xml
server.xml
data-sources.xml
rmi.xml
jms.xml
application.xml
全体
weblogic-applicatin.xml
orion-application.xml
EARファイル内
weblogic.xml
orion-web.xml
WARファイル内
(Webアプリケーション)
WebLogic
OC4J
OC4J Standalone/J2EE & Web Cache
設定ファイル・デプロイメントディスクリプタ
y
OC4Jの設定ファイルとデプロイメントディスクリプタの関係
–J2EE_HOME/config配下とEARファイル内の設定ファイルの関連は以下の様に
なる
–注意)同様の設定がされていた場合、EARファイル内の設定が優先される
application.xml
data-sources.xml
global-web-application.xml
J2EE_HOME/config配下
orion-application.xml
data-sources.xml
orion-web.xml
EARファイル内
Copyright © Oracle Corporation, 2005. All rights reserved.
クラスローディング
OC4J Standalone/J2EE & Web Cache
クラスローディング関連の例外
y
J2EEアプリケーションで、以下の様なクラスローディング関連の例外が発生した場合、ク
ラスの整理(重複・バージョン等)やOC4Jでのクラスローダの設定を見直す必要がある
–見えない
y java.lang.ClassNotFoundException: クラスローダが動的にロードするときにクラスが見つか
らない
y java.lang.NoClassDefFoundException: コンパイル時点では、クラスがあったが実行時には
見つからない
–見えすぎ
y java.lang.ClassCastException: 複数のクラスが見えていてキャストで異なるクラスにキャスト
しようとしている
–管理
y java.lang.IncompatibleClassChangeError: サブクラスもしくはインタフェースが変更された
y java.lang.ClassCircularityError: クラスの初期化時にループしている
y java.lang.UnsupportedClassVersionError
y java.lang.VerifyError: JVMの制約(セキュリティ等)をベリファイヤが検出したとき
y java.lang.ClassFormatError: クラスフォーマットが正しくない、もしくは壊れている
Copyright © Oracle Corporation, 2005. All rights reserved.
13
OC4J Standalone/J2EE & Web Cache
典型的なOC4Jクラスローダの階層
y
OC4Jのクラスローダは以下の様な階層を持ち、考慮点は以下
–CLASSPATHは上位のクラスローダから継承(正確には委譲関係)
–重複したクラスがある場合、上位のクラスローダが優先
Global-Application
EJB/Librarys
Web-App
Web-App
Connectors
EJB/Librarys
Web-App1
Web-App2
J2SE
OC4J
EAR1
EAR2
EAR3
Global-Connectors
BootStrap
Extension
System
OC4J Standalone/J2EE & Web Cache
クラスローダと設定
y
OC4Jのクラスローディングに関係する設定
J2EE JRE RARファイル内の全てのJARファイル META-INF/manifest.inf (JARファイル内) Connector OC4J server.xmlの<parent>タグ “cross application” OC4J JRE application.xmlの<library>タグ META-INF/manifest.inf (JARファイル内) Global-Applications JRE JRE JRE JRE JRE コマンドライン: -classpath コマンドライン: -cp コマンドライン: -jar システムプロパティ: java.class.path META-INF/manifest.inf (JARファイル内) System JRE JRE システムプロパティ: java.ext.dir (デフォルト: JAVA_HOME/jre/lib/ext) META-INF/manifest.inf (JARファイル内) Extentions JVM JVM JRE コマンドライン: -bootclasspath (Sun JVMのみ) システムプロパティ: sun.boot.class.path (Sun JVMのみ) META-INF/manifest.inf (JARファイル内) BootStrap タイプ 設定 クラスローダCopyright © Oracle Corporation, 2005. All rights reserved.
15
OC4J Standalone/J2EE & Web Cache
クラスローダと設定(続き)
y
OC4Jのクラスローディングに関係する設定
J2EE J2EE J2EE OC4J OC4J JRE WARファイルのMETA-INF/manifest.mf WARファイルのMETA-INF/classes WARファイルのMETA-INF/lib orionweb-xmlの<classpath>タグ global-web-application.xmlの<library>タグ JARファイル内のMETA-INF/manifest.inf Web-Application J2EE OC4J JRE application.xmlの<ejb>タグ Orion-application.xmlの<library>タグ META-INF/manifest.inf (JARファイル内) EJB/Library タイプ 設定 クラスローダクラスローダに関わるコード
y
クラスローダに依存するコードを記述する場合、パッケージ構造によっては、カレント
スレッドが実行されているコンテキストから取得したClassLoaderを利用する必要があり
ます。
–クラスローダに依存するメソッド例
1) java.lang.Class#forName()
2) java.lang.ClassLoader#getResourceAsStream()
–カレントスレッドから取得したClassLoaderからクラスを初期化する例
Class.forName( "sample.SampleClass", true, Thread.currentThread().getContextClassLoader());Copyright © Oracle Corporation, 2005. All rights reserved.
データソース
OC4J Standalone/J2EE & Web Cache
データソースの種類
y
OC4Jでは、トランザクションスコープの構成に応じ2種類のデータソースを用意
1.エミュレートされたデータソース
y
XAをサポートしないJTAトランザクション
y
2フェースコミットサポートなし
y
内部的に1DB物理接続で処理されるため高速
y
com.evermind.sql.DriverMangerDataSourceクラス使用
y
Oracle Database 1インスタンスのシステムで利用
2.エミュレートされていないデータソース
y
XAをサポートしたJTAトランザクション
y
Oracle Database間の2フェーズコミットサポート
y
com.evermind.sql.OrionCMTDataSourceクラス使用
y
Oracle Database 2インスタンス以上のシステム、1インスタンスでもデータソ
ースを分けたい場合に利用
Copyright © Oracle Corporation, 2005. All rights reserved.
19
OC4J Standalone/J2EE & Web Cache
データソースの設定
y
データソースの設定方法は3種類の方法があります
1.AS Controlを利用する方法
y
J2EE_HOME/config/data-sources.xmlの間接的な編集やEARファイル内に
予め格納されたdata-sources.xmlをデプロイ後に間接的に編集可能
1)AS Controlによる編集
2)OC4Jインスタンスの再起動
2.J2EE_HOME/conf/data-sources.xmlを直接編集
1)ファイル編集
2)dcmctl updataConfigを必ず実行
3)OC4Jインスタンスの再起動
3.EARファイル内に予めdata-sources.xmlを格納
1)data-source.xml作成(手動もしくはJDeveloper)
2)EARファイル作成
3)デプロイ
OC4J Standalone/J2EE & Web Cache
データソースの設定(AS Contorl)
y
データソースの設定
–J2EE_HOME/config/data-sources.xmlの間接的な編集やEARファイル内に予め
格納されたdata-sources.xmlをデプロイ後に間接的に編集可能
–エミュレートされたデータソース、エミュレートとされていないデータソースの設定
が可能
[OracleASインスタンス]
> [OC4Jインスタンス]
> データ・ソース
Copyright © Oracle Corporation, 2005. All rights reserved.
21
OC4J Standalone/J2EE & Web Cache
エミュレートされたデータソース設定(Manual)
y
J2EE_HOME/config/data-sources.xml
–DriverManagerDataSourceクラスを使用
–ejb-location属性のJNDI名でルックアップ
<data-sources> … <data-source class="com.evermind.sql.DriverManagerDataSource" name="OracleDS" location="jdbc/OracleCoreDS" xa-location="jdbc/xa/OracleXADS" ejb-location="jdbc/OracleDS" connection-driver="oracle.jdbc.driver.OracleDriver" username=“dbuser" password=“dbuserpassword" url="jdbc:oracle:thin:@<hostname>:<port>:<sid> " inactivity-timeout="30" /> … </data-sources>注意)location,xa-location,ejb-locationは、必ず異なる名前を指定しなければならない
OC4J Standalone/J2EE & Web Cache
データソースの属性
データソースオブジェクトのJNDI論理名。エミュレートされたデータソースのJNDIルックア ップでサポートされるのはejb-location属性のみです location 60秒 接続プールがmax-connectionsに達した時に開放するまでの待ち時間(秒) wait-timeout 3回 接続再試行回数 max-connect-attempts N/A 2フェーズコミット時のデータベースリンクの指定に利用 property N/A 接続プールの最大数 max-connections 1秒 失敗した接続を再試行するまでの待ち時間(秒) connection-retry-interval 0 接続プールの最小数。Datasource.getConnection()を呼び出すまで接続をオープンしない min-connections 60秒 未使用の接続をクローズする時間(秒) inactivity-timeout N/A DB接続するユーザのパスワード password N/A JDBC URL URL N/A DB接続するユーザ名 username N/A データソースのJDBCドライバ・クラス名 connection-driver N/A EJBデータソースの論理名。エミュレートされたデータソースの場合に利用。JNDIルックア ップでサポートされるのはejb-locationのみ ejb-location N/A XAデータソースの論理名(非推奨) xa-location デフォルト値 意味 属性名Copyright © Oracle Corporation, 2005. All rights reserved.
23
OC4J Standalone/J2EE & Web Cache
データソースの設定(Manual:EARファイル内)
y
EARファイル内に予めdata-sources.xmlを格納
–EARファイ内のみ有効なデータソースを定義
–J2EE_HOME/config/data-sources.xmlとJNDIが重複していた場合EARファイル内
のdata-source.xmlが優先
EARファイル内のルート配下のMETA-INFにorion-application.xmlに以下の記述
<orion-application> … <data-sources path="./data-sources.xml"/> … </orion-application>EARファイル内のルートは以下のMETA-INFdata-sources.xmlを配置
<data-sources> … <data-source class="com.evermind.sql.DriverManagerDataSource" … </data-sources>OC4J Standalone/J2EE & Web Cache
データソースの取得(J2EE標準)
y
データソースの呼び出し(データソースのルックアップ)
–データソースを取得するときJ2EE汎用的なネーミングコンテキストである論理的
なデータソース名java:comp/env/jdbc/…でルックアップ
データソースの呼び出し例
Context ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup(
“java:comp/env/jdbc/OracleMappedDS”);
補足)data-sources.xml内で定義したJNDI名で呼び出すことも可能
-エミュレートされたデータソースの場合:data-sources.xmlのejb-location属性
-エミュレートされていないデータソースの場合:data-sources.xmlのlocaltion属性
Copyright © Oracle Corporation, 2005. All rights reserved.
25
OC4J Standalone/J2EE & Web Cache
データソースの取得(J2EE標準)
y
データソースの論理的なJNDI名定義
–Webモジュール:web.xml
–EJBモジュール:ejb-jar.xml
<web-app> … <resource-ref> <res-ref-name>jdbc/OracleMappedDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Application</res-auth> </resource-ref> </web-app>web.xmlの例
<enterprise-beans> <entity> … <resource-ref> <res-ref-name>jdbc/OracleMappedDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Application</res-auth> </resource-ref> </entity> </enterprise-beans>ejb-jar.xmlの例
<orion-web-app servlet-webdir="/servlet/"> <resource-ref-mapping name="jdbc/OracleMappedDS" location=“jdbc/OracleDS” /> </orion-web-app>
y
データソースの論理なJNDI名と実際のJNDI名*のマッピング
–Webモジュール: orion-web.xml
–EJBモジュール: orion-ejb-jar.xml
<orion-ejb-jar> <enterprise-beans> <entity-deployment name="EmployeeBean" location="bmpapp/EmployeeBean" table="EMP"> <resource-ref-mapping name="jdbc/OracleMappedDS" location=“jdbc/OracleDS” /> </entity-deployment> </enterprise-beans> </orion-ejb-jar>orion-web.xml
の例
orion-ejb-jar.xml
の例
OC4J Standalone/J2EE & Web Cache
データソースの取得(OC4J固有)
Copyright © Oracle Corporation, 2005. All rights reserved.
EJB(Enterprise JavaBeans)
EJB Homeオブジェクト取得とDD
y
EJBの呼び出しとプロパティファイル/デプロイメントディスクリプタの設定に関する関連
は以下の様になります。
リモートEJBの呼び出し
ローカルEJBの呼び出し
①EJBクライアント
③web.xml/ejb-jar.xml
④orion-web.xml/orion-ejb-jar.xml
②jndi.properties(Option)
①EJBクライアント
②web.xml/ejb-jar.xml
③orion-web.xml/orion-ejb-jar.xml
EJB
クライアント側
⑤orion-ejb-jar.xml
⑥ejb-jar.xml
④orion-web.xml/orion-ejb-jar.xml
⑤ejb-jar.xml
EJB側
Copyright © Oracle Corporation, 2005. All rights reserved.
29
OC4J Standalone/J2EE & Web Cache
EJBクライアント側
リモートEJBの呼び出し(J2EE標準)
y
リモートEJB呼び出し
–EJBのホームオブジェクトを取得するときJ2EE汎用的なネーミングコンテキストで
ある論理的なデータソースのJNDI名java:comp/env/ejb/…でルックアップ
EJB呼び出しの例
Context context = new InitialContext(); Object homeObject = context.lookup("java:comp/env/ejb/EmployeeMappedBean"); EmployeeHome home = (EmployeeHome) PortableRemoteObject.narrow( homeObject, EmployeeHome.class);
補足)orion-ejb-jar.xml内のlocation属性で定義した実際のJNDI名で直接呼び出すことも可能
java.naming.factory.initial= com.evermind.server.rmi.RMIInitialContextFactory java.naming.provider.url=ormi://<hostname>:<rmi_port>/stateless java.naming.security.principal=<user_name> java.naming.security.credentials=<password>
y
JNDI初期コンテキストの設定
–InitialContext生成時のプロパティはjndi.propertiesで設定
–WARとJARが同一のEARに含まれる場合特に必要なし
y InitialContext生成時、ローカルのJNDIツリーから取得するた
–CLASSPATHに含まれる必要有り
y WARファイル内のMETA-INF/classes等
jndi.propertiesの例
初期コンテキストファクトリとして指定可能なクラス
− com.evermind.server.rmi.RMIInitialContextFactory
− com.evermind.server.ApplicationClientInitialContextFactory
OC4J Standalone/J2EE & Web Cache
EJBクライアント側
Copyright © Oracle Corporation, 2005. All rights reserved.
31
OC4J Standalone/J2EE & Web Cache
EJBクライアント側
リモートEJBの呼び出し(J2EE標準)
y
EJBの論理的なJNDI名定義
–Webモジュール:web.xml
–EJBモジュール:ejb-jar.xml
<web-app> <ejb-ref> <ejb-ref-name>ejb/EmployeeMappledBean</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <home>employee.EmployeeHome</home> <remote>employee.Employee</remote> <!-- <ejb-link>test.jar# EmployeeMappledBean</ejb-link> --> </ejb-ref> <web-app>web.xml
の例
<enterprise-beans> <session> <!-- or <entity> --> <ejb-ref> <ejb-ref-name>ejb/EmployeeMappledBean</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <home>employee.EmployeeHome</home> <remote>employee.Employee</remote> <!-- <ejb-link>test.jar# EmployeeMappledBean</ejb-link> --> </ejb-ref> <session> <!-- or </entity> --> </enterprise-beans>ejb-jar.xml
の例
OC4J Standalone/J2EE & Web Cache
EJB側
リモートEJBの呼び出し(OC4J固有)
y
EJBの論理なJNDI名と実際のJNDI名のマッピング
–Webモジュール: orion-web.xml
–EJBモジュール: orion-ejb-jar.xml
orion-web.xml
の例
<orion-web-app> ... <ejb-ref-mapping name="ejb/EmployeeMappledBean" location="employee/EmployeeBean" /> ... </orion-web-app>orion-ejb-jar.xml
の例
<orion-ejb-jar>... <ejb-ref-mapping name="ejb/EmployeeMappledBean" location="employee/EmployeeBean" /> ... </orion-ejb-jar>Copyright © Oracle Corporation, 2005. All rights reserved.
33
OC4J Standalone/J2EE & Web Cache
EJB側
リモートEJBの呼び出し(OC4J固有)
y
実際のJNDI名の定義
–orion-ejb-jar.xml
–ejb-jar.xmlのejb-name属性と実際のJNDI名のマッピング
orion-ejb-jar.xmlの例
<orion-ejb-jar> ... <enterprise-beans><session-deployment name=" EmployeeBean "
location="employee/EmployeeBean" /> </enterprise-beans>
...
OC4J Standalone/J2EE & Web Cache
EJB側
リモートEJBの呼び出し(J2EE標準)
y
Enterprise Beanの基本的な定義
–ejb-jar.xml
–ejb-name要素により、Enterprise Beanを一意に識別
ejb-jar.xmlの例
<enterprise-beans> <session> <description>Comment</description> <display-name>EmployeeBean</display-name> <ejb-name>EmployeeBean</ejb-name> <home>employee.EmployeeHome</home> <remote>employee.Employee</remote> <ejb-class>employee.EmployeeBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans>Copyright © Oracle Corporation, 2005. All rights reserved.
35
OC4J Standalone/J2EE & Web Cache
EJBクライアント側
ローカルEJBの呼び出し(J2EE標準)
y
ローカルEJB呼び出し
–EJBのホームオブジェクトを取得するときJ2EE汎用的なネーミングコンテキストで
ある論理的なデータソースのJNDI名java:comp/env/ejb/…でルックアップ
EJB呼び出しの例
Context context = new InitialContext();
Object localHomeObject = context.lookup("java:comp/env/ejb/EmployeeLocalMappedBean"); EmployeeLocalHome home = (EmployeeLocalHome)localHomeObject;
OC4J Standalone/J2EE & Web Cache
EJBクライアント側
ローカルEJBの呼び出し(J2EE標準)
y
EJBの論理的なJNDI名定義
–Webモジュール:web.xml
–EJBモジュール:ejb-jar.xml
web.xml
の例
<web-app> <ejb-local-ref> <ejb-ref-name>ejb/EmployeeMappledBean</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <local-home>employee.EmployeeLocalHome</local-home > <local>employee.EmployeeLocal</local> <!-- <ejb-link>test.jar# EmployeeMappledBean</ejb-link> --> </ejb-local-ref> <web-app> <enterprise-beans> <session> <!-- <entity> --> < ejb-local-ref > <ejb-ref-name>ejb/EmployeeMappledBean</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <local-home>employee.EmployeeLocalHome</local-home> <local> employee.EmployeeLocal</local> <!-- <ejb-link>test.jar# EmployeeMappledBean</ejb-link> --> </ejb-local-ref> </session> <!-- </entity> -->ejb-jar.xml
の例
Copyright © Oracle Corporation, 2005. All rights reserved.
37
OC4J Standalone/J2EE & Web Cache
EJB側
ローカルEJBの呼び出し(OC4J固有)
y
EJBの論理なJNDI名と実際のJNDI名のマッピング
y
Webモジュール: orion-web.xml
–EJBモジュール: orion-ejb-jar.xml
orion-web.xml
の例
<orion-web-app> ... <ejb-ref-mapping name="ejb/EmployeeMappledBean" location="employee/EmployeeBean" /> ... </orion-web-app>orion-ejb-jar.xml
の例
<orion-ejb-jar> ... <ejb-ref-mapping name="ejb/EmployeeMappledBean" location="employee/EmployeeBean" /> ... </orion-ejb-jar>OC4J Standalone/J2EE & Web Cache
EJB側
ローカルEJBの呼び出し(OC4J固有)
y
実際のJNDI名の定義
–orion-ejb-jar.xml
–ejb-jar.xmlのejb-name属性と実際のJNDI名のマッピング
orion-ejb-jar.xmlの例
<orion-ejb-jar> ... <enterprise-beans> <session-deployment name="EmployeeBean" location="employee/EmployeeBean" /> </enterprise-beans> ... </orion-ejb-jar>Copyright © Oracle Corporation, 2005. All rights reserved.
39
OC4J Standalone/J2EE & Web Cache
EJB側
ローカルEJBの呼び出し(J2EE標準)
y
Enterprise Beanの基本的な定義
–ejb-jar.xml
–ejb-name要素により、Enterprise Beanを一意に識別
ejb-jar.xmlの例
<enterprise-beans> <session> <description>Comment</description> <display-name>EmployeeBean</display-name> <ejb-name>EmployeeBean</ejb-name> <local-home>employee.EmployeeLocalHome</local-home> <local>employee.EmployeeLocal</local> <ejb-class>employee.EmployeeBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans>Copyright © Oracle Corporation, 2005. All rights reserved.
41
OC4J Standalone/J2EE & Web Cache
他社APサーバ固有API
y
例えば:WebLogic固有のAPIを利用していた場合、移行時に
コードの修正が必要
–起動・停止クラス
y weblogic.common.T3StartupDef
y weblogic.common.T3ShutdownDef
–ログクラス
y weblogic.loggin.NonCatalogLogger
–セキュリティクラス
y weblogic.sercurity
–XML関連
y weblogic.apache.*
–システム情報取得
y weblogic.management.configuration.*
–HTML関連
y weblogic.html.*
–DB関連
y weblogic.db.*
y
WebLogicでの起動・停止クラス
–WebLogicでは以下のインタフェースを実装したクラスを作成し、起動・停止クラス
を開発
y weblogic.common.T3StartupDef
y weblogic.common.T3ShutdownDef
import weblogic.common.T3ServicesDef; import weblogic.common.T3StartupDef;public class AppStartup
implements T3StartupDef, CommonDefineIf { // 起動時の処理を処理を記述
・・・ }
WebLogic固有APIでの起動クラスコード例
OC4J Standalone/J2EE & Web Cache
Copyright © Oracle Corporation, 2005. All rights reserved.
43
OC4J Standalone/J2EE & Web Cache
例1:OC4J固有APIへの移行
y
前述のOC4J(10.1.2)の起動・停止クラスを利用し移行可能
–OC4Jでは以下のインタフェースを実装したクラスを作成し、起動・停止クラスを
開発
y weblogic.common.T3StartupDefインタフェースを実装したクラスを
→ com.evermind.server.OC4JStart
インタフェースを実装したクラスに移行
y weblogic.common.T3ShutdownDefインタフェースを実装したクラスを
→ com.evermind.server.OC4JShutdown
インタフェースを実装したクラスに移行
OC4J Standalone/J2EE & Web Cache
例2:J2EE汎用APIの移行
y
Oracle Application Server10g(10.1.2)で、J2EE汎用的なServletContextListenerを利用
を利用した場合
Oracle Application Server10gコード例
import javax.servlet.ServletContextListener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContext;
public class SampleListner implements ServletContextListener { private ServletContext context = null;
public void contextInitialized(ServletContextEvent event) { context = event.getServletContext();
System.out.println("Webアプリケーション起動時に呼び出し"); }
public void contextDestroyed(ServletContextEvent event) { context = event.getServletContext();
System.out.println("Webアプリケーション停止時に呼び出し"); }
Copyright © Oracle Corporation, 2005. All rights reserved.
45
OC4J Standalone/J2EE & Web Cache
例2:J2EE汎用APIの移行
y
ServletContextListenerのweb.xmlへの登録
–登録したWebアプリケーション起動・停止時にServletContextListenerが呼び出さ
れ、結果的に起動・停止クラスと同等の振る舞いになる
web.xmlの記述例
<web-app> ... <listener> <listener-class>sample.SampleListner</listener-class> </listener> ... </web-app>OC4J Standalone/J2EE & Web Cache
例2:J2EE汎用APIの移行
y
OC4J起動時にWebアプリケーション起動
–ORACLE_HOME/j2ee/home/config/http-web-site.xml
–load-on-startup属性
http-web-site.xmlの記述例
<web-app application=“sampapp" name=“sampapp-war“
日本オラクル株式会社 無断転載を禁ず この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることが あります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書 の内容に関連したいかなる損害についても責任を負いかねます。 Oracleは米国Oracle Corporationの登録商標です。文中に参照されている各製品名及びサービス 名は米国Oracle Corporationの商標または登録商標です。その他の製品名及びサービス名はそれ ぞれの所有者の商標または登録商標の可能性があります。