Weblogic Нет уникального компонента типа [javax.persistence.EntityManager] - PullRequest
1 голос
/ 30 сентября 2010

Я новичок в 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

1 Ответ

0 голосов
/ 29 октября 2010

Я понял, что исходный код был не для 10.3, а для какой-то более ранней версии weblogic, где EjbRef был предоставлен weblogic в weblogic.jar. Но, как кажется, после некоторой версии, вероятно, 10.3.x и выше, weblogic.ejbgen.EjbRef был подвергнут рефакторингу в другой jar, отличный от weblogic.jar

Я взорвал все jar-файлы в папке server / lib и обнаружил, что тот же пакет доступен в wls-api.jar

Моя проблема решена. Прежде чем я смог найти это, я уже удалил зависимость от кода от использования любых специфичных для weblogic jar-файлов.

...