繁体   English   中英

从应用程序隔离的WildFly9 JASPI模块

[英]WildFly9 JASPI Module Isolated from Application

我正在尝试创建一个与我的EAR应用程序完全隔离的自定义JASPI ServerAuthModule。 它取决于Spring框架2.5.5的遗留版本。 我正在运行WildFly 9.0.2.Final。

我定义了一个合适的安全域:

<security-domain="sample">
    <authentication-jaspi>
        <login-module-stack name="...">
          <login-module code="..." flag="...">
            <module-option name="..." value="..."/>
          </login-module>
        </login-module-stack>
        <auth-module code="..." login-module-stack-ref="...">
          <module-option name="..." value="..."/>
        </auth-module>
    </authentication-jaspi>
</security-domain>

然后为我的Auth-Module依赖项定义了一个自定义JBoss模块。

$WILDFLY/modules/com/my/module/main/module.xml
$WILDFLY/modules/com/my/module/main/spring-core-2.5.5.jar 
$WILDFLY/modules/com/my/module/main/etc.jar (..)

然后我把我的模块挂钩作为一个纠察线依赖。

cat $WILDFLY/system/layers/base/modules/org/picketbox/main/module.xml

<module xmlnx="..." name="org.picketbox">
   ...
   <dependency>
      ...
      <module name="org.my.module" />
   </dependency>
</module>

当我尝试使用指向“示例”安全域的jboss-web.xml来部署my-app.ear my-app.war时,它成功找到了我想要的类,启动了JASPI生命周期,但是当时它开始创建Spring Context和Spring Beans,它位于my-app.ear.my-app.war模块类加载器上,并且正如预期的那样找不到类。

ClassNotFoundException:来自[Module“deployment.my-app.ear.my-app.war:main”来自Service Module Loader]的com.my.module.ClassX

我不想在jboss-deployment-structure.xml添加com.my.module作为依赖jboss-deployment-structure.xml 这样做可以使应用程序按需运行。 虽然我需要它孤立。

我的问题是:

  • 是否可以将JASPI模块类与我的应用程序隔离开来?
  • 这种方法(挂钩为org.picketbox依赖)是推荐的吗?
  • 它是Spring Framework 2.5.5的限制吗? 也许它使用除当前线程类加载器之外的类加载器。

提前致谢。

我找到了一个有趣的指南,它解释了我们很多关于JBoss模块和类加载问题的内容。

这里: https//developer.jboss.org/wiki/ModuleCompatibleClassloadingGuide

它说TCCL在某些情况下可能是癌症。

我发现传统的Spring 2.5.5使用TCCL来加载类并实例化它的bean。

为了纠正这种行为,我扩展了ClassPathXmlApplicationContext并覆盖了最初来自TCCL( ClassUtils.getDefaultClassLoader )的getClassLoader() )。

一切都开始工作,与主应用程序隔离。 问题解决了。

如果有人试图做一些孤立的模块实现并且得到奇怪的行为,我建议从你的底层框架开始怀疑。

将JASPIC模块(SAM)与应用程序隔离的另一个选择是将其部署为单独的战争。

这可以通过使用编程选项注册SAM来完成,但是为应用程序上下文ID传递null 然后,SAM将可用于部署在同一AS上的所有其他归档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM