1

我的主要目标是将为 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 类添加至少一个注释(例如@Remote 或@Stateful)时,我会看到相应的日志条目。于是 OpenEJB 找到了 Annotations。

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

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

  • BdbWeb.war
    • 页面
      • *.jsp
    • 图片
      • *.jpg
    • 元信息
      • ejb-jar.xml
      • 清单文件
      • openejb-jar.xml(手工创建;希望这会有所帮助 - 但事实并非如此)
    • 样式表
      • *.css
    • 网络信息
      • 班级
          • 包含类的目录
        • log4j.xml
        • 休眠.cfg.xml
        • *。罐
      • web.xml
    • 索引.jsp

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

我该怎么做才能获得 OpenEJB 使用的给定 ejb-jar.xml?

顺便说一句:自己创建的“openejb-jar.xml”真的有必要吗……?

4

1 回答 1

2

只需稍作调整:“.WARs 中的 EJB”功能所需的 Java EE 7 位置是WEB-INF/ejb-jar.xml

对我们来说,检查这一点并发出警告是个好主意。我在这里为它创建了一张票

旁注:

  • 不,openejb-jar.xml没有必要
  • openejb.servicemanager.enabled也不需要设置

您是否在文档中看到了openejb.servicemanager.enabledTomEE 所需的内容?如果是这样,指向文档的指针会很棒——我会确保它被删除。

于 2012-08-19T00:24:05.863 回答