今回は検証用のテナント環境を構築する時に出会ったメッセージコード「E.IWP.CONTEXT.WEB.10001」のお話です。
見る限り、公式サイトにも載っていなかったので、少しでも調査のお役に立てれば幸いです。
検証環境
- Windows10
- intra-mart Accel Platform 2020 spring
- resin 4.0.64
- im-juggling 1.0.20200401 ※リポジトリアップデート済み
- PostgreSQL 9.3
参考サイト
エラーが起きるタイミング
テナント設定を一通り追えて、最終ステップで登録ボタンを押下後に起こります。
resinのログ(一部抜粋)
ERROR] j.c.i.s.c.w.i.ContextFilter - [E.IWP.CONTEXT.WEB.10001] Failed to start the context lifecycle.
java.lang.NullPointerException: null
at jp.co.intra_mart.mirage.ext.dialect.IntramartDialectAutoSelector.getDialect(IntramartDialectAutoSelector.java:25)
at jp.co.intra_mart.mirage.ext.dialect.IntramartDialectAutoSelector.getTenantDatabaseDialect(IntramartDialectAutoSelector.java:13)
at jp.co.intra_mart.mirage.ext.session.IntramartDatabaseManagerSession.getTenantDatabaseSqlManager(IntramartDatabaseManagerSession.java:174)
at jp.co.intra_mart.mirage.ext.dao.DAOFactory.getTenantDatabaseDAO(DAOFactory.java:96)
at jp.co.intra_mart.system.service.provider.updater.TenantSetupInformationDelegateImpl.getTenantImUpdateSchemaDAO(TenantSetupInformationDelegateImpl.java:586)
at jp.co.intra_mart.system.service.provider.updater.TenantSetupInformationDelegateImpl.existTable(TenantSetupInformationDelegateImpl.java:454)
at jp.co.intra_mart.system.service.provider.updater.TenantSetupInformationDelegateImpl.getUpdatedSchemaVersion(TenantSetupInformationDelegateImpl.java:598)
at jp.co.intra_mart.system.service.provider.updater.TenantSetupInformationDelegateImpl.getDeployedSchemaVersion(TenantSetupInformationDelegateImpl.java:488)
at jp.co.intra_mart.system.service.provider.updater.TenantSetupInformationDelegateImpl.completedSetup(TenantSetupInformationDelegateImpl.java:445)
at jp.co.intra_mart.system.service.provider.updater.TenantSetupInformationDelegateImpl.needSetup(TenantSetupInformationDelegateImpl.java:364)
at jp.co.intra_mart.system.service.provider.updater.TenantSetupInformation.needSetup(TenantSetupInformation.java:76)
at jp.co.intra_mart.system.authz.context.impl.StandardAuthzSubjectContextBuilder.needSetup(StandardAuthzSubjectContextBuilder.java:171)
at ~省略~
原因
他のタイミングでも出るのかも分かりませんが、私の場合は
- data-source-mapping-config.xmlをデフォルト状態で使用する。
- テナント情報画面でdefault以外を選択。
- テナント環境情報画面#リソース参照を誤って空欄で進めた。
が原因のようでした。
data-source-mapping-config.xml
<tenant-data-source>
<tenant-id>default</tenant-id>
<resource-ref-name>java:comp/env/jdbc/default</resource-ref-name>
</tenant-data-source>
解決策
1.検証目的などで、こだわりが無いのであればテナントIDは「default」を設定する。
2.data-source-mapping-config.xmlに対して任意のテナントID情報を追記する。
あとは、data-source-mapping-config.xmlに記載の無いテナントIDを使っても、リソース参照名を設定することで内部サーバーエラーは出ずにセットアップを完了させることが出来るようです。
おわりに
今回、とても単純な入力ミスだったのですが、その割に調査に時間が掛かってしまいました。
入力ミスで起きるExceptionはハンドリングして画面上にエラーメッセージを出しても良いかなと感じました。
今回も短いですが、以上です。