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
答案 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。