首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重组或重新组装EJB 2 EAR,以便在Eclipse中进行调试

重组或重新组装EJB 2 EAR,以便在Eclipse中进行调试
EN

Stack Overflow用户
提问于 2014-01-27 20:16:06
回答 1查看 622关注 0票数 2

我正在开发一个用EJB 2编写的遗留应用程序,我希望在Eclipse中加载它,并在eclipse中调试它。我知道我可以从Eclipse构建它并在本地JBoss5.1安装和远程调试中部署它,但是这个选项的问题是,每次我进行更改时,我都必须重新构建和部署它。

现在,这个应用程序由几个文件夹组成,并使用ANT构建。文件夹结构的高级视图如下所示:

代码语言:javascript
复制
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

每个组件都有一个描述符文件(总共有42个描述符文件)。它们中的每一个包含以下定义

代码语言:javascript
复制
<?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> 

除了描述符文件之外,还有三个文件似乎是通用的。application.xml,application-client.xml和web.xml。这些文件的内容具有以下格式

application.xml

代码语言:javascript
复制
<application>
    <display-name>MyAppServer</display-name>
    <module>
        <ejb>app1.jar</ejb>
    </module>
    <module>
        <ejb>app2.jar</ejb>
    </module>
    <module>
        <ejb>app3.jar</ejb>
    </module>
    <module>
        <ejb>app4.jar</ejb>
    </module>
    <module>
        <ejb>app5.jar</ejb>
    </module>
    ....
    ....
    <module>
        <ejb>app42.jar</ejb>
    </module>
</application>

application-client.xml

代码语言:javascript
复制
<application-client>
    <ejb-ref>
        <ejb-ref-name>xxx</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <home>xxx.xxxHome</home>
        <remote>xxxx</remote>
    </ejb-ref>
        <ejb-ref>
        <ejb-ref-name>xxx</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <home>xxx.xxxHome</home>
        <remote>xxxx</remote>
    </ejb-ref>
    ....
    ....
    <ejb-ref>
        <ejb-ref-name>xxx</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <home>xxx.xxxHome</home>
        <remote>xxxx</remote>
    </ejb-ref>
</application-client>

现在,当我使用ant构建脚本构建它时,我得到了一个EAR文件,该文件具有以下内容

代码语言:javascript
复制
MyAppServer
    config
    META-INF
        MANIFEST.MF
    app1.jar
        META-INF
            ejb-jar.xml
        packageFolder1
            MyClass1.class
    app2.jar
        META-INF
            ejb-jar.xml
        packageFolder2
            MyClass2.class
    app3.jar
        META-INF
            ejb-jar.xml
        packageFolder3
            MyClass3.class
    app4.jar
        META-INF
            ejb-jar.xml
        packageFolder4
            MyClass3.class

所以看起来像ant build sript接受每个模块,构建一个jar文件,创建一个ejb-jar.xml并将其添加到EAR文件中。每个模块都打包成一个jar文件。我没有在ear文件中看到application.xml和application-client.xml文件,所以我猜这些文件是用来爬行ear文件的吗?

我想将这个应用程序加载到eclipse中,并尝试调试它。在Eclipse中创建vaniallaEJB2.1项目时,我得到的结构如下所示:

代码语言:javascript
复制
EJB2.1Vanilla
    ejbModule
        META-INF
            ejb-jar.xml
            MANIFEST.MF

加载应用程序的最佳方法是什么,这样我就可以在eclipse中直接运行它了?我认为src文件夹的位置应该无关紧要,这是我如何重新配置描述符文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-27 20:34:06

在这里,您有几个选择:

  • 您可以使用一些“部署”目标来完成ant脚本,如下所示:

代码语言:javascript
复制
  <target name="deploy">
      <copy todir="${YOUR_JBOSS_DEPLOY_DIRECTORY}" file="${THE_EAR_YOU_JUST_GENERATED}"/>
    </target>

每次你做完改变就打电话给我。这是比较保守的选择,因为您尊重原始的打包(而且它应该是相当快的JBoss)。它看起来很难看,很难与Eclipse集成,但是它是可靠的,并且将在JBoss自动部署.ear扫描其更改时工作。

  • 另一个选项是,正如您刚才指出的,在Eclipse中创建一个普通的EJB 2项目。只需将/src目录粘贴到那里,并将其作为源目录添加到选项卡中即可。然后使用Eclipse向导创建一个简单的EAR项目,并将其运行到您喜欢的服务器中。这样,您将非常顺利地将它与Eclipse集成,可调试,可修改.这样做的缺点是,您不尊重原始的打包(好的或坏的),而且这种方法在您的持续集成(如果有的话)中很难使用。
  • 如果您有任何maven技能,可以通过从m2eclipse提供给您的一些EJB原型创建Maven项目来将您的项目马文化。您可以将您的/src目录内容直接复制到src/main/java目录中,以及它所包含的任何描述符到src/main/resources/META中。然后,您可以将它添加到mavenized化的EAR项目中,该项目将像选项2一样轻松地运行到您的Eclipse控制服务器中,这将100%地与您所拥有的任何CI解决方案兼容。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21390770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档