在没有WAR的情况下在EAR中部署多个“Web Fragment”项目

时间:2013-02-08 15:37:32

标签: java-ee deployment jboss ear

我有一些或者jar jar模块,它们还包括this question中描述的Web资源。

我现在想把它作为EAR的一部分进行部署。

现在,我可以做这个没有任何问题的战争,这是我的备份计划。但是,我想了解是否有可能将多个“网络片段”罐子放入耳中以形成一个完整的Web应用程序,而在其中有一个war文件,将它们组合在一起。

此外,如果我有多个依赖于这些jar中的一个或多个的war文件,我是否必须构建它们以使这些jar在war文件的WEB-INF / lib中重复,即使war文件然后最终在同一个耳朵里?

在这种情况下,如果jar文件包含实体,那么它们是否也需要在耳根中,以便可以定义全局持久性单元?

我在JBoss 7上虽然如果可能的话我更喜欢标准的容器独立解决方案。

1 个答案:

答案 0 :(得分:2)

这适用于任何符合JEE5标准的服务器。

我们假设你有

  • 2 EJB名为myejb1.jar和myejb2.jar
  • 2个名为mywebapp1.war和mywebapp2.war
  • 的WAR webapps
  • 两个常见的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>

您可以通过网址访问您的网络应用 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