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

WAR中的无状态ejb>包到EAR>本地ejb调用

姬阳曜
2023-03-14

我有一个ear,它包含2个war文件,每个war都包含无状态ejb和rest类。接口位于commons中。jar文件。耳朵结构如下所示:

EAR
 -- /lib/commons.jar

 -- rest-1.war
      -- stateless-ejb-1.java
      -- jersey-rest-1.java

 -- rest-2.war
      -- stateless-ejb-2.java
      -- jersey-rest-2.java

我试图使用无状态-ejb-2中的无状态-ejb-1和@Inject注释,但我在部署期间遇到了CDIhtml" target="_blank">部署失败:WELD-001408:未满足的依赖项错误。当我在stateless-EJB-2中使用@EJB时,就部署了ear,但在调用jersey-rest-2时,我遇到了一个远程查找错误。

这是我的方法调用链:

  • 泽西-rest-1

我不想使用远程ejb调用,因为所有东西都打包在同一个ear中(我想使用@Inject而不是@ejb),但它不起作用。

我猜如果我打包了无状态ejb-1。java转换成jar并将其置于EJB/lib下,这样它就可以工作了。但我不想在我的项目中创建一个新模块,只是为了将这个文件打包成单独的jar文件。解决方案是什么?

共有1个答案

顾高翰
2023-03-14

您需要将stateless-ejb-1移动到EAR中的ejb jar模块中。

不同WAR文件中的类永远不会彼此可见,即使是构建到EAR文件中。

 类似资料:
  • 我正在使用Glassfish 4。我有一个耳朵,它有一个战争和一个罐子(与EJB)。 我想从WAR中调用EJB,但不确定是否需要使用本地或远程接口。 在我的罐子里,我的豆子是这样的: 在我的WAR中,我有一个web服务,它看起来如下所示: 这两个都包装成一个耳朵。 当我调用WebService方法时,我得到一个AccessLocalException: 首先: 这是调用EJB的正确方法吗。EAR中

  • 问题内容: 将应用程序部署为EAR(具有1个EJB和1个WAR模块)与单独的模块有什么区别?我想使用GlassFish 3 Web配置文件,但它不支持EAR存档。我可以简单地将EJB和WAR用作单独的模块吗?还有其他选择吗? 问题答案: 3种部署变体之间似乎有些混淆: 包含EJB和WEB模块的EAR 部署单独的EJB模块和单独的WEB模块 部署包含EJB类或EJB jar的WEB模块。 在第一种情

  • 问题内容: 我刚刚开始阅读EJB。 即使我冒险尝试,基于我对它们的了解,我也会有一些疑问。 使用EJB的应用程序是否总是必须部署为EAR? 是否可以像其他其他Java Web项目一样使用ECLIPSE而不使用ANT来部署包含EJB的应用程序? 问题答案: 1.使用ejb的应用程序是否必须始终部署为EAR? 没有。 EJB模块被组装成一个JAR,可以将其命名为myapp-ejb.jar。 它包含EJ

  • 在EJB3.1中,在无状态EJB中有一个同步块可以吗? 同步块用于在出现连接错误时更新连接。

  • 场景:EjbA和EjbB都是远程无状态会话bean。 对b的这些方法调用中的任何一个都可以发生在集群环境中的不同节点/VM上,这是否正确? 甚至连对method1的调用? 我的意思是,如果一些客户端调用方法foo,是否会发生这样的情况:在这个事务中,在node1上调用方法1,下一个对方法1的调用,在同样的foo()调用期间,转到node2上的Ejb实例? 解释下面引用的"Enterprise Ja

  • 我使用的是WildFly 8.1.0最终版本。 我的应用程序是一个部署在WAR中的JavaEE web应用程序(没有EJB模块.ear)。 我想使用JNDI以编程方式调用带有他的名字的本地EJB。 EJB只是用@无状态注释(没有本地或远程接口) 我尝试以下功能: 但它不起作用(显然是针对远程EJB的) 但我没有找到任何与WildFly发生战争的本地EJB示例,我也不知道该怎么做,我不经常使用JND