代码之家  ›  专栏  ›  技术社区  ›  Zombies

ant:需要帮助将EJB及其依赖项打包到EAR中吗

  •  3
  • Zombies  · 技术社区  · 15 年前

    我的目标非常简单:使用ant构建一个EAR,其中包含1个EJB和1个jar,其中包含所有依赖项。这个名为common.jar的jar中有供应商jar文件以及EJB依赖的其他xml文件,在运行时需要能够看到这些文件。。。。

    到目前为止,我把所有东西都正确地包装成这样的耳朵:

    EARFILE.ear
     -EJBFILE.jar
       /META-INF
         -MANIFEST.MF
     -common.jar
       /META-INF
         -MANIFEST.MF
       /lib
         -(all vendor jars inside here)
       -(All the xml config files are inside the root of the common.jar)
    

    在MANIFEST.MF中

    Class-path: ../../common.jar
    

    在MANIFEST.MF中 公用.jar 是。。。

    Class-path: ../lib/some_common.jar
    

    当我部署它时,当我尝试启动服务器时,appserver(websphere)找不到JAR文件。我得到了 ClassDefNotFoundError 因为当我尝试启动实例时,EJB中的类找不到供应商JAR文件。不过,我知道common.jar的设置是正确的,否则EJB就不会编译了,因为它需要在javac的类路径上有这些供应商jar。

    所以我想知道的是:

    1. 如何让运行时正确查看供应商jar文件。
    2. EJB能够在运行时看到xml文件吗?我之所以担心这一点,是因为这些xml文件位于EJB外部,在EAR中的jar中,它甚至不是一个模块,而只是EAR中的jar。
    1 回复  |  直到 15 年前
        1
  •  1
  •   mlschechter    15 年前

    在遇到类似问题的基础上,我可以提出一些改进建议。

    1. appxml ear deployment descriptor (通常称为 application.xml ); 还包括对如下所述绑定的供应商JAR文件的引用
    2. EJBFILE.jar
    3. 配置XML文件可以放在 EJBFILE.jar文件 config /config/filename.xml .

    应用程序.xml 文件将告诉WebSphere在哪里可以找到JAR文件。应用程序服务器中的类路径遍历与编译器中的类路径遍历不同,JBoss教会了我一条艰难的道路。