| Oracle Containers for J2EE Enterprise JavaBeans開発者ガイド 10g(10.1.3.1.0) B31852-03 |
|
この章の内容は次のとおりです。
詳細は、「EJB管理について」を参照してください。
OC4Jは、MBeansをデプロイして、すべてのタイプのEJBのJSR77統計およびOracle Dynamic Monitoring System(DMS)センサー・データを収集します。
これらの統計およびセンサーには、Application Server Control(「Oracle Enterprise Manager 10g Application Server Controlの使用方法」を参照)などの任意のJMX準拠の管理ツールを使用してアクセスできます。
Application Server Controlは、OC4J内でのアプリケーションのデプロイ、構成および監視、またアプリケーションで使用されるOC4Jサーバー・インスタンスとWebサービスの管理を行うためのJMX準拠のWebベース・ユーザー・インタフェースです。
Application Server Control JMX管理タスクを使用すると、Oracle Application Serverの再起動やアプリケーションの再デプロイを行わなくても、次のようにOC4JにデプロイされるすべてのEJBタイプのプロパティを変更できます。
たとえば、スタンドアロンOC4Jの場合は、「J2EEServer」→「スタンドアロン」→「J2EEApplication」→「application-name」→「EJBModule」→「module-name」を選択します。
ほとんどの管理タスクにApplication Server Controlを使用できます。
詳細は、次を参照してください。
OC4Jは、標準JDKであるjava.util.loggingパッケージを使用し、デフォルトでログ・メッセージを<OC4J_HOME>/j2ee/home/log/<group>/oc4j/log.xmlファイルに書き込みます。
この項の内容は次のとおりです。
次のjava.util.logging名前空間に対してロガーを構成できます。
oracle.j2ee.ejb.annotation
oracle.j2ee.ejb.compilation
oracle.j2ee.ejb.database
oracle.j2ee.ejb.deployment
oracle.j2ee.ejb.lifecycle
oracle.j2ee.ejb.pooling
oracle.j2ee.ejb.runtime
oracle.j2ee.ejb.transaction
FINER、FINE、CONFIG、INFO、WARNINGおよびSEVEREのログ・レベルを構成できます。
OC4Jロギングを構成する最も単純な方法は、Application Server Controlを使用することです(「Oracle Enterprise Manager 10g Application Server Controlの使用方法」を参照)。
Application Server ControlではすべてのEJB関連ロガー名が表示され、Application Server Controlインタフェースを使用してログ・レベルなどの属性を指定できます。
例31-1に示すように、<OC4J_HOME>/j2ee/home/config/j2ee-logging.xmlファイルを使用してOC4Jロギングを構成できます。
<logger name='oracle.j2ee.ejb' level='NOTIFICATION:1' useParentHandlers='false'> <handler name='oc4j-handler'/> <handler name='console-handler'/> </logger>
詳細は、次を参照してください。
oracle.j2ee.loggingシステム・プロパティを使用して、OC4Jロギングを構成できます。このシステム・プロパティの形式は次のとおりです。
oracle.j2ee.logging.<log-level>=<log-namespace>
この場合:
<log-level>は、fine、finer、finestのいずれかです。
<log-namespace>は、oracle.j2ee.ejb名前空間です(「ロギング名前空間」を参照)。
例31-2に、oracle.j2ee.ejb.deployment名前空間のロガーをfinestに構成する方法を示します。
oracle.j2ee.logging.finest=oracle.j2ee.ejb.deployment
EJB 3.0 JPAアプリケーションでは、ベンダー拡張を使用してTopLink JPA永続性プロバイダによるロギング方法をカスタマイズできます。
詳細は、「ロギング用のTopLink JPA拡張」を参照してください。
Oracle JMSコネクタを使用してJMSメッセージ・サービスにアクセスするアプリケーションでは、アクティブ化構成プロパティLogLevelを使用してOracle JMSコネクタによるロギング方法をカスタマイズできます。
詳細は、「J2CAを使用してメッセージ・サービス・プロバイダにアクセスするためのEJB 3.0 MDBの構成」を参照してください。
OC4Jには、Beanインスタンスの作成頻度を削減してパフォーマンスを向上させるために構成できるEJBプーリング属性が用意されています。
この項の内容は次のとおりです。
セッションBean、エンティティおよびメッセージドリブンBeanのBeanインスタンス・プールの最小数および最大数を設定できます。
次の方法でBeanプール・サイズを構成できます。
デプロイXMLの構成は、アノテーションを使用して設定された対応する構成をオーバーライドします。
EJB 3.0セッションBeanおよびメッセージドリブンBeanのBeanインスタンス・プール・サイズは、次のOC4J固有のアノテーションとその属性を使用して指定できます。
@StatelessDeploymentの属性:
これらの属性の詳細は、表A-1を参照してください。
@StatefulDeploymentの属性:
これらの属性の詳細は、表A-1を参照してください。
@MessageDrivenDeploymentの属性:
これらの属性の詳細は、表A-3を参照してください。
例31-3に、@StatelessDeploymentアノテーションを使用してEJB 3.0ステートレス・セッションBeanでこれらの属性を構成する方法を示します。
import javax.ejb.Stateless;
import oracle.j2ee.ejb.StatelessDeployment;
@Stateless
@StatelessDeployment(
maxInstances=10,
minInstances=3
)
public class HelloWorldBean implements HelloWorld {
public void sayHello(String name) {
System.out.println("Hello "+name +" from first EJB3.0");
}
}
EJB 3.0セッションBeanおよびメッセージドリブンBeanのBeanインスタンス・プール・サイズは、次のorion-ejb-jar.xmlファイルの要素とその属性を使用して指定できます。
<session-deployment>の属性:
これらの属性の詳細は、表A-1を参照してください。
<session-deployment>の属性:
これらの属性の詳細は、表A-1を参照してください。
<message-driven-deployment>の属性:
これらの属性の詳細は、表A-3を参照してください。
例31-4に、orion-ejb-jar.xmlファイルを使用してEJB 3.0ステートレス・セッションBeanでこれらの属性を構成する方法を示します。
<?xml version="1.0" encoding="utf-8"?>
<orion-ejb-jar
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/orion-ejb-jar-10_0.xsd"
deployment-version="10.1.3.1.0"
deployment-time="10b1fb5cdd0"
schema-major-version="10"
schema-minor-version="0"
>
<enterprise-beans>
<session-deployment
max-instances="10"
min-instances="3"
...
>
</session-deployment>
...
</enterprise-beans>
...
</orion-ejb-jar>
この方法を使用してこのプロパティを変更する場合は、OC4Jを再起動して変更を適用する必要があります。または、Application Server Controlコンソールを使用して、OC4Jを再起動せずにこのパラメータを動的に変更できます(「Oracle Enterprise Manager 10g Application Server Controlの使用方法」を参照)。
セッションBeanがBeanインスタンス・プールにキャッシングされる最大時間を設定できます。
次の方法でセッションBeanのプール・タイムアウトを構成できます。
デプロイXMLの構成は、アノテーションを使用して設定された対応する構成をオーバーライドします。
例31-5に、@StatelessDeploymentアノテーションのpoolCacheTimeout属性を使用してEJB 3.0ステートレス・セッションBeanのBeanインスタンス・プール・タイムアウトを構成する方法を示します。
この@StatelessDeploymentの属性の詳細は、表A-1を参照してください。@StatelessDeploymentアノテーションの詳細は、「EJB 3.0セッションBeanのOC4J固有のデプロイ・オプションの構成」を参照してください。
import javax.ejb.Stateless;
import oracle.j2ee.ejb.StatelessDeployment;
@Stateless
@StatelessDeployment(
poolCacheTimeout=90
)
public class HelloWorldBean implements HelloWorld {
public void sayHello(String name) {
System.out.println("Hello "+name +" from first EJB3.0");
}
}
例31-6に、@StatefulDeploymentアノテーションのtimeout属性を使用してEJB 3.0ステートフル・セッションBeanのBeanインスタンス・プール・タイムアウトを構成する方法を示します。
この@StatelessDeploymentの属性の詳細は、表A-1を参照してください。@StatelessDeploymentアノテーションの詳細は、「EJB 3.0セッションBeanのOC4J固有のデプロイ・オプションの構成」を参照してください。
import javax.ejb.Stateful
import oracle.j2ee.ejb.StatefulDeployment;
@Stateful
@StatefulDeployment(
timeout=100
)
public class CartBean implements Cart {
private ArrayList items;
...
}
orion-ejb-jar.xmlファイルで、セッションBeanの<session-deployment>要素の次の属性を使用してBeanプール・タイムアウトを設定します。
pool-cache-timeout属性はステートレス・セッションBeanに適用でき、キャッシュされたステートレス・セッションをプール内に保持する時間を設定します。デフォルトはたとえば、pool-cache-timeoutを90秒に設定する場合は、次のようにします。
<session-deployment ... pool-cache-timeout="90" ... </session-deployment>
timeout属性は、ステートフル・セッションBeanに適用されます。ステートフル・セッションBeanが非アクティブなままこの時間が経過すると、そのBeanはBeanインスタンス・プールから削除されます。デフォルトは1800秒です。たとえば、ステートフル・セッションBeanの非アクティブ・タイムアウトを900秒に設定する場合は、次のようにします。
<session-deployment ... timeout="900" ... </session-deployment>
この方法を使用してこのプロパティを変更する場合は、OC4Jを再起動して変更を適用する必要があります。または、Application Server Controlコンソールを使用して、OC4Jを再起動せずにこのパラメータを動的に変更できます(「Oracle Enterprise Manager 10g Application Server Controlの使用方法」を参照)。
エンティティがBeanインスタンス・プールにキャッシングされる最大時間を設定できます。
次の方法でエンティティのプール・タイムアウトを構成できます。
orion-ejb-jar.xmlファイルで、エンティティの<entity-deployment>要素の次の属性を使用してBeanプール・タイムアウトを設定します。
pool-cache-timeout属性では、エンティティBean実装インスタンスが「プーリング」された(未割当て)状態に保持される時間の長さを設定します。デフォルトは60秒です。この属性をneverに設定すると、タイムアウトは発生しません。たとえば、エンティティのpool-cache-timeoutを90秒に設定する場合は、次のようにします。
<entity-deployment ... pool-cache-timeout="90" ... </entity-deployment>
この方法を使用してこのプロパティを変更する場合は、OC4Jを再起動して変更を適用する必要があります。または、Application Server Controlコンソールを使用して、OC4Jを再起動せずにこのパラメータを動的に変更できます(「Oracle Enterprise Manager 10g Application Server Controlの使用方法」を参照)。
Application Server Controlを使用して、EJBアプリケーションを起動および停止できます。
アプリケーションの停止中、クライアントはそのアプリケーションにアクセスできません。
詳細は、「Oracle Enterprise Manager 10g Application Server Controlの使用方法」を参照してください。
この項の内容は次のとおりです。
XMLファイルを検証するようにOC4Jを構成するには、OC4J起動スクリプト
(<OC4J_HOME>/BIN/oc4j.cmdまたはoc4j)で使用されるコマンドラインに-validateXMLオプションを追加します。
例31-7に、oc4j.cmdファイルでのこのオプションの設定方法を示します。
...
"%JAVA_HOME%¥bin¥java" %JVMARGS% -jar %OC4J_JAR% %CMDARGS% -validateXML
...
このオプションを設定すると、OC4JがXMLファイルを読み取る際に、OC4JはXMLファイルを指定のスキーマに照らして厳密に検証します。OC4Jはエラーをログに記録します(「EJBロギングの構成」を参照)。
1つ以上のアノテーションのあるEJB 3.0アプリケーションのデプロイ時に、OC4Jはそのメモリー内のejb-jar.xmlファイルをデプロイ・ディレクトリ内のorion-ejb-jar.xmlファイルと同じ場所(<ORACLE_HOME>/j2ee/home/application-deployments/)に自動的に書き込みます。
my_application/META-INF
このejb-jar.xmlファイルは、アノテーションとデプロイ済ejb-jar.xmlファイル(存在する場合)の両方から取得された構成を表します。
EJB 2.1アプリケーションをデプロイする場合、生成されたラッパー・コードを保持するには、システム・プロパティKeepWrapperCodeを設定する必要があります(「生成されたラッパー・コードのデバッグ」を参照)。
「XMLファイルの検証」も参照してください。
デフォルトでは、OC4Jは、EJB 2.1 CMPアプリケーションをデプロイする際に、<OC4J_HOME>/j2ee/home/application-deployments/<ear-name>/<ejb-name>/にラッパー・コードを生成し、そのコードをコンパイルし、コンパイルされたクラスを含むJARファイルを作成してから、生成したラッパー・コードを削除します。
generated
生成したラッパー・コードを保持するようにOC4Jを構成できます。ラッパー・コードの検証は、アプリケーションの問題のデバッグに役立ちます。
この項の内容は次のとおりです。
生成コードを保持するようOC4Jを構成するには、OC4Jの起動コマンドラインでシステム・プロパティKeepWrapperCodeをtrueに設定します。例31-8に、<OC4J_HOME>/bin/ファイルの場合を示します。
oc4j.cmd
...
"%JAVA_HOME%¥bin¥java" %JVMARGS% -DKeepWrapperCode=true -jar "%OC4J_JAR%" %CMDARGS%
...
KeepWrapperCodeがtrueの場合、OC4Jは、生成したラッパー・コードをデフォルト・ディレクトリ<OC4J_HOME>/j2ee/home/application-deployments/<ear-name>/に保持します。または、OC4Jがラッパー・コードの保持に使用するディレクトリを指定することもできます(「生成されたラッパー・コードの指定ディレクトリへの保持」を参照)。
<ejb-name>/generated
アプリケーションをアンデプロイすると、このディレクトリ内のラッパー・コードがOC4Jによって削除されます。
システム・プロパティKeepWrapperCodeをtrueに設定し、システム・プロパティWrapperCodeDirをディレクトリ(<specified-wrapper-dir>と呼ぶ)に設定した場合、OC4Jでは、このディレクトリにラッパー・コードが生成され、アプリケーションをアンデプロイしてもラッパー・コードが保持されます。例31-9に、<OC4J_HOME>/bin/oc4j.cmdファイルの場合を示します。
...
"%JAVA_HOME%¥bin¥java" %JVMARGS% -DKeepWrapperCode=true -DWrapperCodeDir=C:¥wrappers -jar "%OC4J_JAR%" %CMDARGS%
...
<specified-wrapper-dir>は、絶対パス(C:¥wrappersなど)または相対パス(./wrappersなど)に設定できます。相対パスは、<OC4J_HOME>/j2ee/homeからの相対です。
(権限の問題や領域の不足などにより)指定したディレクトリにOC4Jが生成できない場合は、OC4Jによってデフォルト・ディレクトリ<OC4J_HOME>/j2ee/home/にラッパー・コードが生成され、アプリケーションをアンデプロイしてもこのラッパー・コードが保持されます。
application-deployments/<ear-name>/<ejb-name>/generated
システム・プロパティKeepWrapperCodeをtrueに設定し、システム・プロパティDoNotReGenerateWrapperCodeをtrueに設定した場合、OC4Jでは、ラッパー・コードが生成され、アプリケーションをアンデプロイしてもラッパー・コードが保持されます。例31-10に、<OC4J_HOME>/bin/oc4j.cmdファイルの場合を示します。この場合、再デプロイ時には、OC4Jはラッパー・コードを再生成せずに、かわりにデフォルト・ディレクトリ
(「生成されたラッパー・コードのデフォルト・ディレクトリへの保持」を参照)または指定したディレクトリ(「生成されたラッパー・コードの指定ディレクトリへの保持」を参照)に保持されたバージョンのラッパー・コードを使用します。
...
"%JAVA_HOME%¥bin¥java" %JVMARGS% -DKeepWrapperCode=true -DDoNotReGenerateWrapperCode=true -jar "%OC4J_JAR%" %CMDARGS%
...
これらのシステム・プロパティを使用すると、デバッグ文を追加するなど、ラッパー・コードを変更できます。再デプロイ時に、OC4Jは、ユーザーに変更された保持バージョンのラッパー・コードを再コンパイルして使用します。
生成されたラッパー・コードの保持を無効化するには、システム・プロパティKeepWrapperCodeをfalseに設定し、システム・プロパティDoNotReGenerateWrapperCodeをfalseに設定します。または、これらのシステム・プロパティを設定しないままとします。
|
![]() Copyright © 2002, 2008 Oracle Corporation. All Rights Reserved. |
|