【问题标题】:How to Deploy Simple Java Projects into EAR?如何将简单的 Java 项目部署到 EAR 中?
【发布时间】:2011-01-12 04:20:51
【问题描述】:

我正在使用 MyEclipse,并且我使用了一个自动部署我的 Web 和 EJB 项目的企业应用程序项目 (EAP)。

这些项目使用其他一些只是 POJO 的项目,“简单”的 java 项目。就像图书馆之类的东西。

问题是,当我在“简单”java 项目中更改某些内容时,我必须在 JBoss 中重新部署整个 EAP 才能看到更改。

我想要的是一种在 EAP 中自动部署这些项目 (POJO) 的方法,因此热代码替换也适用于这些项目。

有什么想法吗?

【问题讨论】:

  • 为什么要将纯 Java 应用程序部署为 EAR?如果它们不是网络应用,它们是什么?
  • 就像其他(ear、wars 等)项目使用的 LIB。
  • EAR 通常不会这样工作,它们不能充当其他 EAR 使用的库。 EAR 用于部署 JavaEE 组件。
  • 没有。 EAR 文件(或项目)包含各种项目。就这样。它有 Web 项目、EJB 项目等。这些项目使用的库现在手动打包到 jar 中并复制到我的 EAR 项目的 lib 文件夹中。

标签: java deployment ejb-3.0 jboss-eap-4.3.x


【解决方案1】:

使用 JBoss,您只需将 JAR 放在 server/default/deploy 目录中 - 至少对于旧版本来说是这样 - 感谢 JBoss special classloader(讨厌或喜欢它)。

使用 WebLogic,您可以使用“Shared Libraries”。

在这两种情况下,上述功能都是专有的,即非标准的,使用它们会使您的应用程序不可移植。


对不起,我的意思是自动的。像这样:1)运行服务器 2)修改 Java 项目(库)上的一些东西 3)哦,哦,我必须手动重新部署库(制作一个 jar,复制并重新启动服务器)。我希望它自动进行更改,例如热部署。

啊,好的,现在知道了。在这种情况下,“Exploded Archive Deployment”是可行的方法,并且得到 MyEclipse(和 JBoss)的支持。引用7.1 J2EE Project Deployment Modes

MyEclipse 可以将 Web、EJB 和企业应用程序项目部署到任何支持 MyEclipse 的应用程序服务器。 MyEclipse 支持两种部署打包方式:展开归档部署和打包归档部署。

  • Exploded Archive Deployment - 这是一种以开发为中心但非标准的 J2EE 应用程序打包和部署模型。与打包部署类似,应用程序的可部署资源被组织成符合 J2EE 标准目录/文件结构。但是,不是创建和部署单个存档文件,而是整个应用程序资源结构(目录和文件)由应用程序服务器连接器复制到服务器的特殊部署位置以用于展开存档。 MyEclipse 部署服务使用"Sync-on-Demand" 技术,将使所有 MyEclipse 项目部署与相应 MyEclipse 项目中的所有源更改保持同步。注意:J2EE 标准不支持展开部署,也不是所有应用服务器都支持。

【讨论】:

  • 是的,我知道这就是我想要避免的。还是谢谢。
  • @Franco 我不明白你的意思我只是想知道是否有办法直接部署它们
  • 对不起,我的意思是自动的。像这样:1)运行服务器 2)修改 Java 项目(库)上的一些东西 3)哦,哦,我必须手动重新部署库(制作一个 jar,复制并重新启动服务器)。我希望它自动进行更改,例如热部署。
【解决方案2】:

可能有一些特定于服务器的方法来为 Java EE 应用程序提供共享库,但我认为 Java EE 规范不包含任何此类工具。一种方法是将其添加到服务器类路径中,但您通常应该避免这种情况并将您的应用程序捆绑为一个独立单元......即耳朵。看起来你已经在做。

这似乎是一个奇怪的要求,因为您已经按照正确的方式进行操作,所以不要更改它。

【讨论】:

    【解决方案3】:

    如果您将 simple 项目添加为库,您是否考虑过使用 OSGI 在运行时动态交换包。您无需重新部署所有应用程序,只需更改 jar 即可。 jBoss 有一个名为 jbossosgi 的 OSGI 实现,目前处于测试阶段。

    【讨论】:

      【解决方案4】:

      您能否部署一个展开的 EAR,然后只复制您更改的几个文件?这就是我进行所有开发的方式。如果您更改了一个简单的 JSP 或 Java 类,您只需复制这些单独的文件,服务器就会获取它们。

      【讨论】:

      • +1 表示爆炸的耳朵——我认为开发 EE 的最快方法。
      【解决方案5】:

      尝试在 2 个单独的 EAR 或 WAR 和 EAR 中分离 POJO 和 J2EE 元素并分别部署它们。我对 Weblogic 项目有同样的问题,如果我更改了恶意内容,我总是部署 EJB 和所有员工。不久前我想到了这个想法。没有时间尝试,那些项目完成了。但是你可以使用我的想法。

      【讨论】:

        【解决方案6】:

        有一个名为 JRebel 的商业工具:http://www.zeroturnaround.com/jrebel 虽然我不确定它是否适用于您的具体情况。出于测试目的,有 30 天的试用期。

        【讨论】:

          【解决方案7】:

          当我使用 MyEclipse 时,我找到了一种方法,方法是在 EAP 中添加对 java 模块的引用。部署项目时,Java 模块会部署在 AS 中。

          唯一不好的是现在我需要手动管理application.xml。

          this link里都有解释。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-12-17
            相关资源
            最近更新 更多