我的主要目标是将为 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”真的有必要吗……?