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 :

Problème de déploiement d'EJB


Sujet :

JOnAS Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Problème de déploiement d'EJB
    Bonjour à tous,

    dans le cadre de la réalisation d'un prototype, j'essaie de créer une application
    qui comprends un SLSB qui alimente une queue et un MDB qui consomme ces informations et les sauvegarde en base grâce à un autre SLSB.
    J'utilise JOnAS 5.1.4 et mon problème est que mes fichiers jonas-ejb-jar.xml ne sont pas pris en compte.

    Pour être plus claire voilà un exemple :
    Dans mon premier SLSB (celui qui alimente la queue) j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @Resource(name = "jms/my_cf")
    protected ConnectionFactory jmsCF;
     
    @Resource(name = "jms/my_queue")
    protected Queue jmsQueue;
    Dans le fichier ejb-jar.xml associé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <resource-ref>
      <res-ref-name>jms/my_cf</res-ref-name>
      <res-type>javax.jms.ConnectionFactory</res-type>
      <res-auth>Container</res-auth>
    </resource-ref>
     
    <resource-env-ref>
      <resource-env-ref-name>jms/my_queue</resource-env-ref-name>
      <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
    </resource-env-ref>
    Et mon fichier jonas-ejb-jar.xml contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <jonas-resource>
      <res-ref-name>jms/my_cf</res-ref-name>
      <jndi-name>JCF</jndi-name>
    </jonas-resource>
     
    <jonas-resource-env>
      <resource-env-ref-name>jms/my_queue</resource-env-ref-name>
      <jndi-name>jms/BYTEL_GF_ExportParc_Queue</jndi-name>
    </jonas-resource-env>
    Lors de l'exécution du code j'obtiens :
    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
     
    java.lang.IllegalArgumentException: Lookup on 'java:comp/env/jms/my_cf' was not found
    	org.ow2.easybeans.container.EasyBeansEJBContext.lookup(EasyBeansEJBContext.java:426)
    	my.test.service.BatchServiceSessionBean.afterCreation(BatchServiceSessionBean.java:115)
    	my.test.service.BatchServiceSessionBean.beanPostConstruct$generated(BatchServiceSessionBean.java)
    	org.ow2.easybeans.gen.invocationcontext.my.test.service.BatchServiceSessionBean.EasyBeansInvocationContextImplbeanPostConstruct$generatedPOSTCONSTRUCT39797.proceed(Unknown Source)
    	org.ow2.jonas.jndi.interceptors.impl.easybeans.ResourceCheckerInterceptor.intercept(ResourceCheckerInterceptor.java:103)
    	org.ow2.easybeans.gen.invocationcontext.my.test.service.BatchServiceSessionBean.EasyBeansInvocationContextImplbeanPostConstruct$generatedPOSTCONSTRUCT39797.proceed(Unknown Source)
    	org.ow2.jonas.ejb.easybeans.JOnASENCInterceptor.intercept(JOnASENCInterceptor.java:67)
    	org.ow2.easybeans.gen.invocationcontext.my.test.service.BatchServiceSessionBean.EasyBeansInvocationContextImplbeanPostConstruct$generatedPOSTCONSTRUCT39797.proceed(Unknown Source)
    	my.test.service.BatchServiceSessionBean.postConstructEasyBeansLifeCycle(BatchServiceSessionBean.java)
    	org.ow2.easybeans.container.AbsFactory.postConstruct(AbsFactory.java:304)
    	org.ow2.easybeans.container.session.SessionFactory.create(SessionFactory.java:187)
    	org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.create(StatelessSessionFactory.java:56)
    	org.ow2.util.pool.impl.JPool.get(JPool.java:256)
    	org.ow2.util.pool.impl.JPool.get(JPool.java:174)
    	org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.getBean(StatelessSessionFactory.java:111)
    	org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.localCall(StatelessSessionFactory.java:130)
    	org.ow2.easybeans.proxy.client.LocalCallInvocationHandler.invoke(LocalCallInvocationHandler.java:173)
    	$Proxy124.submitJob(Unknown Source)
    	my.test.web.MyServlet.doPost(MyServlet.java:22)
    	my.test.web.MyServlet.doGet(MyServlet.java:31)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    Apparemment mon fichier jonas-ejb-jar.xml n'est pas pris en compte, est-ce normal et surtout comment faire pour résoudre mon problème tout en gardant la partie description distinct de la partie déploiement.

    Merci d'avance.

  2. #2
    Membre VIP Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Points : 568
    Points
    568
    Par défaut
    En fait, tu fais un melange entre EJB2 et EJB3.

    En EJB3, le mapping des noms JNDI peut se faire directement dans le descripteur standard ejb-jar.xml. Il faut pour cela utiliser l'element <mapped-name> dans lequel tu mettras le nom JNDI (celui que tu as mis dans jonas-ejb-jar.xml).

  3. #3
    Membre VIP Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Points : 568
    Points
    568
    Par défaut
    J'oubliais, pense à utiliser le schema ejb-jar version 3 (sinon tu auras des erreurs de validation).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    version="3.0"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
     
      <!-- Content here -->
     
    <ejb-jar>

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup effectivement cela fonctionne mieux. Mais c'est quand même dommage de ne plus pouvoir séparer la partie assemblage de la partie déploiement.

    Par contre j'ai encore un problème avec la partie persistence.
    Je ne veux pas avoir à définir les propriétés de la data source dans le fichier persistence.xml, par contre je n'arrive pas à les surcharger en utilisant l' ejb-jar.xml. Un exemple vaut mieux que de long discours voilà mon code

    persistence.xml :
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence
    	xmlns="http://java.sun.com/xml/ns/persistence"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    	version="1.0">
     
    	<persistence-unit name="my-persistence-unit">
     
    		<description>
    			Unite de persistance pour faire des tests.
    		</description>
     
    		<jta-data-source>jdbc/MYSQL-SUR-PC-DE-TAG</jta-data-source>
     
    		<mapping-file>META-INF/my-orm.xml</mapping-file>
     
    		<properties>
    			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
    <!--			<property name="hibernate.show_sql" value="true"/>-->
    			<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
    		</properties>
     
    	</persistence-unit>
     
    </persistence>
    ejb-jar.xml :
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar
    	xmlns="http://java.sun.com/xml/ns/javaee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
    	version="3.0">
     
    	<description>Ensemble d'EJBs fournissant la persistence du service Batch</description>
     
    	<display-name>Batch Service Persistence EJBs</display-name>
     
    	<enterprise-beans>
     
    		<session>
     
    			<ejb-name>Batch-Persistence-JPA-Session</ejb-name>
     
    			<persistence-context-ref>
    				<persistence-context-ref-name>my_pc</persistence-context-ref-name>
    				<persistence-unit-name>my-persistence-unit</persistence-unit-name>
    				<persistence-property>
    					<name>hibernate.show_sql</name>
    					<value>true</value>
    				</persistence-property>
    			</persistence-context-ref>
     
    		</session>
     
    	</enterprise-beans>
     
    </ejb-jar>
    le SLSB contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @PersistenceContext(name = "my_pc")
    	protected EntityManager em;
    et à l'exécution la propriété hibernate.show_sql devrait être à true comme stipulée dans l'ejb-jar.xml mais dans ma console je n'est pas les requêtes SQL.

  5. #5
    Membre VIP Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Points : 568
    Points
    568
    Par défaut
    Ca ressemble a un bug

    Je te propose d'en discuter plus en detail sur la liste easybeans -at- ow2.org (c'est le conteneur EJB3 qui manage tes EJBs). Attention, c'est une liste en anglais...

    De ce que je vois du code, on a pas l'air de prendre en compte ces proprietes.

    Et pour info, ce sont les fichiers XML (ejb-jar.xml compris) qui fournissent des infos de deploiment, pas seulement les descripteurs specifiques des conteneurs.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Ok merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de déploiement des EJB avec netbeans
    Par samoel24 dans le forum Java EE
    Réponses: 0
    Dernier message: 22/01/2012, 23h04
  2. problème de déploiement des EJB avec netbeans
    Par samoel24 dans le forum NetBeans
    Réponses: 0
    Dernier message: 22/01/2012, 20h08
  3. Problème de déploiement [Cannot resolve reference Unresolved Ejb-Ref]
    Par Chabanus dans le forum Glassfish et Payara
    Réponses: 1
    Dernier message: 22/05/2010, 12h17
  4. Réponses: 1
    Dernier message: 14/04/2010, 18h32
  5. [EJB] Problème de déploiement d'un EJB
    Par apoca dans le forum Java EE
    Réponses: 4
    Dernier message: 16/05/2007, 17h18

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