ページの先頭行へ戻る
Interstage Application Server V13.0.0 GlassFish 設計・構築・運用ガイド
FUJITSU Software

1.3.3 データベース連携/JDBCの制限事項

GlassFish Serverインスタンス起動中のXADataSourceの使用

以下の条件を満たした場合、GlassFish Serverインスタンスの起動に失敗します。

  1. GlassFish Serverクラスターのトランザクションサービスの定義項目「再起動時(automatic-recovery)」がtrueに設定されている場合、かつ

  2. GlassFish Serverクラスターを起動した場合、かつ

  3. 2でGlassFish Serverクラスターに配備しているアプリケーションの初期化処理(注)でJTAのトランザクションを開始している場合、かつ

  4. 3のアプリケーションの初期化処理で、リソースタイプにjavax.sql.XADataSourceを指定したJDBC接続プールに関連付けされたJDBCリソースに対して、getConnectionメソッドを呼び出した場合


本現象を回避するためには、以下の対処を行ってください。

  1. トランザクションサービスの定義項目「再起動時(automatic-recovery)」をfalseに設定する、または

  2. アプリケーションの初期化処理でJTAのトランザクションを開始しないように処理を修正する、または

  3. アプリケーションの初期化処理で使用するJDBCリソースに関連付けされたJDBC接続プールのリソースタイプをjavax.sql.XADataSource以外に設定する、または

  4. アプリケーションの初期化処理ではなく、ライフサイクルモジュールのREADY_EVENTで同様の処理を行うように修正する


)

アプリケーションの初期化処理には以下が含まれます。

  • @javax.ejb.Startupを付与したSingleton Session Beanの@javax.annotation.PostConstructが付与されたメソッド

  • load-on-startupが0以外に設定されたサーブレットのinitメソッド

  • javax.servlet.ServletContextListenerのcontextInitializedメソッド

  • @javax.enterprise.context.ApplicationScopedを付与したCDI管理Beanのメソッドのうち、引数に@javax.enterprise.event.Observes @javax.enterprise.context.Initialized(ApplicationScoped.class)を付与したメソッド