gpt4 book ai didi

java - 通过注入(inject)从 JBoss AS 中的不同 WAR 访问 EJB

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:55 26 4
gpt4 key购买 nike

我的项目结构如下

JBoss AS 7.1.3.Final-redhat-4

包含 EJB 的 war VWeb.war ,部署 VWeb 时我得到以下内容

 java:global/VWeb/QServiceImpl!com.vi.qciapi.QService
java:app/VWeb/QServiceImpl!com.vi.qciapi.QService
java:module/QServiceImpl!com.vi.qciapi.QService
java:global/VWeb/QServiceImpl
java:app/VWeb/QServiceImpl
java:module/QServiceImpl

我有另一场 war (ControlWeb-portlet.war),它是一个liferay项目,我正在尝试从 ControlWeb-portlet 的bean中访问上述EJB。该 bean 是 @ViewScoped 这是根据找到的链接完成的 here

我已经尝试了所有这些组合,但似乎没有任何效果

@Inject
QService qService;

@EJB
QService qService;

@EJB(mappedName="java:global/VWeb/QServiceImpl!com.vi.qciapi.QService")
QService qService;

@EJB(beanInterface=QService.class)
QService qService;

@EJB(mappedName="java:global/VWeb/QServiceImpl!com.vi.qciapi.QService")
QService qService;

我在同一个项目 ControlWeb-portlet 中保留了一个 EJB,其部署如下

java:global/ControlWeb-portlet/CdiServiceImpl!com.clink.cdi.CdiServiceImpl
java:app/ControlWeb-portlet/CdiServiceImpl!com.clink.cdi.CdiServiceImpl
java:module/CdiServiceImpl!com.clink.cdi.CdiServiceImpl
java:global/ControlWeb-portlet/CdiServiceImpl
java:app/ControlWeb-portlet/CdiServiceImpl
java:module/CdiServiceImpl

并且我能够注入(inject) EJB

@EJB
CdiServiceImpl cdiServiceImpl;

从不同的 WAR 访问 EJB 时有什么特定的要求

提前致谢

查理

最佳答案

显然我在 JBoss forums 上回答了这个问题不久以前。由于它在那里被标记为正确答案,我想我也会在这里重现它。

<小时/>

我使用以下方法让它工作:

首先,使用 @Produces 注释将 EJB 定义为资源:

public class Resources {
@Produces
@EJB(lookup = "java:global/.../WhateverService")
private WhateverService whateverService;
}

然后,使用 @Inject 注释将 EJB 资源注入(inject)到您的 Bean 中:

// ...
@Inject
private WhateverService whateverService;
// ...

就像魅力一样。我还使用类似的 CDI View 范围方法。

关于java - 通过注入(inject)从 JBoss AS 中的不同 WAR 访问 EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16524420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com