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

我有一些少数或EJB jar模块,它们还包括其在
this question中描述的Web资源.

我现在想将其作为EAR的一部分进行部署.

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

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

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

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

最佳答案 这适用于任何符合JEE5标准的服务器.

我们假设你有

> 2 EJB名为myejb1.jar和myejb2.jar
> 2个WAR webapps,名为mywebapp1.war和mywebapp2.war
> 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应用程序之间共享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

点赞