Java 重组或重新组装EJB2EAR以在Eclipse中进行调试
我正在开发一个用EJB2编写的遗留应用程序。我想在eclipse中加载它并在eclipse中调试它。我知道我可以在本地Jboss 5.1安装和Eclipse的远程调试中构建和部署它,但是这个选项的问题是,每次进行更改时,我都必须再次构建和部署它 现在,这个应用程序由几个文件夹组成,并使用ANT构建。文件夹结构的高级视图如下所示:Java 重组或重新组装EJB2EAR以在Eclipse中进行调试,java,jakarta-ee,jboss,ejb,ejb-2.x,Java,Jakarta Ee,Jboss,Ejb,Ejb 2.x,我正在开发一个用EJB2编写的遗留应用程序。我想在eclipse中加载它并在eclipse中调试它。我知道我可以在本地Jboss 5.1安装和Eclipse的远程调试中构建和部署它,但是这个选项的问题是,每次进行更改时,我都必须再次构建和部署它 现在,这个应用程序由几个文件夹组成,并使用ANT构建。文件夹结构的高级视图如下所示: MyAppServer build build.xml descriptors app1.xml app
MyAppServer
build
build.xml
descriptors
app1.xml
app2.xml
app3.xml
...
...
app33.xml
src
packagefolder1
com
xxx
xxx
packagefolder2
com
xxx
xxx
packagefolder3
com
xxx
xxx
test
EJB2.1Vanilla
ejbModule
META-INF
ejb-jar.xml
MANIFEST.MF
每个组件都有一个描述符文件(总共约42个描述符文件)。其中每一项都包含以下定义
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd">
<ejb-jar>
<description>abcd</description>
<enterprise-beans>
<session>
<display-name>xxx Bean</display-name>
<ejb-name>Xxxx</ejb-name>
<home>PackageFolder1.xxx.xxx</home>
<remote>xxx.xxx.xxx</remote>
<ejb-class>xxx.xxx.xxx</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
<resource-ref>
<res-ref-name>jdbc/myAppDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</session>
</enterprise-beans>
</ejb-jar>
因此,看起来ant build sript接受每个模块,构建一个jar文件,创建一个ejb-jar.xml并将其添加到EAR文件中。每个模块都打包为一个jar文件。我在ear文件中没有看到application.xml和application-client.xml文件,所以我猜它们是用来创建ear文件的
我想将此应用程序加载到eclipse中,并尝试对其进行调试。当我在Eclipse中创建vanialla EJB 2.1项目时,我得到的结构如下所示:
MyAppServer
build
build.xml
descriptors
app1.xml
app2.xml
app3.xml
...
...
app33.xml
src
packagefolder1
com
xxx
xxx
packagefolder2
com
xxx
xxx
packagefolder3
com
xxx
xxx
test
EJB2.1Vanilla
ejbModule
META-INF
ejb-jar.xml
MANIFEST.MF
加载该应用程序以便直接从eclipse中运行它的最佳方法是什么?我认为src文件夹的位置不重要,重要的是如何重新配置我正在处理的描述符文件 您在这里有几个选项:
- 您可以使用一些“部署”目标来完成ant脚本,如中所示:
每次你换完衣服就给它打电话。这是一个更为保守的选择,因为您尊重原始的包装(作为JBoss,它应该相当快)。它看起来很难看,很难与Eclipse集成,但它是可靠的,可以在JBoss自动部署.ear扫描其更改时工作
- 另一个选项是,正如您刚才指出的,在Eclipse中创建一个普通的EJB2项目。只需将/src目录粘贴到那里,并将其作为源目录添加到Eclipse项目属性选项卡中。然后使用Eclipse向导创建一个简单的EAR项目,并将其运行到您最喜欢的服务器中。通过这种方式,您将使它与Eclipse非常平滑地集成,可调试,可修改。。。这种方法的缺点是你不尊重你的原始包装(无论是好的还是坏的),而且这种方法在你的持续集成中很难使用(如果有的话)
- 如果您有任何maven技能,您可以通过从m2eclipse提供给您的一些EJB原型创建一个maven项目来实现项目的maven化。您可以将/src目录内容直接复制到src/main/java目录中,并将它的任何描述符复制到src/main/resources/META-INF中。然后,您可以将它添加到一个mavenized EAR项目中,该项目将像选项2一样轻松地运行到Eclipse控制的服务器中,这将与您拥有的任何CI解决方案100%兼容
EJB2.1Vanilla
ejbModule
META-INF
ejb-jar.xml
MANIFEST.MF
<target name="deploy">
<copy todir="${YOUR_JBOSS_DEPLOY_DIRECTORY}" file="${THE_EAR_YOU_JUST_GENERATED}"/>
</target>