2010-09-29 28 views
1

Je suis nouveau sur EJB3 et travaille sur un code existant.Weblogic Aucun bean de type [javax.persistence.EntityManager]

Nous utilisons weblogic10.3 et le code ci-dessous fonctionne très bien

@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 a le paquet weblogic.ejbgen.EjbRef

Nous commutation maintenant vers weblogic10.3.1 et weblogic .jar n'est plus fourni avec le paquetage weblogic.ejbgen.

Alors, j'ai changé le code à ce (pas encore testé en 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; 

Pour la compatibilité ascendante. Après avoir exécuté le code dans wl10.3 je reçois l'erreur

erreur est - javax.ejb.EJBTransactionRolledbackException: Exception EJB:: com.bea.core.repackaged.springframework.beans.factory.BeanCreationException: Dépendance échec d'injection: ne peut pas trouver la définition de haricots à propos de l'interface de classe javax.persistence.EntityManager; l'exception imbriquée est com.bea.core.repackaged.springframework.beans.factory.NoSuchBeanDefinitionException: Aucun haricot unique de type [javax.persistence.EntityManager] n'est défini: Aucun haricot de type javax.persistence.EntityManager; owner = com.bea.core.repackaged.springframework.context.support.GenericApplicationContext: nom d'affichage

Pourriez-vous aider, quoi ou comment je devrais refactoriser le code. OU qu'est-ce qui manque ici? Tellement que mon code est compatible avec 10.3 et 10.3.1 sans utiliser @EjbRef

Répondre

0

J'ai pensé que le code source n'était pas pour 10.3 mais une version antérieure de weblogic, où dans EjbRef a été fourni par weblogic dans weblogic.jar. Mais comme il semble après une certaine version 10.3.x probablement weblogic.ejbgen.EjbRef a été refactorisé à un autre pot que weblogic.jar

J'ai fait une explosion de tous les jars dans le dossier server/lib et trouvé que le même paquet est disponible dans wls-api.jar

Mon problème est résolu maintenant. Avant que je puisse trouver ceci, j'avais déjà enlevé la dépendance sur le code d'employer n'importe quels dossiers de jar spécifiques de weblogic.