【发布时间】:2015-03-05 23:01:12
【问题描述】:
我使用 weblogic 10.3.6 和 EJB 3.0。我有 EJB 和本地接口。两者都包装在耳内的 ejb-jar 中。
@Local
public interface TestLocal {
...
}
@Stateless
public class TestEJB implements TestLocal {
...
}
要从我的web.xml 中的战争中访问这个 EJB
<ejb-local-ref>
<ejb-ref-name>ejb/TestLocal</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>testpackage.TestLocal</local>
</ejb-local-ref>
查找看起来像
test = (TestLocal) new InitialContext().lookup("java:comp/env/ejb/TestLocal");
一切正常。现在我需要从它打包的同一个 ejb-jar 调用这个 EJB。但我一直有javax.naming.NameNotFoundException。我已经尝试过的:
-
在
ejb-jar.xml在 ejb-jar 中(不是耳朵)<ejb-name>TestEJB</ejb-name> <ejb-local-ref> <ejb-ref-name>TestEJB</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <local>testpackage.TestLocal</local> <ejb-link>myjar.jar#TestEJB</ejb-link> </ejb-local-ref>
以及后续查找
initialContext.lookup("java:comp/env/TestEJB");
initialContext.lookup("TestEJB");
-
在
weblogic-ejb-jar.xml<weblogic-enterprise-bean> <ejb-name>TestEJB</ejb-name> <jndi-name>TestEJB</jndi-name> <local-jndi-name>TestEJB</local-jndi-name> <enable-call-by-reference>True</enable-call-by-reference> </weblogic-enterprise-bean> weblogic-ejb-jar.xml和ejb-jar.xml
你对我做错了什么有任何想法吗?
【问题讨论】:
-
在同一个应用程序中查找 JNDI 时为什么要使用它?你只需要通过@EJB 注入它。
-
我不能使用@EJB,因为我需要来自 POJO 的参考
标签: java jakarta-ee ejb-3.0 jndi weblogic-10.x