gpt4 book ai didi

jakarta-ee - 在没有 WAR 的情况下在 EAR 中部署多个 "Web Fragment"项目

转载 作者:行者123 更新时间:2023-12-04 01:51:54 26 4
gpt4 key购买 nike

我有一些或 EJB jar 模块,其中还包括它们的 Web 资源,如 this question 中所述。 .

我现在想将其部署为 EAR 的一部分。

现在,我可以毫无问题地把这当成一场 war ,这就是我的后备计划。但是,我想了解是否可以将多个“web 片段”jar 部署到一个耳朵中以形成一个完整的 web 应用程序,而无需在其中使用 war 文件将它们组合在一起。

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

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

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

最佳答案

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

假设你有

  • 2 EJB 称为 myejb1.jar 和 myejb2.jar
  • 2 个名为 mywebapp1.war 和 mywebapp2.war
  • 的 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
    库/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 文件:

    静态内容.jar:
    META-INF/resources/css/my.css
    META-INF/资源/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

    关于jakarta-ee - 在没有 WAR 的情况下在 EAR 中部署多个 "Web Fragment"项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14776067/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com