Jakarta ee 发布EJB';weblogic中的本地接口
如果只实现本地接口,有没有办法在weblogic中查找EJB 如果我用这个Jakarta ee 发布EJB';weblogic中的本地接口,jakarta-ee,ejb-3.0,weblogic,jndi,Jakarta Ee,Ejb 3.0,Weblogic,Jndi,如果只实现本地接口,有没有办法在weblogic中查找EJB 如果我用这个 @Remote public interface TestSessionRemote { public void businessMethod(); } @Stateless(mappedName = "A") public class TestSessionBean implements TestSessionRemote { public void businessMethod() {
@Remote public interface TestSessionRemote {
public void businessMethod();
}
@Stateless(mappedName = "A")
public class TestSessionBean implements TestSessionRemote
{
public void businessMethod()
{
}
}
可以使用以下名称查找EJB:
"A#" + TestSessionRemote.class.getName()
如果我将TestSessionRemote的注释从@Remote更改为@Local,EJB将从JNDI中消失。有办法解决这个问题吗
编辑:当时我正在使用Weblogic 10.3.x(又名11g)。它应该仍然位于java:comp/env名称空间中。不,这是不可能的。在WebLogic 10.3.x上部署EJB3.0应用程序的上下文中,我一直在研究相同的问题 该应用程序在Oracle application Server 10.1.3和GlassFish 3.x上运行
- OracleAS(OC4J)有一种专有机制,用于使用JNDI查找EJB的本地接口
- GlassFish 3.x使用其可移植JNDI名称语法实现EJB3.1
- 可以使用
注释注入servlet容器(servlet、过滤器等)和其他EJB中的托管类@EJB
- 只有在
或web.xml
ejb jar.xml
mappedName\fullInterface
描述了JNDI查找语法,但没有明确说明JNDI树中只有远程接口名称
更新:我们使用了
web.xml
和ejb jar.xml
中的声明(是的,有些ejb使用实用程序类在JNDI中查找其他ejb)。从一个脚本开始,从源代码生成它们,然后手动编辑它们,直到它们正确为止。不太好,但有必要。更多详细信息,请检查Ejb3SessionBinder中的验证#bindToJNDI()跳过与jndi和Home接口的代码绑定,这意味着:没有本地bean可从jndi树调用,因为它们未注册。如前所述,只有在web.xml或ejb-jar.xml中的ejb本地ref元素中声明了JNDI时,才能从JNDI进行查找
(此信息参考wls 10.3.5)。您能详细说明一下吗?JNDI名称应该是什么样子?我忘了提到我是EJB3的新手,所以我可能遗漏了一些明显的东西……您使用的是什么版本的WebLogic?你想要的在WebLogic12c中很简单。我知道这是一个旧线程。但这句话--“我找到的几乎所有其他东西,包括Oracle文档,都用mappedName#fullInterface描述了JNDI查找语法,但没有明确说明JNDI树中只有远程接口名称。”挽救了我的一天@pharsicle感谢您明确表示清楚!我的上帝…上帝保佑你。。。只有RemoteInterface…Oracle WebLogic员工…这是给你的:见鬼!?!?