如何将简单的Java项目部署到EAR中?

时间:2010-02-02 14:19:14

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

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

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

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

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

有什么想法吗?

7 个答案:

答案 0 :(得分:1)

使用JBoss,您可以将JAR放在server/default/deploy目录中 - 这对于旧版本至少是正确的 - 感谢JBoss special classloader(讨厌或喜欢它)。

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

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


  

抱歉,我的意思是自动的。像这样:1)运行服务器2)修改Java项目(库)上的东西3)哦 - 哦,我必须手动重新部署库(制作jar,复制和重启服务器)。我希望它能够自动进行更改,就像热部署一样。

啊,好吧,现在明白了。在这种情况下,“爆炸档案部署”是可行的方式,并得到MyEclipse(和JBoss)的支持。引用7.1 J2EE Project Deployment Modes

  

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

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

答案 1 :(得分:1)

您可以部署爆炸的EAR,然后只复制您更改的几个文件吗?这就是我做我所有发展的方式。如果您更改了一个简单的JSP或Java类,则只需复制这些单个文件,服务器就会将它们选中。

答案 2 :(得分:0)

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

这似乎是一个奇怪的请求,因为你已经以正确的方式做了,所以不要改变它。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

当我使用MyEclipse时,我找到了一种方法,通过在EAP中向java模块添加引用来实现。部署项目时,Java模块将部署在AS中。

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

所有这些都在this link中解释。