当前位置: 首页 > 知识库问答 >
问题:

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

曾阳飙
2023-03-14

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

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

当我放一个“*”时。war文件到“/apps”目录OpenEJB成功解压缩存档并加载它。但我在日志中没有看到EJB加载。我认为OpenEJB忽略了“ejb jar”。xml“in”/apps/BdbWeb/META-INF“。

测井曲线:

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)时,我看到相应的日志条目。所以打开EJB找到了注释。

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

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

  • BdbWeb.war
    • 页面
        <李> *。jpg
        < li>ejb-jar.xml < li >清单。MF < li>openejb-jar.xml(手工创建;希望这能有所帮助-但事实并非如此)
      • *.css
          • 包含类的目录
          • *.jar文件

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

          要获得OpenEJB使用的给定ejb-jar.xml,我需要做什么?

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

共有1个答案

钱稳
2023-03-14

只需要做一点小小的调整:Java EE 7需要“EJBs in”的位置。WARs "功能是< code>WEB-INF/ejb-jar.xml

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

附注:

    < li >不,不需要< code>openejb-jar.xml < li >也不需要设置< code > openejb . service manager . enabled

您是否在文档中看到了TomEE中需要< code > openejb . service manager . enabled 的内容?如果是这样,一个指向文档的指针就太好了——我会确保它被删除。

 类似资料:
  • 在我的环境中,我有JSF 2.2 CDI Spring 4 Wildfly 9 Spring Data在野生服务器中,我配置了两个数据源: 示例(来自工厂) OracleDS(我创建的这个) 在persitence.xml,我有: 我的applicationContext.xml: http://www . spring framework . org/schema/beans/spring-be

  • 我有一个Spring reactive示例应用程序,它是从Spring Webflux文档中提供的一个示例修改而来的。该应用程序的分支以传统方式使用Spring Boot,并带有嵌入式应用服务器(Netty)。它工作得很好。 在Liberty分支中,我试图将应用程序构建为WAR,并将其部署到Websphere Liberty Profile。除了对构建过程的更改之外,最重要的代码更改是让我的(此处

  • 我不确定我的配置有什么问题,但据我所知,它应该是正确的,尽管spring宣布没有这样的bean定义。我证实了以下几点: null POM: 编辑:从pom中删除spring-data-jpa-starter并重新插入它之后,似乎它现在自动设置密码编码器也有问题。spring在自动驾驶方面的做法是否存在一个普遍的问题?

  • 我在同一个weblogic服务器上部署了两个项目: 带有EJB(@本地,@无状态)的耳朵存档 一个战争档案 我想从war档案中的一个类访问EJB。这通常是可能的吗?怎样

  • 在Azure中,我开发了一个函数(应用服务),当新的csv文件放入特定存储帐户时会触发该函数。该函数是在Azure中开发的,每次上传新的csv文件时都不会出现问题。但是考虑到CI/CD,我决定将我的开发过程从Azure迁移到Visual Studio(2017)。 代码在本地运行没有任何问题,但一旦我将代码发布到Azure(通过VSTS),挑战就开始了。当新的csv文件上传到存储帐户时,触发器似乎