Поиск EJB 3.0 в Weblogic 10.3.0 - PullRequest
1 голос
/ 17 января 2011

1: наше приложение работает на сервере приложений Weblogic, версия 10.3.0

2: в нашей системе нам необходимо развернуть EJB, соответствующий спецификации EJB 3.0.

пример кода для нашей среды UAT, как показано ниже:

/*The remote interface*/

package com.serverside.ejb.session;
import javax.ejb.Remote;

@Remote
public interface ASimpleSessionBeanRemote { 

 public void printThis(String print);

}


/*The bean class*/

package com.serverside.ejb.session;

import javax.ejb.Remote;
import javax.ejb.Stateless;

/**
 * Session Bean implementation class ASimpleSessionBean
 */
@Stateless(name="ASimpleSessionBean", **mappedName = "ASimpleSessionEJB"**)
@Remote(ASimpleSessionBeanRemote.class)
public class ASimpleSessionBean implements ASimpleSessionBeanRemote {

    /**
     * Default constructor. 
     */
    public ASimpleSessionBean() {
        // TODO Auto-generated constructor stub
    }

 @Override
 public void printThis(String print) {
  // TODO Auto-generated method stub
  System.out.println("ASimpleSessionBean : "+print); 
 }

}

3: Приведенные выше файлы при упаковке в jar успешно развертываются на сервере.

4: Согласно спецификации EJB 3.0,дескрипторы развертывания не являются обязательными. Итак, в jar не входят ejb-jar.xml и weblogic-ejb-jar.xml

5: см. ниже ссылку на аннотации EJB3.0 в соответствии с приложением WeblogicСерверная документация:

Annotation : @Stateless

Package: javax.ejb.Stateless

Attribute : mappedName

Description : 

Specifies the product-specific name to which the stateless session bean should be mapped.
You can also use this attribute to specify the JNDI name of this stateless session bean. WebLogic Server uses the value of the mappedName attribute when creating the bean’s global JNDI name. In particular, the JNDI name will be:
mappedName#name_of_businessInterface
where name_of_businessInterface is the fully qualified name of the business interface of this session bean.
For example, if you specify mappedName="bank" and the fully qualified name of the business interface is com.CheckingAccount, then the JNDI of the business interface is bank#com.CheckingAccount.

6: в соответствии с приведенной выше спецификацией образец EJB, развернутый на нашем сервере приложений, имеет имя привязки (как отражено в дереве jndi) следующим образом:

ASimpleSessionEJB # com.serverside.ejb.session.ASimpleSessionBeanRemote

JNDI-поиск с использованием этого имени завершается успешно:

InitialContext.doLookup("ASimpleSessionEJB#com.serverside.ejb.session.ASimpleSesionBeanRemote");

7: Теперь нам нужно имя привязки to быть простой строкой, т.е. поиск должен выглядеть примерно так:

InitialContext.doLookup ("ASimpleSessionEJB");

8: для реализации пункта 7 мы попыталисьиспользуя ejb-jar.xml и weblogic-ejb-jar.xml следующим образом ( Извините, не могу понять, как прикреплять / отображать файлы XML ):

9: Несмотря на пункт 8, имя привязки остается следующим:

ASimpleSessionEJB#com.serverside.ejb.session.ASimpleSessionBeanRemote

10: Пожалуйста, сообщите нам о решении и реализации для участия в пункте 7.

Спасибо!

Ответы [ 3 ]

1 голос
/ 02 августа 2013

Это пример конфигурации weblogic-ejb-jar.xml

<wls:weblogic-enterprise-bean>      
     <wls:ejb-name>BasketBean</wls:ejb-name>            
     <wls:jndi-name>BasketBean</wls:jndi-name>
</wls:weblogic-enterprise-bean>

Тогда вы можете сделать jndi lookup следующим образом: InitialContext.doLookup ( "BasketBean");

0 голосов
/ 09 марта 2011

В weblogic-ejb-jar.xml вы сможете добавить раздел weblogic-enterprise-bean с разделом jndi-name.Это прекрасно сработало для меня в версиях Weblogic 10.3.1, 10.3.3 и 10.3.4.Я сталкиваюсь с проблемой на 10.3.0.Кажется, что ejb развернут нормально, и есть запись jndi, но когда я пытаюсь вызвать его, я получаю, что он не может найти класс bean.Не уверен, что является причиной этого, но, надеюсь, раздел jndi-name подойдет, если для вас.

0 голосов
/ 18 января 2011

Можете ли вы как-нибудь вставить свой weblogic-ejb.xml?Элемент имени Atleast.

Вы также можете указать, где вы запускаете этот код поиска?Я надеюсь, что он работает внутри веб-контейнера, иначе вы не увидите weblogic-ejb.xml.:)

Если ничего не помогает, почему бы вам просто не создать файл свойств, в котором вы можете указать свой ключ и длинное удаленное имя, а затем просто использовать этот ключ для поиска?

Cheers.

JS

...