問題
- エラー「java.lang.RuntimeException: java.lang.NullPointerException」で SAML 構成で IDP を作成できません
2021-01-08 18:31:29.437 DEBUG [default task-193][SamlAdminPortlet:74] java.lang.NullPointerException
java.lang.RuntimeException: java.lang.NullPointerException
at com.liferay.portlet.expando.model.impl.ExpandoBridgeImpl.getAttributeType(ExpandoBridgeImpl.java:334)
at com.liferay.portal.util.PortalImpl.getExpandoBridgeAttributes(PortalImpl.java:2214)
at com.liferay.portal.util.PortalImpl.getExpandoBridgeAttributes(PortalImpl.java:2238)
at com.liferay.portal.kernel.util.PortalUtil.getExpandoBridgeAttributes(PortalUtil.java:936)
at com.liferay.portal.kernel.service.ServiceContextFactory.getInstance(ServiceContextFactory.java:510)
Environment
- Liferay DXP 7.1
解決策
- このエラーの根本的な原因は、デフォルトの
keepAliveURL
関連レコードがexpandocolumn
テーブルにないことです。 参考までに: デフォルトのkeepAliveURL
レコードは、データベースでは次のようになります。
35101 20099 34002 keepAliveURL 15 keepAliveURL
35102 20099 34005 keepAliveURL 15 keepAliveURL
- この問題は、SAML lpkg を再デプロイすることで解決できます。 不足しているレコードは、SAML lpkg を再デプロイした後に追加されます。 ステップ:
1. サーバー
2 をシャットダウンします。 現在インストールされている SAML LPKG ファイルを LIFERAY_HOME/osgi/marketplace
3 から削除します。 osgi/state フォルダーを削除し、liferay_home/work フォルダーをクリーンアップします
4. サーバー
5 を起動します。 SAML LPKG
6 を再デプロイします。 のような情報がある場合、ファイルのインストールを完了するには、ポータル インスタンスを再起動する必要があります:/D:/Bundles/liferay-dxp-tomcat-7.1.10-ga1-20180703090613030/liferay-dxp-7.1.10-ga1/osgi /marketplace/Liferay%20Connector%20to%20SAML%202.0%20-%20API.lpkg
がログで確認できます。サーバーを再起動して、レコードを生成できるかどうかを確認します
- クラスター化された環境にいる場合は、SAML が各ノードに適切にデプロイされているかかを確認してください。 次に、次の手順を使用して、不足しているレコードを生成します:
- すべてのクラスタ ノードをシャットダウンする
- 両方のノードで、現在インストールされている SAML LPKG ファイルを LIFERAY_HOME/osgi/marketplace から削除します。
- osgi/state フォルダを削除し、両方のノードで liferay_home/work フォルダを消去します
- ノード 1 を開始し、SAML LPKG を再度デプロイします
-
のような情報がある場合、ファイルのインストールを完了するためにポータル インスタンスを再起動する必要があります:/D:/Bundles/liferay-dxp-tomcat-7.1.10-ga1-20180703090613030/liferay-dxp-7.1.10-ga1/osgi /marketplace/Liferay%20Connector%20to%20SAML%202.0%20-%20API.lpkg
がログで確認できます。ノード 1 を再起動します。 - ノード 1 が正しく開始されたら、データベースをチェックして、レコードが
expandocolumn
テーブルに存在するかどうかを確認します。 - ノード 1 を開いたままにして、残りのノードで上記の手順 4 ~ 5 を繰り返します。