IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JOnAS Java Discussion :

[EJB3] Erreur "No jndi name found on class"


Sujet :

JOnAS Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 40
    Points : 22
    Points
    22
    Par défaut [EJB3] Erreur "No jndi name found on class"
    Bonjour,
    J'utilise jonas 5.2.3 sur lequel j'ai déployé une ejb3 (entity). Lorsque je déploiement un deuxième ejb3 (session) mettant en oeuvre le premier, lors du déploiement du deuxième ejb jonas affiche le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InjectionClassAdapter.generateAttributesInjection : No jndi name found on class com/business/ApplicationEmailSender for interface com.persistence.ApplicationFacadeLocal and beanName
    Quelle est la raison de ce problème ? Code source java ? Configuration jonas ? erreur persistence.xml ?
    Merci

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 40
    Points : 22
    Points
    22
    Par défaut
    Bonjour,
    N'y a t-il personne pour m'aider sur ce problème ? Ou la réponse est-elle évidente ?

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    montre déjà le code de l'ejb session et l'/les interface(s) (local / remote)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 40
    Points : 22
    Points
    22
    Par défaut
    Le code du composant ejb3 serveur est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // AbstractApplication_.java
    package com.sample.persistence;
     
    import javax.annotation.Generated;
    import javax.persistence.metamodel.SingularAttribute;
    import jav.java
    ax.persistence.metamodel.StaticMetamodel;
     
    @Generated(value="Dali", date="2012-03-07T13:25:36.028+0100")
    @StaticMetamodel(AbstractApplication.class)
    public class AbstractApplication_ {
    	public static volatile SingularAttribute<AbstractApplication, Long> id;
    	public static volatile SingularAttribute<AbstractApplication, String> version;
    	...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    // AbstractApplication
    package com.sample.persistence;
     
    import javax.persistence.Column;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.MappedSuperclass;
    import javax.persistence.SequenceGenerator;
     
    @MappedSuperclass
    public abstract class AbstractApplication implements java.io.Serializable {
     
    	private static final long serialVersionUID = -2685926095926493948L;
     
    	// Fields
    	private Long id;
    	private String version;
    ...
     
    	// Constructors
    	public AbstractApplication() {
    	}
     
    	// Property accessors
    	@Id
    	@SequenceGenerator(name = "public.application_id_seq", allocationSize = 1)
    	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "public.application_id_seq")
    	@Column(name = "application_id", unique = true, nullable = false)
    	public Long getId() {
    		return this.id;
    	}
     
    	public void setId(Long id) {
    		this.id = id;
    	}
     
    	@Column(name = "application_version", length = 16)
    	public String getVersion() {
    		return this.version;
    	}
     
    	public void setVersion(String version) {
    		this.version = version;
    	}
     
    	...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Application.java
    package com.sample.persistence;
     
    import javax.annotation.Generated;
    import javax.persistence.metamodel.StaticMetamodel;
     
    @Generated(value="Dali", date="2012-02-22T16:21:02.655+0100")
    @StaticMetamodel(Application.class)
    public class Application_ extends AbstractApplication_ {
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    // ApplicationFacade.java
    package com.sample.persistence;
     
    import java.util.List;
    import java.util.logging.Level;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;
     
    @Stateless
    public class ApplicationFacade implements ApplicationFacadeLocal {
    	// property constants
     
    	@PersistenceContext
    	private EntityManager entityManager;
     
    	public void save(Application entity) {
    		RuntimeException re = new RuntimeException("Application item cannot be created");
    		LogUtil.log("Application entity cannot be created", Level.SEVERE, re);
    		throw re;
    	}
     
    	public void delete(Application entity) {
    		RuntimeException re = new RuntimeException("Application item cannot be deleted");
    		LogUtil.log("Application entity cannot be deleted", Level.SEVERE, re);
    		throw re;
    	}
     
    	public Application update(Application entity) {
    		LogUtil.log("updating Application instance", Level.INFO, null);
    		try {
    			Application result = entityManager.merge(entity);
    			LogUtil.log("update successful", Level.INFO, null);
    			return result;
    		} catch (RuntimeException re) {
    			LogUtil.log("update failed", Level.SEVERE, re);
    			throw re;
    		}
    	}
     
    	public Application findById(Long id) {
    		LogUtil.log("finding Application instance with id: " + id, Level.INFO, null);
    		try {
    			Application instance = entityManager.find(Application.class, id);
    			return instance;
    		} catch (RuntimeException re) {
    			LogUtil.log("find failed", Level.SEVERE, re);
    			throw re;
    		}
    	}
     
    	@SuppressWarnings("unchecked")
    	public List<Application> findByProperty(String propertyName, final Object value, final int... rowStartIdxAndCount) {
    		LogUtil.log("finding Application instance with property: " + propertyName + ", value: " + value, Level.INFO, null);
    		try {
    			final String queryString = "select model from Application model where model." + propertyName + "= :propertyValue";
    			Query query = entityManager.createQuery(queryString);
    			query.setParameter("propertyValue", value);
    			if (rowStartIdxAndCount != null && rowStartIdxAndCount.length > 0) {
    				int rowStartIdx = Math.max(0, rowStartIdxAndCount[0]);
    				if (rowStartIdx > 0) {
    					query.setFirstResult(rowStartIdx);
    				}
     
    				if (rowStartIdxAndCount.length > 1) {
    					int rowCount = Math.max(0, rowStartIdxAndCount[1]);
    					if (rowCount > 0) {
    						query.setMaxResults(rowCount);
    					}
    				}
    			}
    			return query.getResultList();
    		} catch (RuntimeException re) {
    			LogUtil.log("find by property name failed", Level.SEVERE, re);
    			throw re;
    		}
    	}
     
    	@SuppressWarnings("unchecked")
    	public List<Application> findAll(final int... rowStartIdxAndCount) {
    		LogUtil.log("finding all Application instances", Level.INFO, null);
    		try {
    			final String queryString = "select model from Application model";
    			Query query = entityManager.createQuery(queryString);
    			if (rowStartIdxAndCount != null && rowStartIdxAndCount.length > 0) {
    				int rowStartIdx = Math.max(0, rowStartIdxAndCount[0]);
    				if (rowStartIdx > 0) {
    					query.setFirstResult(rowStartIdx);
    				}
     
    				if (rowStartIdxAndCount.length > 1) {
    					int rowCount = Math.max(0, rowStartIdxAndCount[1]);
    					if (rowCount > 0) {
    						query.setMaxResults(rowCount);
    					}
    				}
    			}
    			return query.getResultList();
    		} catch (RuntimeException re) {
    			LogUtil.log("find all failed", Level.SEVERE, re);
    			throw re;
    		}
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // ApplicationFacadeLocal.java
    package com.sample.persistence;
     
    import java.util.List;
    import javax.ejb.Local;
     
    @Local
    public interface ApplicationFacadeLocal {
    	public void save(Application entity);
     
    	public void delete(Application entity);
     
    	public Application update(Application entity);
     
    	public Application findById(Long id);
     
    	public List<Application> findByProperty(String propertyName, Object value, int... rowStartIdxAndCount);
     
    	public List<Application> findAll(int... rowStartIdxAndCount);
    }
    J'ai implémenté seulement l'interface locale car tous les composants sont sur le même serveur. Est-ce nécessaire d'utiliser de mettre en place l'interface remote.

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 40
    Points : 22
    Points
    22
    Par défaut
    Bonjour,
    J'ai implémenté l'interface remote et le problème reste entier. Je me demande si ce n'est pas un problème de configuration easybeans.

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 40
    Points : 22
    Points
    22
    Par défaut
    Concernant l'utilisation de l'interface Remote, j'ai l'impression que c'est plus un problème de configuration qu'un problème de code. Les exemples easybeans propose des exemples similaire.

    L'interface d'administration de jonas renseigne les infos suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Names == [ jdbc_xa1 - jdbc_xa2 - JQCF - ejb/mgmt/MEJB - com.sample.persistence.ApplicationFacade_com.sample.persistence.ApplicationFacadeRemote@Remote - 
    com.sample.business.ApplicationEmailSender_com.sample.business.ApplicationEmailSenderLocal@Local - MailCompletedOrderQueue - RMI_SERVER_RPC - OrderApprovalQueue - sampleQueue - CF - 
    OrdersQueue - JOnASJDBC_CP - jdbc_1 - JCF - TCF - jdbc/mcr - JTCF - jrmpconnector_jonas - JOnASJDBC_DM - JOnASJDBC_XA - JOnASJDBC_DS - InvoiceTopic - javax.transaction.TransactionSynchronizationRegistry - 
    joramActivationSpec - com.sample.persistence.ApplicationFacade_com.sample.persistence.ApplicationFacadeLocal@Local - javax.transaction.UserTransaction - EZB_Remote_JNDIResolver - sampleTopic - simpaReplyQ - SupPurchaseOrderQueue - TMFactory - jonas_remoteres - MailQueue - MailOrderApprovalQueue - QCF ]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ejbs == [ jonas:j2eeType=StatelessSessionBean,EJBModule=subPersistence,J2EEServer=jonas,J2EEApplication=null,name=com.sample.persistence.ApplicationFacade ]
    J'ai essayé de spécifier le nom du bean dans l'annotation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @EJB("com.sample.persistence.ApplicationFacade")
    Je développe une autre application avec WebLogic sans soucis. Quelle est la raison de la difficulté de mise en oeuvre avec un configuration par défaut de jonas ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/05/2007, 03h45
  2. [MySQL] erreur 1061 duplicate key name
    Par porco dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/01/2007, 12h52
  3. [4.0] [EJB3] erreur au déploiement
    Par pbdlpc dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 13/12/2006, 16h12
  4. [EJB] invalid Jndi name
    Par boumahdi dans le forum Java EE
    Réponses: 1
    Dernier message: 14/10/2006, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo