我在 JBoss 4.3-eap 上部署带有捆绑战争、罐子和配置文件(.properties 文件)的耳朵时遇到问题。这是我的耳朵结构:
+app.ear
+lib
*.jar libraries that the war's use
+classes
*.properties and other configuration files
+META-INF
application.xml
jbos-app.xml
app.war
app2.war
appn.war
我的 jboss-app.xml 中有以下内容:
<jboss-app>
<jmx-name>app.startup.JbossStartUpServer:service=JbossStartUpService</jmx-name>
</jboss-app>
我的 application.xml 看起来像这样:
<application id="app_id">
<display-name>App>/display-name>
<description>TheApp>/description>
<!--
<module id="core">
<java>lib/core.jar</java>
</module>
<module id="tag">
<java>lib/tag.jar</java>
</module>
-->
<module id="app">
<web>
<web-uri>app.war</web-uri>
<context-root>/</context-root>
</web>
</module>
<module id="app2">
<web>
<web-uri>app2.war</web-uri>
<context-root>/app2</context-root>
</web>
</module>
<module id="appn">
<web>
<web-uri>appn.war</web-uri>
<context-root>/appn</context-root>
</web>
</module>
<security-role id="secRole">
<description>users</description>
<role-name id="appRoleName">users</role-name>
</security-role>
<library-directory>lib</library-directory>
</application>
core.jar
基本上,在部署耳朵时,我遇到了一个问题,我的一场战争在文件(java.lang.NoClassDefFoundErro
r)中找不到类。我认为这是因为战争没有找到这个库,即使它在lib
文件夹/类路径中。如果我尝试取消注释前两个模块以添加第一方库(core.jar
和tag.jar
),突然之间无法再找到属性文件(它们现在位于lib/classes
,所以无论如何我希望它们是由类加载器拾取。理想情况下,我想将类放在它自己的目录中并单独将其添加到类路径中,但现在我只是想让这个工作)。
我已经尝试了一些其他的东西,包括手动添加core.jar
到war的文件中,在文件manifest.mf
中更改UseJBossWebLoader
为true ,以及上面的各种组合,都没有成功。我要么从类路径(文件夹)中丢失目录并且我的属性文件都没有被拾取,要么战争无法从 jar 中访问正确的类。我认为肯定有一些配置是错误的,虽然我尝试阅读 JBoss 进行 EAR 部署和类加载的方式,但我似乎无法使其适应我当前的设置。 jboss-service.xml
jboss-web.deployer
classes
lib
任何建议将不胜感激。
以下是我一直在查看的一些网站:
Raible Designs JBoss ClassLoader Logic
这些只是我看过的几个网站。问题也可能源于项目的设置,因为这是一个(在一定程度上)从 weblogic 部署迁移到 Jboss 的大型已建立项目。因此,如果有任何东西应该起作用,但不起作用,则可能是某些代码/项目配置存在问题。不幸的是,我还不能判断它是与 JBoss 相关的问题,还是与项目有关的问题。