2013-11-18 3 views
2

Неверно мои попытки создать модуль для JBoss7 (и WildFly8.0.0.Beta2) потерпели неудачу, и я не вижу ошибки, которые я сделал, что я сделал был:Поставка apache-shiro в качестве модуля для JBoss-7, WildFly-8

1.) Создание каталога на <wf-root>/modules/org/apache/shiro/main,

2.) Копирование файлов shiro-core-1.2.2.jar, shiro-ehcache-1.2.2.jar и shiro-web-1.2.2.jar в него

3.) Создание файла с именем module.xml со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?> 
<module xmlns="urn:jboss:module:1.0" name="org.apache.shiro"> 
    <resources> 
     <resource-root path="shiro-core-1.2.2.jar"/> 
     <resource-root path="shiro-ehcache-1.2.2.jar"/> 
     <resource-root path="shiro-web-1.2.2.jar"/> 
    </resources> 
</module> 

Затем я запустил свой сервер. Unluckily развертывание файла EAR, который требует сиро не удался развернуть с помощью следующей ошибки (snipplet):

Caused by: java.lang.NoClassDefFoundError: org/apache/shiro/mgt/SecurityManager 
    at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.7.0_25] 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:792) [rt.jar:1.7.0_25] 
    at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:345) [jboss-modules.jar:1.3.0.Final] 
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:423) [jboss-modules.jar:1.3.0.Final] 
    ... 31 more 

Любых идей?

+3

Вы добавили 'jboss-deployment-structure.xml', который указывает' org.apache.shiro' как модуль? – artbristol

+0

Нет. Как мне это сделать? Вы можете указать ссылку на документацию? – Rob

+0

Посмотрите здесь https://docs.jboss.org/author/display/AS72/Developer+Guide#DeveloperGuide-jbossdeploymentstructure.xml, но обычный способ включения Shiro - это банку в 'WEB-INF/lib' а не как модуль JBoss (банка также более портативна) – artbristol

ответ

2

Вы можете выразить зависимость от пользовательского модуля более просто и лаконично просто путем добавления одной строки в основную часть вашего META-INF/MANIFEST.MF файла:

Dependencies: org.apache.shiro 

Для получения дополнительной информации см: https://docs.jboss.org/author/display/WFLY8/Class+Loading+in+WildFly

2

Хотя на это уже был дан ответ, и ответ верен, в нем не было соответствующего решения: глобальный модуль.

Из того же link в предыдущем ответе вы также можете настроить это как глобальный модуль, а затем вам не придется изменять ваш MANIFEST.MF. Я использую это, когда несколько приложений в одном контейнере имеют одни и те же зависимости.

+1

Довольно хорошая идея, со временем я изменил ее на использование 'jboss-deployment-structure.xml'. Я по-прежнему верю, что «maven-wildfly-plugin» автоматически создаст этот один день (как предлагается здесь: https://issues.jboss.org/browse/WFMP-3) – Rob

Смежные вопросы