KeyCloak 2.3在导出时获取NPE

时间:2016-12-01 13:09:03

标签: java jboss keycloak

我的KeyCloak使用h2 db(默认)并且其中包含一些数据 我想导出数据,以便我可以将KeyCloak迁移到mysql

KeyCloak我使用的是2.3版本 我在尝试导出数据时不断获得NPE。

我用于导出的命令是:

sudo ./standalone.sh -Dkeycloak.migration.action = export -Dkeycloak.migration.provider = singleFile -Dkeycloak.migration.file = / tmp / export.json

堆栈跟踪:

Caused by: java.lang.NullPointerException
at org.keycloak.exportimport.util.ExportUtils.exportRealm(ExportUtils.java:227)
at org.keycloak.exportimport.singlefile.SingleFileExportProvider$1.runExportImportTask(SingleFileExportProvider.java:65)
at org.keycloak.exportimport.util.ExportImportSessionTask.run(ExportImportSessionTask.java:35)
at org.keycloak.models.utils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:235)
at org.keycloak.exportimport.singlefile.SingleFileExportProvider.exportModel(SingleFileExportProvider.java:58)
at org.keycloak.exportimport.ExportImportManager.runExport(ExportImportManager.java:102)
at org.keycloak.services.resources.KeycloakApplication.<init>(KeycloakApplication.java:148)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:150)
... 19 more

2 个答案:

答案 0 :(得分:0)

通过阅读H2并创建用于生成表+数据的sql脚本来解决这个问题

答案 1 :(得分:0)

我不确定这是否是同一个问题但我在尝试进行默认导出时也遇到了Null指针错误。

我的问题是由于没有在身份验证流程中为执行设置别名。 https://issues.jboss.org/browse/KEYCLOAK-2494

基本上为了维护导出的Json文件的排序并保持它们的可版本化,keycloak需要设置一个别名,以便它始终可以进行一致的排序。

https://github.com/keycloak/keycloak/commit/c81d0c0898d7b44c0d053ce6666acdad4967bffc

我的修复方法是在配置中设置一个别名字段,以便通过管理控制台执行,令人烦恼的是,如果你已经完成了任何配置,那么它就不会让你更新别名。您必须在管理控制台中删除执行并重新创建它。