[英]"ModuleLoadException: Error loading module" when implementing SPI for keycloak
Here is a repo to reproduce the error: https://github.com/hansen-simon/keycloak-mailattachment这是一个重现错误的仓库:https://github.com/hansen-simon/keycloak-mailattachment
I try to implement an EmailSenderProvider in keycloak.我尝试在 keycloak 中实现一个 EmailSenderProvider。 I followed this documentation: https://wjw465150.gitbooks.io/keycloak-documentation/content/server_development/topics/providers.html
我遵循了这个文档: https://wjw465150.gitbooks.io/keycloak-documentation/content/server_development/topics/providers.html
After I built the jar file, I copy it in the Dockerfile into /opt/jboss/keycloak/modules/org/keycloak/email/provider/main/
directory next to the module.xml
.在我构建 jar 文件后,我将其复制到 Dockerfile 到模块旁边的
/opt/jboss/keycloak/modules/org/keycloak/email/provider/main/
module.xml
中。 The docker image builds successfully, but when I run it I get the following error: docker 映像构建成功,但是当我运行它时,出现以下错误:
12:39:35,357 FATAL [org.keycloak.services] (ServerService Thread Pool -- 62) Error during startup: java.lang.RuntimeException: org.jboss.modules.ModuleLoadException: Error loading module from /opt/jboss/keycloak/modules/org/keycloak/email/provider/main/module.xml
at org.keycloak.keycloak-wildfly-extensions@15.0.2//org.keycloak.provider.wildfly.ModuleProviderLoaderFactory.create(ModuleProviderLoaderFactory.java:45)
...
at org.jboss.threads@2.4.0.Final//org.jboss.threads.JBossThread.run(JBossThread.java:513)
Caused by: org.jboss.modules.ModuleLoadException: Error loading module from /opt/jboss/keycloak/modules/org/keycloak/email/provider/main/module.xml
at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:337)
...
... 42 more
Caused by: org.jboss.modules.xml.XmlPullParserException: Invalid/mismatched module name (expected org.keycloak.email) (position: START_TAG seen ...?>\n<module xmlns="urn:jboss:module:1.1" name="org.keycloak.email">... @2:64)
at org.jboss.modules.xml.ModuleXmlParser.invalidModuleName(ModuleXmlParser.java:374)
...
The module.xml
: module.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.keycloak.email">
<resources>
<resource-root path="email-0.0.1-SNAPSHOT.jar" />
</resources>
<dependencies>
<module name="javax.activation.api" />
<module name="javax.mail.api" />
<module name="org.jboss.logging" />
<module name="org.keycloak.keycloak-common" />
<module name="org.keycloak.keycloak-core" />
<module name="org.keycloak.keycloak-server-spi" />
<module name="org.keycloak.keycloak-server-spi-private" />
<module name="org.keycloak.keycloak-services" />
</dependencies>
</module>
The Dockerfile: Dockerfile:
FROM quay.io/keycloak/keycloak:15.0.2
COPY mailattachment/target/*.jar /opt/jboss/keycloak/modules/org/keycloak/email/provider/main/
COPY mailattachment/module.xml /opt/jboss/keycloak/modules/org/keycloak/email/provider/main/
COPY mailattachment/startup-scripts/* /opt/jboss/startup-scripts/
EXPOSE 8080
ENTRYPOINT [ "/opt/jboss/tools/docker-entrypoint.sh" ]
CMD ["-b", "0.0.0.0"]
the script inside startup-scripts dir:启动脚本目录中的脚本:
embed-server --server-config=standalone-ha.xml --std-out=echo
batch
/subsystem=keycloak-server/:list-add(name=providers,value="module:org.keycloak.email.provider")
/subsystem=keycloak-server/spi=emailSender:add
/subsystem=keycloak-server/spi=emailSender/provider=default:add(enabled=true)
/subsystem=keycloak-server/spi=emailSender:write-attribute(name=default-provider, value=email)
run-batch
stop-embedded-server
I'm suprised by the error log line Invalid/mismatched module name (expected org.keycloak.email)... name="org.keycloak.email">
.我对错误日志行
Invalid/mismatched module name (expected org.keycloak.email)... name="org.keycloak.email">
感到惊讶。 It looks to like the correct module name is given.它看起来像是给出了正确的模块名称。 What is wrong with this setup?
这个设置有什么问题?
I was able to solve the problem by not mounting the.jar file to /opt/jboss/keycloak/modules
but to /opt/jboss/keycloak/standalone/deployments
and remove the module.xml
file.我能够通过不将 .jar 文件挂载到
/opt/jboss/keycloak/modules
而是挂载到/opt/jboss/keycloak/standalone/deployments
并删除module.xml
文件来解决问题。 I updated the repo with a working example.我用一个工作示例更新了repo 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.