在应用程序大战中,TomEE Plus似乎找不到“ejb-jar.xml”

时间:2012-08-17 12:47:37

标签: annotations openejb apache-tomee ejb-jar.xml

我的主要目标是将为WebSphere编写的EJB 2.x应用程序迁移到可部署为Tomcat服务器的Web应用程序。但我希望这几乎是一对一的迁移。

所以我设置了一个TomEE(apache-tomee-plus-1.0.0)并将子目录'/ apps'的配置保留为部署目录。

当我将'* .war'文件放到'/ apps'目录时,OpenEJB成功解压缩归档并加载它。但我看到日志中没有EJB加载。我认为OpenEJB忽略'/ apps / BdbWeb / META-INF'中的'ejb-jar.xml'。

登入剪断:

INFO main OpenEJB.startup.config - Extracting jar: C:\Entwicklung\apache-tomee-plus-1.0.0\apps\BdbWeb.war
INFO main OpenEJB.startup.config - Extracted path: C:\Entwicklung\apache-tomee-plus-1.0.0\apps\BdbWeb
DEBUG main OpenEJB.options - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums, all or NONE or ALL
DEBUG main OpenEJB.options - Using default 'openejb.webservices.enabled=true'
DEBUG main OpenEJB.options - Using default 'tomee.jaxrs.deploy.undeclared=false'
DEBUG main OpenEJB.options - Using default 'openejb.webservices.enabled=true'
DEBUG main OpenEJB.options - Using default 'openejb.check.classloader=false'
INFO main OpenEJB.options - Using 'openejb.descriptors.output=false'
INFO main OpenEJB.options - Using 'openejb.descriptors.output=false'
INFO main OpenEJB.options - Using 'openejb.validation.output.level=VERBOSE'
INFO main OpenEJB.startup.config - Enterprise application "C:\Entwicklung\apache-tomee-plus-1.0.0\apps\BdbWeb.war" loaded.

当我向Java类添加至少一个Annotation(例如@Remote或@Stateful)时,我会看到相应的日志条目。所以OpenEJB找到了Annotations。

但是有很多类和一个大的ejb-jar.xml文件!我想避免手动将正确的注释添加到每个类......!所以我希望你能帮我找到错误。

可能是结构问题? 我在war文件中有以下结构:

  • BdbWeb.war
      • *。JSP
    • 图像
      • *。JPG
    • META-INF
      • ejb-jar.xml中
      • MANIFEST.MF
      • openejb-jar.xml(手工创建;希望这会有所帮助 - 但事实并非如此)
    • 样式表
      • *。CSS
    • WEB-INF
          • 包含
          • 类的目录
        • 的log4j.xml
        • hibernate.cfg.xml中
      • LIB
        • *罐
      • 的web.xml
    • 的index.jsp

我已经将'system.properties'文件中的openejb.servicemanager.enabled属性设置为true,但这只生成了一个没有实体或bean条目的xml文件。

我有什么办法来获取OpenEJB使用的给定ejb-jar.xml?

BTW:自创的'openejb-jar.xml'真的有必要......?

1 个答案:

答案 0 :(得分:2)

只需要进行一些小调整:Java EE 7所需的“.WARs中的EJB”功能位置为WEB-INF/ejb-jar.xml

我们最好检查一下并发出警告。我创建了一个ticket for it here

附注:

  • 不,openejb-jar.xml不是必需的
  • 设置openejb.servicemanager.enabled也不是必需的

您是否在文档中看到某些内容表明TomEE中需要openejb.servicemanager.enabled?如果是这样,指向文档的指针会很棒 - 我会确保将其删除。