我有一些或者jar jar模块,它们还包括this question中描述的Web资源。
我现在想把它作为EAR的一部分进行部署。
现在,我可以做这个没有任何问题的战争,这是我的备份计划。但是,我想了解是否有可能将多个“网络片段”罐子放入耳中以形成一个完整的Web应用程序,而在其中有一个war文件,将它们组合在一起。
此外,如果我有多个依赖于这些jar中的一个或多个的war文件,我是否必须构建它们以使这些jar在war文件的WEB-INF / lib中重复,即使war文件然后最终在同一个耳朵里?
在这种情况下,如果jar文件包含实体,那么它们是否也需要在耳根中,以便可以定义全局持久性单元?
我在JBoss 7上虽然如果可能的话我更喜欢标准的容器独立解决方案。
答案 0 :(得分:2)
这适用于任何符合JEE5标准的服务器。
我们假设你有
您希望将其全部打包到名为myapp.ear的EAR文件中。
myapp.ear目录结构如下所示:
myapp.ear:
META-INF / application.xml中
myejb1.jar
myejb2.jar
mywebapp1.war
mywebapp2.war
LIB / log4j.jar
LIB / mycommon.jar
META-INF / application.xml的内容将包含
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/application_5.xsd">
<module>
<ejb>myejb1.jar</ejb>
</module>
<module>
<ejb>myejb2.jar</ejb>
</module>
<module>
<web>
<web-uri>mywebapp1.war</web-uri>
<context-root>webapp1</context-root>
</web>
</module>
<module>
<web>
<web-uri>mywebapp2.war</web-uri>
<context-root>webapp2</context-root>
</web>
</module>
<library-directory>lib</library-directory>
</application>
您可以通过网址访问您的网络应用
http://myJBossServer.url/webapp1/
http://myJBossServer.url/webapp2/
您还可以在多个Web应用程序之间共享CSS,图像,JavaScript等静态资源。例如,我有一个带有此目录布局的static-content.jar文件:
静电content.jar:
META-INF /资源/ CSS / my.css
META-INF /资源/ IMG / my.jpg
META-INF /资源/ JS / jquery.js和
META-INF /资源/ JS / node.js的
在构建期间,我将static-content.jar放在我的webapps上的WEB-INF / lib目录中。现在
http://myJBossServer.url/webapp1/css/my.css
http://myJBossServer.url/webapp2/css/my.css
与static-content.jar具有相同的来源。
如果我只想覆盖webapp2中的默认my.css,我可以直接将修改后的my.css放入mywebapp2.war。
mywebapp2.war
CSS / my.css
WEB-INF / LIB /静电content.jar
WAR中的css / my.css将覆盖static-content.jar中的my.css