【发布时间】:2016-06-10 09:26:27
【问题描述】:
我正在尝试创建一个完全与我的 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>
当我尝试部署一个通用的my-app.ear 与jboss-web.xml 一起发布my-app.war 指向“样本”安全域时,它成功找到了我想要的类,启动了 JASPI 生命周期,但是当它开始创建时Spring Context 和 Spring Beans 它落在 my-app.ear.my-app.war Module Classloader 上,并且正如预期的那样找不到类。
ClassNotFoundException: com.my.module.ClassX from [Module "deployment.my-app.ear.my-app.war:main" from Service Module Loader]
我不想在 jboss-deployment-structure.xml 中添加 com.my.module 作为依赖项。这样做会使应用程序按需要工作。虽然我需要它隔离。
我的问题是:
- 是否可以将 JASPI 模块类与我的应用程序隔离开来?
- 是否推荐这种方法(挂钩为
org.picketbox依赖项)? - 是 Spring Framework 2.5.5 的限制吗?也许它使用了当前线程类加载器以外的类加载器。
提前致谢。
【问题讨论】:
标签: java spring jboss wildfly-9 jaspic