繁体   English   中英

Weblogic无法查找EJB

[英]Weblogic cannot lookup EJB

javax.naming.NameNotFoundException:尝试在/app/ejb/my-dao-2016.jar/#MyDaoImpl中查找comp / env / myPackage.ServiceImpl / eventQuery时; 剩余名称'comp / env / myPackage / ServiceImpl / eventQuery'

我现在正在使用Weblogic 12.2.1,但遇到此错误(以及应用程序中的每个EJB都存在此错误)。 当我进入部署摘要时,EJB是可见的,关键是它们在my-ear而不是my-dao ,我不知道为什么weblogic在那儿, my-daoeventQuery没有eventQuery 我试图在注释中指定名称/ mappedName / lookup,但没有任何效果。 我认为,如果我设法以某种方式告诉它在/app/ejb/my-ear.jar/app/ejb/my-ear.jar ,而不是在/app/ejb/my-dao-2016.jar那么一切都会好起来的,但是我不知道在哪里要做到这一点。 这是一些代码,但是非常简单,我没有ejb.xml或类似的东西,只有注释。

哦,也许是最重要的事情,一切都可以在Weblogic 12.1.3上完美运行。

public class ServiceImpl implements Service {
    @EJB
    private EventQuery eventQuery;
    ...
}
@Stateless
@Local(EventQuery.class)
public class EventQueryImpl implements EventQuery {
 ...
}
public interface EventQuery {
 ...
}

此问题是由Weblogic中的错误/更改引起的:BUG:22988141-部署应用程序时依赖注入失败

12.2.1和12.1.3之间的行为差​​异来自CDI支持版本:WLS 12.1.3支持CDI 1.0 WLS 12.2.1支持CDI 1.1

有两种解决方案:

将如下所示的bean.xml添加到应用程序中以找到MDB。

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all"
version="1.1">

beans-discovery-mode =“ all”(默认为“带注释”)或修改配置

<domain>
...
<cdi-container>
.
<implicit-bean-discovery-enabled>false</implicit-bean-discovery-enabled>
.
</cdi-container>
...
</domain>

可以通过控制台进行修改。 然后WLS 12.2.1禁用CDI。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM