19.6 コンテナ拡張ライブラリおよびサーバ起動・停止フック機能利用時の制限事項
コンテナ拡張ライブラリおよびサーバ起動・停止フック機能を利用する場合の制限事項を示します。
-
アプリケーションのポータビリティについて
コンテナ拡張ライブラリはJ2EEの仕様外の機能です。したがって,コンテナ拡張ライブラリを使用した場合は,アプリケーションとしての移行性は低下します。
-
コンテナ拡張ライブラリの呼び出しについて
コンテナ拡張ライブラリは,サーブレット,JSP,およびEnterprise Beanから呼び出されることを前提としています。次に示す利用形態は適用できないので,注意してください。
-
コンテナ拡張ライブラリおよびサーバ起動・停止フック機能から,EJB-JARファイル,WARファイルを参照する(EJB-JARファイル,WARファイルのクラスが,コンテナ拡張ライブラリのクラスを継承することも含む)。
-
コンテナ拡張ライブラリおよびサーバ起動・停止フック機能から,J2EEコンテナの機能を利用する(Enterprise Bean,JNDI,JDBCなどのAPIを呼び出す)。
-
EJB-JARファイルおよびWARファイルのクラスから,直接サーバ起動・停止フック機能を参照する(コンテナ拡張ライブラリのクラスが,EJB-JARファイル,WARファイルのクラスを継承することも含む)。
-
-
ファイル,ディレクトリのアクセスについて
コンテナ拡張ライブラリおよびサーバ起動・停止フック機能から,次に示すファイルやディレクトリを操作しないでください。
-
Application Serverのインストールディレクトリ以下のファイルやディレクトリ
-
J2EEサーバの作業ディレクトリ以下のファイルやディレクトリ
-
-
JNI機能の利用について
コンテナ拡張ライブラリおよびサーバ起動・停止フック機能からJNI機能を利用する場合,J2EEサーバでは,ネイティブメソッドでの処理を管理できません。例えば,ネイティブメソッドでメモリアクセス違反があった場合,J2EEサーバは,JavaVMのプロセスごと異常終了します。
-
TPBrokerの利用について
-
コンテナ拡張ライブラリおよびサーバ起動・停止フック機能では,TPBrokerのサーバ機能を利用できません。これは,J2EEサーバ上にTPBrokerのCORBAオブジェクトを活性化できないためです。
-
TPBrokerのDII機能は利用できません。
-
-
インストール型オプションパッケージの使用について
コンテナ拡張ライブラリおよびサーバ起動・停止フック機能は,インストール型オプションパッケージとして使用してはいけません。インストール型オプションパッケージとは,次のディレクトリに置かれたファイルです。
-
<Application Serverのインストールディレクトリ>\jdk\jre\lib\extに置かれたJARファイル
-
<Application Serverのインストールディレクトリ>\jdk\jre\binに置かれたネイティブコードバイナリ
-
-
シャットダウンフックの登録について
コンテナ拡張ライブラリおよびサーバ起動・停止フック機能では,シャットダウンフックを登録しないでください。
-
コンテナ拡張ライブラリとして使用できないライブラリについて
アプリケーションサーバが提供するライブラリのうち,ユーザアプリケーションとの競合に注意が必要なライブラリを次に示します。
- ユーザが用意したライブラリの使用可否とそのユーザアプリケーションからの参照可否
-
表19-6の「ユーザが用意したライブラリの使用可否とそのユーザアプリケーションからの参照可否」列が「不可」のライブラリをコンテナ拡張ライブラリとしてクラスパスに追加することはできません。これらのライブラリをユーザ側で追加したとしても,アプリケーションサーバが提供するクラスが優先されるため,ライブラリのバージョンの違いなどによってアプリケーションが意図しない動作となるおそれがあります。
「ユーザが用意したライブラリの使用可否とそのユーザアプリケーションからの参照可否」列が「条件付き可」のライブラリは,アプリケーションサーバが提供するライブラリをクラスパスに追加しない場合には,ユーザが用意した任意のライブラリを使用できます。また,ユーザが用意したライブラリをコンテナ拡張ライブラリとしてクラスパスに追加することで,ユーザアプリケーションから参照できます。
- アプリケーションサーバで提供するライブラリのユーザアプリケーションからの参照可否
-
表19-6の「アプリケーションサーバで提供するライブラリのユーザアプリケーションからの参照可否」列が「不可」のライブラリは,アプリケーションサーバが提供するライブラリをユーザアプリケーションから直接参照できません。
アプリケーションサーバが提供するJBoss Loggingはユーザアプリケーションからの直接参照をサポートします。提供するJBoss Loggingのバージョンは3.3.2.Finalです。
表19‒6 コンテナ拡張ライブラリの使用・参照可否 ライブラリ名
パッケージ名
ユーザが用意したライブラリの使用可否とそのユーザアプリケーションからの参照可否
アプリケーションサーバで提供するライブラリのユーザアプリケーションからの参照可否
JBoss Logging
org.jboss.logging
不可
可
EclipseLink JPA
org.eclipse.persistence
条件付き可※1
不可
Jersey
com.sun.research.ws
条件付き可※2
不可
jersey.repackaged
org.glassfish.jersey
HK2
org.glassfish.hk2
org.jvnet.tiger_types
org.jvnet.hk2
Javassist
javassist
Jackson
com.fasterxml.jackson
条件付き可※3
不可
GlassFish
org.glassfish.cdi.transaction
不可
不可
Google Guava
com.google.common
Hibernate Validator
org.hibernate.validator
Java ClassMate
com.fasterxml.classmate
Java Batch Reference Implementation (jbatch)
com.ibm.jbatch
JBoss classfilewriter
org.jboss.classfilewriter
JSR 236 (Concurrency Utilities for Java EE) RI
org.glassfish.enterprise.concurrent
JSR 367 (JSON Binding) RI
org.eclipse.yasson
JSR 374 (JSON Processing) RI
org.glassfish.json
Mojarra
com.sun.faces
Unified Expression Language RI
com.sun.el
Weld
org.jboss.weld
Tyrus
org.glassfish.tyrus
-
ハンドラ関数の設定について(Windowsの場合)
Windowsでコンテナ拡張ライブラリを使用してプロセスのハンドラ関数を設定する場合,CTRL+BREAK信号を処理するハンドラ関数では,TRUEを返したり,DLLの終了処理をしたり,ExitProcess関数などを呼び出してプロセスを終了したりしないでください。
J2EEサーバ,Component Containerを利用するほかのプログラムなどが動作しなくなるおそれがあります。
-
C++ライブラリについて(Linuxの場合)
Linuxでコンテナ拡張ライブラリをC++で実装している場合,そのライブラリは,Red Hat Enterprise Linux 4以降でビルドしておく必要があります。Red Hat Enterprise Linux 3でビルドしたC++のライブラリは実行できません。