这将适用于任何符合 JEE5 的服务器。
假设你有
- 2 EJB 称为 myejb1.jar 和 myejb2.jar
- 2 个名为 mywebapp1.war 和 mywebapp2.war 的 WAR webapp
- 2 个常见的 JAR,称为 log4j.jar 和 mycommon.jar
您希望将其全部打包到一个名为 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>
您将能够通过 URL
http://myJBossServer.url/webapp1/
http://myJBossServer.url/webapp2/访问您的 Web 应用程序
您还可以在多个 Web 应用程序之间共享静态资源,例如 CSS、图像、JavaScript。例如,我有一个具有以下目录布局的 static-content.jar 文件:
static-content.jar:
META-INF/resources/css/my.css
META-INF/resources/img/my.jpg
META-INF/resources/js/jQuery.js
META-INF/resources/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/static-content.jar
WAR 中的 css/my.css 将覆盖 static-content.jar 中的 my.css