【问题标题】:wildfly custom module: unable to use class inside deployed EARWildfly 自定义模块:无法在部署的 EAR 中使用类
【发布时间】:2022-01-17 09:58:55
【问题描述】:

我正在 Wildfly 中创建一个自定义领域,我的应用程序将使用该领域进行登录。如果我在全局模块的 jar 文件中使用该类,wildfly 可以找到它。但是,如果我尝试将其指向 EAR 文件中的一个类,wildfly 将无法找到该类。

  • 以下配置正在运行。 VersaCustomRealm 类位于 VRCustomRealm.jar 中

独立的.xml

<custom-realm name="vr-login-realm" module="micropact.login" class-name="com.versa.login.VersaCustomRealm">
    <configuration>
        <property name="admin" value="welcome"/>
    </configuration>
</custom-realm>

模块.xml

<?xml version='1.0' encoding='UTF-8'?>
<module xmlns="urn:jboss:module:1.1" name="micropact.login">
    <resources>
        <resource-root path="VRCustomRealm.jar"/>
    </resources>
    <dependencies>
        <module name="org.wildfly.security.elytron"/>
    </dependencies>
</module>
  • 以下配置不起作用。我错过了什么?部署的 EAR 的正确模块名称是什么?

      <configuration>
          <property name="admin" value="welcome"/>
      </configuration>
    

Wildfly 的旧版本仍然支持登录模块,您可以在其中指定自定义代码。在下面的示例中,我使用了 VersaCustomRealm,它是我的 EAR 文件中的一个类,而不是全局模块中的一个类。如何使用自定义领域实现这一点?

<security-domain name="vr-domain" cache-type="default">
    <authentication>
        <login-module code="com.versasys.licenseEase.jbosssx.VersaCustomRealm" flag="required">
        </login-module>
    </authentication>
</security-domain>
      

【问题讨论】:

    标签: wildfly classloader


    【解决方案1】:

    我不相信你可以。在部署扫描程序启动之前,服务器需要独立于模块中列出的任何内容

    【讨论】:

    • 感谢您的回复。目前,我只是尝试在我创建的自定义模块中做所有事情,并将其作为一个全局模块。你知道这个自定义模块如何使用 EAR 文件中的库作为依赖项吗?
    • 您的自定义内容需要是一个模块。你不能从模块到耳朵,只能反过来。所以你自定义代码和它的任何一个作为模块的 dep。如果容器内的任何代码也需要这些类,那么模块可以依赖于模块
    • 谢谢威尔。我刚刚创建了另一个包含我需要的罐子的模块。基本上我现在有 2 个模块,一个包含我的自定义代码,另一个是用于依赖项的 jar。现在一切都好。非常感谢您的帮助,不胜感激。
    猜你喜欢
    • 2020-04-16
    • 2020-07-16
    • 2018-07-26
    • 2016-12-04
    • 2015-11-06
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多