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

Wildfly/JBoss Java Discussion :

JBoss + EJB + JPA


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 186
    Points : 67
    Points
    67
    Par défaut JBoss + EJB + JPA
    Bonjour,

    J'utiise JBoss 4.4.3 et je veux faire une application en utilisant JPA, EJB3 et JSF pour la présentation, jusqu'à présent je n'arrive pa a déployer mes ejb , j'ai l'erreur suivante "ejb not bound" .

    Comment devrait etre mon persistence.xml?? et aussi mon hsqldb-ds.xml se trouvant dans le dossier deploy de JBOss, sachant que j'utilise une base de données oralce et ke je suis sous eclipse.


    MErci d'avance

  2. #2
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Pour l'ejb not bound, as-tu vérifié dans tes logs si JBoss indique qu'il a pris en compte ton EJB ? Si oui, c'est que ton lookup est erroné.

    Pour le persistence.xml, qq tuto sur JPA devraient te guider.

    hsqldb-ds.xml pour une base Oracle c'est un peu étonnant comme nom. hsqldb est une base de données à part entière.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 186
    Points : 67
    Points
    67
    Par défaut
    pour le hsqlDS.xml, c'est juste un nom , j'ai réussi à trouver la bonne configuration pour oracle.
    Maintenant pour mon lookup, je devrais mettre quoi au juste??

    Merci

  4. #4
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Copie ici des exemples de ton code pour vérifier ce que tu fait

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 186
    Points : 67
    Points
    67
    Par défaut
    j'ai un projet ejb avec une configuration jpa ( pendant la declaration du projet de declare la configuration pour ma base de données).
    ensuite j'obtiens mon fichier persistance.xml qui est vide, je le remplis en mettant ca:

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0"
    	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">
    	<persistence-unit name="test">
    		<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    		<mapping-file> META
    		<jta-data-source>oracleDS</jta-data-source>
    		/orm.xml</mapping-file>
    		<class> persistance.Center</class>
    		<properties>
    			<property name="jdbc.driver" value="" />
    			<property name="jdbc.url" value=" " />
    			<property name="jdbc.password" value="pssword" />
    			<property name="jdbc.user" value="username" />
    		</properties>
    	</persistence-unit>
    </persistence>
    et j'ai mon oracle-ds.xml qui se trouve dans le fichier deploy de jboss comme suit:
    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
    - <datasources>
    - <local-tx-datasource>
      <jndi-name>OracleDS</jndi-name> 
      <connection-url>jdbc:oracle:thin:192.42.172.4:1523:pcardg</connection-url> 
    - <!--  
     
    Here are a couple of the possible OCI configurations. 
     
    <connection-url>jdbc:oracle:oci:@youroracle-tns-name</connection-url> 
     
    or 
     
     
      --> 
      <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> 
      <user-name>username</user-name> 
      <password>pssword</password> 
    - <!--  Checks the Oracle error codes and messages for fatal errors 
      --> 
      <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> 
    - <!--  corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) 
      --> 
    - <metadata>
      <type-mapping>Oracle10g</type-mapping> 
      </metadata>
      </local-tx-datasource>
      </datasources>

    par la suite je crée des entity beans autmatiquement par jpa
    je crée des session beans avec leurs interfaces, et par la suite dans mon projet web qui est lié au proojet ejb
    je crée une classe de test comme suit:
    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
    package com.test;
     
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
     
    public class Tester {
    	public static void main(String[] args) {
    		try {
    			Context context = new InitialContext();
    			TestRemote beanRemote = (TestRemote) context
    					.lookup("TestBean/remote");
    			System.out.println(beanRemote.afficher());
    		} catch (NamingException e) {
    			e.printStackTrace();
    		}
    	}
    }
    Merci bcp

  6. #6
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Pour ma part, je ne saurais pas t'aider sur la partie purement JPA.
    En revanche, je suis étonné de voir des propriétés JDBC dans cette conf. Tout ces paramètres devraient être uniquement dans la déclaration du pool de connexion (oracle-ds.xml).

    Par contre pour ta classe de test, oui je vois le problème.
    Tes EJB sont prévus pour être utilisés dans ton conteneur JBoss, où ils sont déployés. Pour pouvoir les invoquer il faut donc : avoir une instance JBoss qui tourne + se connecter à ce serveur pour y rechercher les EJB. C'est la partie connexion qui ne va pas, car tu ne passes aucun paramètre à la création de l'InitialContext. Donc au lieu de te connecter au JBoss tu cherches dans la JVM qui te sert à lancer le test unitaire.

    PS : Bon pour les EJB3, il est possible de les utiliser hors conteneur JEE, en simple JSE me diraient les spécialistes. Mais il faut surement configurer quelques petites choses, comme au moins la datasource. C'est pourquoi je privilégie les tests dans l'instance JBoss.

  7. #7
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 186
    Points : 67
    Points
    67
    Par défaut
    je commencerais par enlever les parametres de connexion de mon 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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0"
    	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">
    	<persistence-unit name="projetEJB">
    		<non-jta-data-source>java:/OracleDS</non-jta-data-source>
    		<mapping-file> META-INF/orm.xml</mapping-file>
    		<jar-file>projetEJB.jar</jar-file>
    		<class>
    		entities.Center</class>
    		<properties>
    			<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9Dialect" />
    			<property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver" />
    			<property name="hibernate.hbm2ddl.auto" value="create-drop" />
    			<property name="hibernate.show_sql" value="true" />
    		</properties>
    	</persistence-unit>
    </persistence>
    mais pour ce qui concerne la suite j'ai pas compris, sachant que c'est la première fois que je travaille avec les ejb et je n'ai pa trouvé un tutorial qui explique pas à pas l'integration des ejb, jpa et jsf dans un projet.
    Donc si vous pouvez m'aider ou si vous pouvez m'envoyer un tutorial complet.

    Aussi je n'arrive pas a charger le fichier oracle-DS.


    Merci d'avance

  8. #8
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Cherche plutôt un bon tuto sur JPA (FAQ ou forum ???) et oublie JSF dans un premier temps.
    Sinon en 2 phrases pour les EJB. Ce sont des objets qui nécessitent un conteneur pour s'exécuter, conteneur fourni sur les serveurs d'application comme JBoss. Les EJB sont pris en charge et déployés par JBoss et inscrits dans l'arbre JNDI du serveur.
    Pour s'y connecter à distance il faut se connecter à l'arbre JNDI de JBoss (d'où des paramètres de connexion). Il faut y faire un lookup pour trouver l'EJB et obtenir de quoi l'invoquer à distance.

    Le fichier oracle-DS.xml est déployé également par JBoss, il ne faut donc pas essayer de le charge toi-même. JBoss fait comme avec tes EJB, il construit avec un pool de connexion vers la BDD et l'inscrit dans l'arbre JNDI. Ensuite ta config JPA indique où trouver la source de données dans cet arbre JNDI, donc dans "java:/OracleDS".

  9. #9
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 186
    Points : 67
    Points
    67
    Par défaut
    merci pour tes reponses.
    j'ai pu maintenant deployer mon projet dans jboss, et il reconnait "java/oracleDS". mais pour effectuer un test sur les ejb j'ai toujours cette erreur qui persiste "ejb not bound" .
    Dans mon lookup je met juste le nom de mon sessionbean ( "sessionbean/remote")???

    MErci encore

  10. #10
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Essaie de construire ton InitialContext (connexion à l'arbre JNDI) avec les paramètres suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import java.util.Properties;
    import javax.naming.Context;
    import javax.naming.InitialContext;
     
    Properties p = new Properties();
    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
    p.put(Context.PROVIDER_URL, "jnp://localhost:1099");
    Context contexte = new InitialContext(p);

  11. #11
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 186
    Points : 67
    Points
    67
    Par défaut
    Mon problème persiste.
    J'ai toujours le message "Hello not bound", sachant que Hello est mon session bean.

  12. #12
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 186
    Points : 67
    Points
    67
    Par défaut
    j'ai réussi a faire le test, maintenat ca marche mais sans jpa dans mon projet, juste les ejb. une fois j'intègre les fonctionnalités de jpa ou sa configuration mon ejb est not bound??
    j'ai pa compris c du a quoi ce problème???

  13. #13
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Oui étonnant en effet, surtout que JPA n'est pas associé aux EJB Session.
    Tes logs JBoss au démarrage sont-elles différentes en fonction de l'activation ou non de JPA ?

  14. #14
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 186
    Points : 67
    Points
    67
    Par défaut
    tout le problème résidait dans le projet ear qui contenait les autres projets, et aussi la partie cliente qui comportait les interfaces (remote et local).
    Maintenant je nai que mon projet ejb (sans partie cliente générée automatiquement) et j'ai le projet web (projet jsf) qui fai ape aux ejb et qui marche jusqu'à présent.

    Merci énormément pour ton aide
    Merci

    ( je mettrai résolu à ce problème mai c sur j'en rencontrerai certainement d'autres )

  15. #15
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Bonjour,
    Je viens de suivre ce tuto pour faire des EJB pour JBoss dans eclipse.

    http://www.eclipsetotale.com/article...lipse.html#A11


    Tout se passe bien jusqu'au test de l'ejb.
    Je n'ai pas le message de JBoss disant que l'ejb est déployé.

    Et quand je teste le client, j'ai l'erreur suivante :

    javax.naming.NameNotFoundException: PremierEJB3Bean not bound
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
    at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
    at org.jnp.server.NamingServer.lookup(NamingServer.java:267)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
    at sun.rmi.transport.Transport$1.run(Transport.java:159)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
    at java.lang.Thread.run(Thread.java:619)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
    at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.et.ClientPremierEJB3.main(ClientPremierEJB3.java:14)
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  16. #16
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Une première avancée déjà.
    Etant sous ubuntu, il y a une modification à faire dans le fichier
    jboss4/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml

    Il doit contenir :

    <jboss-web>
    <!-- Uncomment the security-domain to enable security. You will
    need to edit the htmladaptor login configuration to setup the
    login modules used to authentication users.
    -->
    <security-domain>java:/jaas/jmx-console</security-domain>
    <depends>jboss.admin:service=PluginManager</depends>
    </jboss-web>
    Ca supprime des erreurs au lancement de JBoss dans eclipse.
    Des INFO [[/web-console]] plus précisément.

    Mais je n'ai toujours pas mon ejb prise en compte.
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  17. #17
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Bon j'arréte pour aujourd'hui.
    Tout ce que j'ai trouvé, c'est que avec un jdk 1.6 on lance JBoss mais il ne reconnait pas l'ejb proposé dans le tuto.
    Avec un jdk 1.5, on lance pas JBoss.

    Je reprecise que mon problème concerne une install linux.
    Sur windows ça marche sans problème.
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  18. #18
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par natoine Voir le message
    Avec un jdk 1.5, on lance pas JBoss.
    Pardon ?

  19. #19
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Dans server overview, si dans edit server runtime je choisis le jre java-1.5, j'ai plein d'erreurs en lançant jboss.
    Si je mets jre java-1.6 ça marche mais je n'arrive pas à déployer mon ejb.

    Dans eclipse sous mon install d'ubuntu.
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/12/2011, 10h18
  2. [JBoss]jboss, ejb et ant
    Par lahiane dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 20/07/2005, 12h31
  3. [EJB][JBOSS] ejb column cannot be null
    Par alfredeu dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 14/04/2005, 09h40
  4. [Jboss][EJB]Demande de confirmation sur la structure.
    Par swirtel dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 17/02/2005, 12h30
  5. [JBOSS - EJB] MonoThreading d'un MDB
    Par seb55555 dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 14/02/2005, 15h56

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