重组或重新组装EJB 2耳朵,用于在日食中调试



我正在研究EJB 2中编写的旧应用程序。我想将其加载到Eclipse中,并在Eclipse内进行调试。我知道我可以在Eclipse的本地JBOSS 5.1安装和远程调试中进行构建并部署它,但是此选项的问题是,每次我进行更改时,我都必须再次构建和部署它。

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

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个描述符文件)。它们每个都包含以下定义

<?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

<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

<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文件
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文件,所以我猜这些用于craete craete ear file?

我想将此应用程序加载到Eclipse中,然后尝试调试。当我在Eclipse中创建Vanialla EJB 2.1项目时,我得到的结构如下所示:

EJB2.1Vanilla
    ejbModule
        META-INF
            ejb-jar.xml
            MANIFEST.MF

加载该应用程序的最佳方法是什么,以便我可以直接从Eclipse内部运行它?我认为SRC文件夹的位置无关紧要,这是我可以重新配置自己正在努力的描述文件的方式。

您在这里有几个选项:

  • 您可以使用一些"部署"目标来完成您的蚂蚁脚本:
  <target name="deploy">
      <copy todir="${YOUR_JBOSS_DEPLOY_DIRECTORY}" file="${THE_EAR_YOU_JUST_GENERATED}"/>
    </target>

每次您完成更改时都会称呼它。当您尊重原始包装时,这是更保守的选择(并且在JBOSS中应该相当快)。它看起来很丑陋,几乎不与Eclipse整合在一起,但是它是可靠的,并且可以作为Jboss自动删除的。

  • 正如您刚刚指出的那样,另一个选择是在Eclipse中创建一个香草EJB 2项目。只需将您的/src目录粘贴到其中,然后将其添加为Eclipse Project Properties Tab中的源目录。然后,也可以使用Eclipse向导创建一个简单的EAR项目,然后将其运行到您喜欢的服务器中。这样,您将与Eclipse,可辩论,可修改的方式完全顺利地集成...这样的弱点是您不尊重原始包装(好是好是好),并且这种方法几乎无法使用您的连续集成(如果有)

  • 如果您有任何Maven技能,则可以通过M2eclipse为您提供的某些EJB原型创建一个Maven项目来使您的项目做事。您可以将您的/SRC目录目录直接复制到SRC/MAIN/JAVA目录中,以及它具有的任何描述符中的任何描述符中的SRC/MAIN/Resources/Meta-Inf。然后,您可以将其添加到一个Mavenized Ear项目中,该项目将与选项2一样容易运行到您的Eclipse控制的服务器中,这将与您拥有的任何CI解决方案100%兼容

相关内容

  • 没有找到相关文章

最新更新