Я новичок в EJB3 и работаю над существующим кодом.
Мы используем weblogic10.3, и приведенный ниже код работает нормально
@Stateless(mappedName="ProcessIssacIncomingMessage")
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=TransactionAttributeType.REQUIRED)
@EjbRef(name="Database" jnod-name="Database")
public class IncomingMessageBean implements IncomingMessageRemote, IncomingMessageLocal {
...
@Ejb
private Database<Object> databaseBean;
в 10.3 weblogic.jar содержит пакет weblogic.ejbgen.EjbRef
Теперь мы переключаемся на weblogic10.3.1 и weblogic.jar больше не поставляется с пакетом weblogic.ejbgen.
Итак, я изменил код на этот (еще не протестирован в 10.3.1)
@Stateless(mappedName="ProcessIssacIncomingMessage")
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=TransactionAttributeType.REQUIRED)
@EjbRef(name="Database" jnod-name="Database") --- removed this line
public class IncomingMessageBean implements IncomingMessageRemote, IncomingMessageLocal {
...
@Ejb(mappedName="Database") -- added the mapped name here.
private Database<Object> databaseBean;
Для обратной совместимости. После запуска кода в wl10.3 я получаю ошибку
Ошибка: - javax.ejb.EJBTransactionRolledbackException
: EJB-исключение:: com.bea.core.repackaged.springframework.beans.factory.BeanCreationException
: Ошибка внедрения зависимости: не удается найти определение компонента о интерфейсе класса javax.persistence.EntityManager
; вложенное исключение: com.bea.core.repackaged.springframework.beans.factory.NoSuchBeanDefinitionException
: не определен уникальный компонент типа [javax.persistence.EntityManager
]: нет компонентов типа javax.persistence.EntityManager
; владелец = com.bea.core.repackaged.springframework.context.support.GenericApplicationContext
: отображаемое имя
Может ли кто-нибудь помочь, что / как я должен рефакторинг кода. ИЛИ чего здесь не хватает? Так что мой код совместим как с 10.3, так и с 10.3.1 без использования @ EjbRef