Я пытаюсь создать пользовательский JASPI ServerAuthModule, полностью изолированный от приложения EAR. Это зависит от устаревшей версии весеннего каркаса 2.5.5. Я запускаю WildFly 9.0.2.Final.Модуль WildFly9 JASPI, выделенный из приложения
Я определил правильный домен безопасности:
<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>
А затем определить пользовательский JBoss модуль для моих зависимостей Auth-модуля.
$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
, что корабли my-app.war
с jboss-web.xml
, что указывает на «образец» безопасности-домен, он успешно находит классы, которые я хотел, начинает JÄSPI жизненный цикл, но потом, когда он начинает создавать Spring Контекст и Spring Beans он падает на my-app.ear.my-app.war
Модуль Classloader и, как и ожидалось, не находит классы.
ClassNotFoundException: com.my.module.ClassX из [Модуль "deployment.my-app.ear.my-app.war: главный" от служебного модуля Loader]
Я не хочу добавить com.my.module
в качестве зависимости в jboss-deployment-structure.xml
. Это делает работу приложения по своему усмотрению. Хотя он мне нужен.
Мои вопросы:
- Можно выделить классы модуля JÄSPI из моего приложения?
- Этот подход (зацепление как
org.picketbox
зависимостей) рекомендуется? - Является ли ограничение Spring 2.5 2.5? Возможно, он использует Classloader, отличный от загрузчика класса Current Thread.
Заранее спасибо.
Если это решило вашу проблему, вы должны проверить ✔ рядом с вашим вопросом. –