我们在我们的web应用(战争)中使用第三方战争。为了与战争沟通,我们创建了一个桥梁模块(jar)。其目的是防止我们的网络应用程序直接与外部战争进行通信,而是通过网桥模块进行通信。如何使用maven公开内部战争中的WEB-INF/lib
所有3个模块(2个战争和1个jar)都在JBoss中部署的ear文件中。
ear
- war1 (our web app)
- war2 (external web app)
- bridge jar
点要注意的是,桥罐子使用一些API(公开为罐),其存在于外部战争的WEB-INF/lib目录内。
在调出JBoss的时候,我们得到了java.lang.NoClassDefFoundError错误,因为bridge jar无法找到外部war的WEB-INF/lib中存在的API。
我们不想将所有外部罐子直接放在耳朵下面,因为这意味着外部罐子并不仅限于其战争。
有没有办法从桥梁罐子里访问外部战争的WEB-INF/lib中存在的罐子?我们可以使用maven构建过程来实现这一点,还是有更好的方法呢?
我们修改了bridge jar中的MANIFEST.MF文件,添加了包含我们需要的外部jar的Class-Path条目。 MANIFEST.MF文件如下: Manifest-Version:1.0 Ant-Version:Apache Ant 1.5.3 Package:com.ket.sa Class-Path:WEB-INF/lib/WebObjects-9.2.1的.jar 规格 - 标题:标题 规范厂商: 实现-标题:com.ket.sa 实现厂商: 的实现版本:7.6 但它无法找到上述罐子。这是做到这一点的正确方法吗? – Sundeep
看起来不错,不知道这是一个JBoss问题https://issues.jboss.org/browse/JBAS-3883?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel另见http:/ /docs.codehaus.org/display/MAVENUSER/Solving+the+Skinny+Wars+problem – JoseK