无法查找Weblogic11

时间:2011-05-11 15:29:45

标签: java ejb-3.0 weblogic quartz-scheduler lookup

我正在使用Weblogic 11g,EJB3.0。

我试图在同一台机器上从一个部署到另一个部署进行简单的查找。但没有成功。

这是代码:

在一个部署中,这是目标类:

 @CallByReference
 @Stateless (mappedName = "ejb/SyncOperatorsBean")
  @Local ({SyncOperatorsBeanLocal.class})
  @Remote ({SyncOperatorsBeanRemote.class})
  @JNDIName("ejb/SyncOperatorsBean") //added


  public class SyncOperatorsBean implements SyncOperatorsBeanLocal,SyncOperatorsBeanRemote  
 ...

现在,在第二次部署中,这是我进行查找以实现第一次部署的方式:

    SyncOperatorsBeanRemote SyncOperatorsBean = (SyncOperatorsBeanRemote) context
                      .lookup("ejb/SyncOperatorsBean#com.mirs.sbngenerate.beans.SyncOperatorsBeanRemote");

            SyncOperatorsBean.executeSyncOperation();

这是例外:

  javax.naming.NameNotFoundException: While trying to lookup 'ejb.SyncOperatorsBean#com.mirs.sbngenerate.beans.SyncOperatorsBeanRemote' didn't find subcontext 'SyncOperatorsBean#com'. Resolved 'ejb'; remaining name 'SyncOperatorsBean#com/mirs/sbngenerate/beans/SyncOperatorsBeanRemote'
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)

现在我可以在控制台的JNDI TREE中看到bean SyncOperatorsBean。但仍然有上述例外。

我不能使用Injection,因为调用类不在容器内(在quartz工作中)。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

查看部署EJB的受管服务器的JNDI树,看看是否可以找到它。另外,您使用的是管理服务器的URL还是部署EJB的受管服务器?

答案 1 :(得分:0)

我通过取消@JNDI注释解决了这个问题。 并调整查找命令,如:

 SyncOperatorsBeanRemote SyncOperatorsBean =
             (SyncOperatorsBeanRemote) context
             .lookup("ejb/SyncOperatorsBean#com.mirs.sbnsync.beans.SyncOperatorsBeanRemote");
             SyncOperatorsBean.executeSyncOperation();

更多我不得不将目标类jar添加到服务器lib目录。(很奇怪但这就是我必须做的事情)