GlassFish Serverインスタンス起動中のXADataSourceの使用
以下の条件を満たした場合、GlassFish Serverインスタンスの起動に失敗します。
GlassFish Serverクラスターのトランザクションサービスの定義項目「再起動時(automatic-recovery)」がtrueに設定されている場合、かつ
GlassFish Serverクラスターを起動した場合、かつ
2でGlassFish Serverクラスターに配備しているアプリケーションの初期化処理(注)でJTAのトランザクションを開始している場合、かつ
3のアプリケーションの初期化処理で、リソースタイプにjavax.sql.XADataSourceを指定したJDBC接続プールに関連付けされたJDBCリソースに対して、getConnectionメソッドを呼び出した場合
本現象を回避するためには、以下の対処を行ってください。
トランザクションサービスの定義項目「再起動時(automatic-recovery)」をfalseに設定する、または
アプリケーションの初期化処理でJTAのトランザクションを開始しないように処理を修正する、または
アプリケーションの初期化処理で使用するJDBCリソースに関連付けされたJDBC接続プールのリソースタイプをjavax.sql.XADataSource以外に設定する、または
アプリケーションの初期化処理ではなく、ライフサイクルモジュールのREADY_EVENTで同様の処理を行うように修正する
アプリケーションの初期化処理には以下が含まれます。
@jakarta.ejb.Startupを付与したSingleton Session Beanの@jakarta.annotation.PostConstructが付与されたメソッド
load-on-startupが0以外に設定されたサーブレットのinitメソッド
jakarta.servlet.ServletContextListenerのcontextInitializedメソッド
@jakarta.enterprise.context.ApplicationScopedを付与したCDI管理Beanのメソッドのうち、引数に@jakarta.enterprise.event.Observes @jakarta.enterprise.context.Initialized(ApplicationScoped.class)を付与したメソッド