Не могу найти Weblogic11

Я использую 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)

Теперь я вижу bean-компонент SyncOperatorsBean в дереве JNDI консоли. Но все же есть вышеуказанное исключение.

Я не могу использовать Injection, так как вызывающий класс находится вне контейнера (внутри задания кварца).

Любая идея?


person rayman    schedule 11.05.2011    source источник


Ответы (2)


Взгляните на дерево JNDI для управляемых серверов, на которых развернут EJB, и посмотрите, сможете ли вы его найти. Кроме того, используете ли вы URL-адрес сервера администрирования или управляемого сервера, на котором развернут EJB?

person Jeff West    schedule 11.05.2011
comment
Я смотрел и дерево JNDI и я под Админсервером -> ejb -> SyncOperatorsBean. - person rayman; 11.05.2011
comment
второй вопрос не понял - person rayman; 11.05.2011
comment
Вы используете только один сервер? Если да, то можете не обращать внимания. В противном случае вы должны указать URL-адрес управляемого сервера, на котором развернут EJB. Вы пытались использовать java:comp/env для префикса JNDI? - person Jeff West; 11.05.2011

Я исправил проблему, удалив аннотацию @JNDI. и настройте команду поиска следующим образом:

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

более того, мне пришлось добавить jar целевого класса в директорию lib сервера (странно, но это то, что я должен был сделать)

person rayman    schedule 12.05.2011