2010-09-29 3 views
1

Я новичок в EJB3 и работаю над кодом exisitng.Weblogic Нет уникального компонента типа [javax.persistence.EntityManager]

Мы используем 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: Dependency недостаточность инъекции: не может найти определение бина о классе интерфейса 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

ответ

0

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

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

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