java - 使用 Java 14 的 WildFly 19.1 上的 ClassNotFoundException : java. security.acl.Group

标签 java wildfly jaas java-ee-8 java-14

我迁移了一个 Web application在 Java 11 上的 WildFly 17 到两者的最新版本:Java 14 上的 WildFly 19。最后我得到一个 ClassNotFoundException: java.security.acl.Group,可能是因为Web 应用程序使用 JAAS。

请注意,在 a tutorial of my own 之后构建了一个类似的 Web 应用程序工作正常,但它不使用 JAAS。这和包 java.security.acl 让我觉得 JAAS 是相关的。

我在网上搜索发现 issue WFCORE-4282 at WildFly's JIRA这似乎意味着虽然他们知道这个 java.security.acl.Group 类在一年多前就被弃用了,但 WildFly 19 仍然需要它并且 Java 14 确实删除了它,从而导致 ClassNotFoundException 对我来说。

我的解释正确吗? WildFly 19 + Java 14 + JAAS = ClassNotFoundException 是否必然或是否有人设法使其工作?或者我做错了什么?在我看来,JBoss 在 WildFly 上忽略了一个如此大的问题......

更新:我删除了 Java 14,安装了 Java 13,重新安装了 Eclipse 和 WildFly,并重新部署了应用程序,它工作正常,所以 WildFly 19 + Java 13 + JAAS = OK!

最佳答案

此问题已于 2021 年底得到解决(迟做总比不做好!)。因此,您现在可以将 JDK 17+ 与 WildFly 26+ 结合使用。但是请注意,您必须从以下位置进行重要的移动:

<subsystem xmlns="urn:jboss:domain:security:1.2">
...
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
...
</login-module>
</subsystem>

...到...

<subsystem xmlns="urn:wildfly:elytron:15.0">
...
<security-realms>
    <jdbc-realm>
    ...
    </jdbc-realm>
</security-realms>
</subsystem>

YMMV 取决于您的架构,但基本上您必须拥抱 Elytron。

关于java - 使用 Java 14 的 WildFly 19.1 上的 ClassNotFoundException : java. security.acl.Group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62056387/

相关文章:

java - GAE+Java : Hook textbox to input, div 输出

java - 如何使用嵌入式 jetty 添加 servlet 过滤器

java - 如何读取位于嵌套 JAR 内的图像资源的字节?

java - ActiveMQ授权

java - 为什么我应该使用 JAAS 来对抗手写安全性?

java - Android 线程间的数据流

Java PDF 操作,基于模式匹配替换文本,带有超链接

deployment - 在 Wildfly 中,在我的 WAR 中包含 JAR 文件与通过 jboss-deployment-structure.xml 链接到它有区别吗?

deployment - 是否可以在 Wildfly 中将数据源部署描述符与驱动程序模块一起使用?

java - 在 Spring 中读取 JAAS 身份验证提供程序的配置文件时出错