Weblogic无法查找EJB

时间:2016-10-20 11:46:08

标签: java java-ee 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是可见的,点是它们在<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <div id="duplicater"> <label>Number:</label> <input type="number" class="quantity" /> <button class='remove'>Delete</button> <button class="add">add</button> </div> <div id="new_item_details" class="new_item_details"> </div>而不是my-ear下,我不知道为什么weblogic在那里,my-dao与{my-dao无关1}}。我试图在注释中指定名称/ mappedName / lookup,没有任何作用。我认为,如果我以某种方式设法告诉它查看eventQuery,而不是/app/ejb/my-ear.jar那么一切都会好的,但我不知道该怎么做。这里有一些代码,但它们都很简单,我没有/app/ejb/my-dao-2016.jar或类似的东西,只是注释。

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

ejb.xml

1 个答案:

答案 0 :(得分:2)

此问题是由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”(默认为“annotated”)或 修改配置

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

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