(请参阅最后更新。它定义了一种解决方法,但该解决方法也引发了一些问题。)
我们正在尝试从WebLogic将应用程序移植到JBoss EAP 6.2。一路上会遇到很多困难,但现在我只想尝试移植一个war文件,并且我在脚本上加载问题。这场战争取决于它不包括的两个罐子。在Web Logic中,这些jar位于服务器的类路径中。无论继续这种模式是否有意义,目前的努力都是这样做的。但我无法让它发挥作用。
该策略将这些jar加载为模块,正如JBoss所建议的那样。
这是我们放在war文件的WEB-INF目录中的jboss-deployment-structure.xml文件,同样是Jboss建议的:
<?xml version="1.0"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<deployment>
<dependencies>
<module name="com.whatever.ivss" export="TRUE"/>
<module name="com.whatever.vt.svcauthentication" export="TRUE"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
根据jboss,我将这些jar和module.xml描述符部署到{JBOSS_EAP_HOME} / modules下的目录结构中,如下所示:
$ pwd
/.../jboss-eap-6.2/modules/com/whatever
$ ls -alR
.:
total 16
drwxrwxr-x. 4 wevs wevs 4096 Aug 14 14:58 .
drwxrwxr-x. 4 wevs wevs 4096 Aug 13 14:07 ..
drwxrwxr-x. 2 wevs wevs 4096 Aug 15 09:44 ivss
drwxrwxr-x. 3 wevs wevs 4096 Aug 14 14:58 vt
./ivss:
total 132
drwxrwxr-x. 2 wevs wevs 4096 Aug 15 09:44 .
drwxrwxr-x. 4 wevs wevs 4096 Aug 14 14:58 ..
-rw-r-----. 1 wevs wevs 121414 Aug 13 14:22 ivsslib-jdk1.5.jar
-rw-r-----. 1 wevs wevs 356 Aug 15 09:44 module.xml
./vt:
total 12
drwxrwxr-x. 3 wevs wevs 4096 Aug 14 14:58 .
drwxrwxr-x. 4 wevs wevs 4096 Aug 14 14:58 ..
drwxrwxr-x. 2 wevs wevs 4096 Aug 14 15:02 svcauthentication
./vt/svcauthentication:
total 24
drwxrwxr-x. 2 wevs wevs 4096 Aug 14 15:02 .
drwxrwxr-x. 3 wevs wevs 4096 Aug 14 14:58 ..
-rw-r-----. 1 wevs wevs 306 Aug 14 15:02 module.xml
-rw-r-----. 1 wevs wevs 11524 Aug 13 14:21 svcauthentication-jdk1.5.jar
以下是上面提到的两个module.xml文件:
... / COM /不管/ IVSS / module.xml:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.whatever.ivss">
<resources>
<resource-root path="ivsslib-jdk1.5.jar"/>
</resources>
<dependencies>
<module name="javax.jms.api"/>
<module name="javax.servlet.api"/>
<module name="org.apache.log4j"/>
<module name="system"/>
</dependencies>
</module>
和... / com / whatever / vt / svcauthentication / module.xml:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.whatever.vt.svcauthentication">
<resources>
<resource-root path="svcauthentication-jdk1.5.jar"/>
</resources>
<dependencies>
<module name="com.whatever.ivss"/>
<module name="system"/>
</dependencies>
</module>
据我所知,我已经做好了一切 然而该类拒绝加载,并查看jboss日志(在跟踪级别),错误似乎是无法找到我的模块(而不是一些下游类依赖问题):
10:12:07,254 DEBUG [org.jboss.modules] (MSC service thread 1-4) Module deployment.dbAccess.war:main defined by Service Module Loader
10:12:07,254 TRACE [org.jboss.modules] (MSC service thread 1-4) Loaded module deployment.dbAccess.war:main from Service Module Loader
10:12:07,256 TRACE [org.jboss.modules] (MSC service thread 1-4) Locally loading module com.whatever.ivss:main from local module loader @65c404b3 (finder: local modul
e finder @2810b7f7 (roots: .../jboss-eap-6.2/modules,.../jboss-eap-6.2/modules/system/layers/base))
10:12:07,256 TRACE [org.jboss.modules] (MSC service thread 1-4) Module com.whatever.ivss:main not found from local module loader @65c404b3 (finder: local module find
er @2810b7f7 (roots: .../jboss-eap-6.2/modules,.../jboss-eap-6.2/modules/system/layers/base))
...
10:12:07,256 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service jboss.module.service."deployment.dbAccess.war".main:
org.jboss.msc.service.StartException in service jboss.module.service."deployment.dbAccess.war".main: JBAS018759: Failed to load module: deployment.dbAccess.war
:main
at org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:91) [jboss-as-server-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14
]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-
1]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_51]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_51]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51]
Caused by: org.jboss.modules.ModuleNotFoundException: com.whatever.ivss:main
at org.jboss.modules.Module.addPaths(Module.java:1030) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.Module.link(Module.java:1386) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.Module.relinkIfNecessary(Module.java:1414) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:242) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:70) [jboss-as-server-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14
]
... 5 more
我必须做错事但我无法弄清楚它是什么。为什么JBoss不能找到我的模块?
更新:
我找到了一个可能的解决方案,或者它只是一个绑带。
第一个线索是上面包含的日志条目:
Locally loading module com.whatever.ivss:main ...
:main 在那里做什么?在任何时候我都没有要求我的模块符合术语“主要”。
再看一下,我下了JBOSS_EAP_HOME / modules / system目录的树。这些是JBoss提供的出厂默认依赖模块。这里的每个模块都有一个名为main的子目录中的module.xml和jar文件。 例如:
[wevs@hdcas01 cal10n]$ pwd
.../jboss-eap-6.2/modules/system/layers/base/ch/qos/cal10n
[wevs@hdcas01 cal10n]$ ls -alR
.:
total 12
drwxrwxr-x. 3 wevs wevs 4096 Nov 20 2013 .
drwxrwxr-x. 3 wevs wevs 4096 Nov 20 2013 ..
drwxrwxr-x. 2 wevs wevs 4096 Nov 20 2013 main
./main:
total 44
drwxrwxr-x. 2 wevs wevs 4096 Nov 20 2013 .
drwxrwxr-x. 3 wevs wevs 4096 Nov 20 2013 ..
-rw-rw-r--. 1 wevs wevs 30262 Nov 20 2013 cal10n-api-0.7.3-redhat-2.jar
-rw-rw-r--. 1 wevs wevs 1419 Nov 20 2013 module.xml
换句话说,在JBoss定义的系统模块中,模块定义和模块本身位于... / {module name} / main目录中,而不是... / {module name}目录。 / p>
在我的模块中遵循此模式,战争现在成功加载。
但是,这还有问题吗?为什么这个“主要”子目录似乎需要?它没有记录在JBoss文档中。这只是解决方案,还是我的部署中存在其他一些有问题的方面,这使得它成为必要。或者这是一个错误?
答案 0 :(得分:2)
JBoss模块需要模块名称和插槽。在module.xml
中,有一个名为slot
的属性,默认为main
。由于您的module.xml
不在main
目录中,因此无法解决问题。
换句话说,通用目录格式为package/name/slot
。由于默认插槽为main
,因此JBoss模块在com/whatever/ivss/main
中查找了module.xml
文件。
答案 1 :(得分:1)
进一步调查显示这是一个相当严重的文档错误。我已将此发布为JBoss bugzilla上的错误:
https://bugzilla.redhat.com/show_bug.cgi?id=1130642
还有一些其他jboss文档与我正在阅读的文档相矛盾,详细信息在bug报告中。
这让我花了近一天的时间来抓头。