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 :

Débutant avec JOnAS sous Eclipse


Sujet :

JOnAS Java

  1. #1
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 593
    Points : 18 498
    Points
    18 498
    Par défaut Débutant avec JOnAS sous Eclipse
    Bonjour, je débute Jonas et j'ai beaucoup de mal à commencer.

    J'ai installé Jonas et Wamp.
    Je peux accéder à l’administration Jonas à cette adresse : http://localhost:9000/jonasAdmin.
    J'ai créé une base de donnée MySQL : "MaBase".

    Dans \JOnAS_5\lib\ext\ j'ai collé le fichier mysql_connector_java_5.1.26_bin.jar.
    Dans \JOnAS_5\deploy\ j'ai fais une copie de jdbc-ds.xml en le modifiant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <datasource-configuration>
    	<name>MaBase</name>
    	<url>jdbc:mysql://localhost/MaBase</url>
    	<classname>org.gjt.mm.mysql.Driver</classname>
    	<username>root</username>
    	<password></password>
    	<!-- Same mapper than HSQL -->
    	<mapper>rdb.mysql</mapper>
    </datasource-configuration>
    Avec l'url jdbc:mysql://localhost/MaBase la console Jonas me dit :
    JOnAS_5\repositories\maven2-internal\org\ow2\jonas\jonas-jca-jdbc-dm\5.3.0\jonas-jca-jdbc-dm-5.3.0.rar -> G:\JOnAS_\work\deployer\datasources\jonas\ds-MaBase-260674438761083224.rar
    2013-10-12 11:13:26,476 : RARDeployer.doDeploy : Deploying ds-MaBase-260674438761083224.rar
    2013-10-12 11:13:26,934 : Rar.processRar : ds-MaBase-260674438761083224.rar available
    Alors qu'avec : jdbc:mysql://localhost/MaBase:3306 j'obtiens :
    Caused by: org.ow2.jonas.resource.ResourceServiceException : Error when deploying the rar file: G:\JOnAS_5\work\deployer\datasources\jonasds-MaBase-5476410159239028043.rar: org.ow2.jonas.resource.ResourceServiceException : Error processing Rar: The connection could not be llocated: Unknown database 'mabase:3306': javax.resource.spi.ResourceAllocationException: The connection could not be allocated: Unknown database 'mabase:3306'
    Est-ce que ça peut fonctionner si je ne précise pas le port ?
    Est-ce normal que dans l'administration Jonas (JDBC Connection Leaks), il y ait écrit : No Active Connections ?
    Comment tester si le lien entre Jonas et la base de donnée est correctement réalisé ?

    J'utilise eclipse-jee-kepler-SR1-win32 et j'ai installé Jope en passant par Help -> Install New Software -> http://jope.ow2.org/update/jope/.
    L'installation c'est passé correctement et pourtant j'ai l'impression que rien n'a changé.

    Connaissez-vous des tutoriaux qui expliquent comment début Jonas avec Eclipse ?
    Quel type de projet dois-je créer ?

    J’espère que vous pouvez me donner quelques conseils.
    D'avance merci.
    Au revoir.

    Edit : je vais essayer ce tutorial :
    Création d'un premier EJB avec Eclipse et JOnAS
    Et la FAQ J2EE

    Edit : Pour préciser, après avoir installé Jope, je n'ai pas Jonas dans les perspective, je ne peux pas créer de projet Jonas et je n'ai pas l'onglet Jonas dans les préférences.
    Keith Flint 1969 - 2019

  2. #2
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 593
    Points : 18 498
    Points
    18 498
    Par défaut
    Sous OpenSuse j'ai l'erreur :
    Cannot complete the install because one or more required items could not be found.
    Software currently installed: Jonas WTP Adapter 5.1.2 (org.ow2.jonas.wtp.adapter.feature.group 5.1.2)
    Missing requirement: JOnAS WTP Adapter Plug-in 5.1.2 (org.ow2.jonas.wtp.adapter 5.1.2) requires 'bundle org.eclipse.jst.common.frameworks 0.0.0' but it could not be found
    Cannot satisfy dependency:
    From: Jonas WTP Adapter 5.1.2 (org.ow2.jonas.wtp.adapter.feature.group 5.1.2)
    To: org.ow2.jonas.wtp.adapter [5.1.2]
    Keith Flint 1969 - 2019

  3. #3
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut
    Alors dans le répertoire conf, edit le fichier jonas.properties , tu cherche la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jonas.service.dbm.datasources
    Ici tu me le nom du fichier de configuration de ta datasource. Par exemple MySQL pour toi. Attention à la casse. Cela doit etrelre même que le fichier de conf.

    Ensuite dans le répertoire conf, edit le fichier MySQL.properties. Il faut renseigner les champs name, url, classname, username, password. Laisse le champ mapper par default. datasource.name est le nom de la datasource utilisée dans ton code java.

    Dans le fichier jonas.properties vérifie la ligne ( ligne 83 du fichier chez moi) . Il s'agit de la liste des services démarrés par jonas. Tu doit enlever le service db et mettre dbm à la place.

    Voila tu devrait avoir une datasource de fonctionnel. Pense à lire la doc sur le site officiel, c'est un peut le bordel mais elle est plutôt complète.

    Sinon, d'expérience Jonas est loin d'être le meilleur serveur JEE. Il manque de soutient. aucun comunauté pour t'aider. Bon chance si tu n'a pas le choix de changer

  4. #4
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 593
    Points : 18 498
    Points
    18 498
    Par défaut
    Merci pour la réponse.
    Je vais essayer ça pour ma base de données.

    En fait JOPE était bien installé depuis le début.
    Dès qu'on peut choisir JOnAS Runtime 5.x c'est bon.
    Il faut faire un Enteprise Application Project.
    Puis un EJB Project rattaché au EAR.
    Et ensuite on peut faire un Dynamic Web Project rattaché lui aussi au EAR.
    Ensuite on peut exporter l'EAR dans le dossier deploy.

    Il y a quelques années j'ai eu des cours de JEE avec Tomcat.
    Mais depuis le temps j'ai tout oublié.
    Aujourd'hui je commence des cours de JEE avec Jonas.

    Est-ce qu'il y a beaucoup de différence une fois qu'ils sont installé et que ça fonctionne ?
    Keith Flint 1969 - 2019

  5. #5
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut
    Euh, normalement Tomcat n'est pas un conteneur JEE. D'ailleurs Jonas embarque tomcat comme serveur web.

    Après avec les EJB lite, tu peux utiliser les EJB dans un war avec tomcat.

    Sinon un bug que j'ai remarqué avec Eclipse et jonas, c'est que lors du déploiement, la structure de l'EAR spécifier dans Eclipse dans le menu référence assembly de l'EAR n'est pas respecté par Jonas ce qui peux entraîner dans ClassNotFoundException.

  6. #6
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 593
    Points : 18 498
    Points
    18 498
    Par défaut
    Merci.

    J'ai réussi à connecté là base de donnée du serveur Wamp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <datasource-configuration>
    	<name>maBase</name>
    	<url>jdbc:mysql://localhost:3306/maBase</url>
    	<classname>org.gjt.mm.mysql.Driver</classname>
    	<username>root</username>
    	<password></password>
    	<mapper>rdb.mysql</mapper>
    </datasource-configuration>
    Il faut faire un clique droit sur le projet -> Configure -> Convert To JPA Project.
    Il faut cocher JPA, là il faut créer une connexion MySQL.

    Par contre j'ai des erreurs :
    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
    2013-10-28 09:36:19,902 : DeployableMonitor.deploy : DeployerException : Cannot deploy the deployable 'EJB3DeployableImpl[archive=G:\JOnAS_5\deploy\PAD_EJB.jar]'
    org.ow2.util.ee.deploy.api.deployer.DeployerException: Cannot deploy the given EJB 'EJB3DeployableImpl[archive=G:\JOnAS_5\deploy\PAD_EJB.jar]'.
    	at org.ow2.jonas.ejb.easybeans.EasyBeansDeployer.doDeploy(EasyBeansDeployer.java:219)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer$1.execute(AbsDeployer.java:85)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer$1.execute(AbsDeployer.java:83)
    	at org.ow2.util.execution.helper.RunnableHelper.execute(RunnableHelper.java:69)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer.deploy(AbsDeployer.java:83)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployerList.deploy(AbsDeployerList.java:44)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer.doDeploy(AbsDeployer.java:225)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer.deploy(AbsDeployer.java:205)
    	at org.ow2.util.ee.deploy.impl.deployer.DeployerManager.deployOneTypeList(DeployerManager.java:231)
    	at org.ow2.util.ee.deploy.impl.deployer.DeployerManager.doDeploymentOperation(DeployerManager.java:198)
    	at org.ow2.util.ee.deploy.impl.deployer.DeployerManager.deploy(DeployerManager.java:212)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.deploy(DeployableMonitor.java:644)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.detectNewArchives(DeployableMonitor.java:557)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.checkNewArchives(DeployableMonitor.java:380)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.run(DeployableMonitor.java:260)
    Caused by: org.ow2.easybeans.api.EZBContainerException: Cannot analyze the persistence.xml file in the archive
    	at org.ow2.easybeans.container.JContainer3.enhance(JContainer3.java:619)
    	at org.ow2.easybeans.container.JContainer3.start(JContainer3.java:443)
    	at org.ow2.jonas.ejb.easybeans.EasyBeansDeployer.doDeploy(EasyBeansDeployer.java:216)
    	... 14 more
    Caused by: org.ow2.easybeans.persistence.api.PersistenceXmlFileAnalyzerException: Cannot parse the URL 'file:/G:/JOnAS_5/work/ejb3s/jonas/PAD_EJB_2013.10.28-09.36.14.jar/META-INF/persistence.xml'.
    	at org.ow2.easybeans.persistence.xml.PersistenceXmlFileAnalyzer.analyzePersistenceXmlFile(PersistenceXmlFileAnalyzer.java:123)
    	at org.ow2.easybeans.container.JContainer3.enhance(JContainer3.java:605)
    	... 16 more
    Caused by: org.ow2.easybeans.persistence.xml.JPersistenceUnitInfoException: Cannot parse the url
    	at org.ow2.easybeans.persistence.xml.JPersistenceUnitInfoLoader.loadPersistenceUnitInfoImplList(JPersistenceUnitInfoLoader.java:107)
    	at org.ow2.easybeans.persistence.xml.JPersistenceUnitInfoHelper.getPersistenceUnitInfoList(JPersistenceUnitInfoHelper.java:118)
    	at org.ow2.easybeans.persistence.xml.PersistenceXmlFileAnalyzer.analyzePersistenceXmlFile(PersistenceXmlFileAnalyzer.java:121)
    	... 17 more
    Caused by: org.ow2.easybeans.util.xml.DocumentParserException: Cannot detect the version of the Persistence schema from the URL 'file:/G:/JOnAS_5/work/ejb3s/jonas/PAD_EJB_2013.10.28-09.36.14.jar/META-INF/persistence.xml'
    	at org.ow2.easybeans.util.xml.DocumentParser.getDocument(DocumentParser.java:102)
    	at org.ow2.easybeans.persistence.xml.JPersistenceUnitInfoLoader.loadPersistenceUnitInfoImplList(JPersistenceUnitInfoLoader.java:105)
    	... 19 more
    Le fichier persistence.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    	<persistence-unit name="PAD_EJB">
    		<class>database.personnes.Personne</class>
    		<class>model.Personne</class>
    	</persistence-unit>
    </persistence>
    Le fichier persistence.xml existe :
    G:\JOnAS_5\deploy\PAD_EJB.jar\META-INF\persistence.xml.

    Est-ce que vous avez une solution pour réparer ce problème ?

    Je dois réaliser un tableau blanc avec un chat.
    Est-ce que vous connaissez un tutorial de chat en J2EE, avec une interface web.

    ========================================================
    Edit : Je pense m'approcher de la source du problème.
    Ça vient de JPA2 si j'ai bien compris ce post :
    http://www.developpez.net/forums/d10...r/#post5884354
    Dans /cong/jonas.properties :
    # Set the JPA provider among the following list
    # For Hibernate : hibernate3.6, hibernate4.1
    # For EclipseLink : eclipselink1.1, eclipselink2.2, eclipselink2.3, eclipselink2.4
    #
    # Note that some JPA providers are not embedded in the JOnAS package,
    # and, if needed, are automatically downloaded from a maven repository.
    # So, if you change this default value, and if you use a proxy,
    # do not forget to set the 'http_proxy' environment variable.
    jonas.service.ejb3.jpa.provider hibernate
    J'ai essayé hibernate4.1 et j'ai des erreurs différentes.
    J'ai du essayer tout les providers et aucun ne me permet de déployer mon JPA Project.
    Les erreurs sont parfois différentes.
    Keith Flint 1969 - 2019

  7. #7
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 593
    Points : 18 498
    Points
    18 498
    Par défaut
    En fait je crois que par défaut c'est hibernate4.1.

    Je l'ai remis, mais je n'arrive pas à reproduire l'erreur...

    Edit :
    J'ai peut être trouvé l'erreur, au moment de convertir le projet en JPA Project dans le choix de la platforme j'ai :
    Generic 2.1
    EclipseLink 2.5x.

    Mais je n'ai pas hibernate 4.1.

    Edit :
    J'ai installé JBoss Tools pour avoir :
    Hibernate(JPA2.1) dans le choix de la plateforme et je retrouve exactement la même erreur qu'au début :
    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
    2013-10-29 17:38:01,089 : EarDeployer.doDeploy : Deploying 'EAR 'PAD.ear', application.xml  provided, Content: , 1 EJB-JAR(s) {EJB.jar}, 1 Libraries {EJBClient.jar}'
    2013-10-29 17:38:01,149 : EarDeployer.doDeploy : Cannot start container G:\JOnAS_5\work\apps\jonas\PAD_2013.10.29-17.37.59.ear\EJB.jar
    org.ow2.easybeans.api.EZBContainerException: Cannot analyze the persistence.xml file in the archive
    	at org.ow2.easybeans.container.JContainer3.enhance(JContainer3.java:619)
    	at org.ow2.easybeans.container.JContainer3.start(JContainer3.java:443)
    	at org.ow2.jonas.ear.internal.EarDeployer.doDeploy(EarDeployer.java:854)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer$1.execute(AbsDeployer.java:85)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer$1.execute(AbsDeployer.java:83)
    	at org.ow2.util.execution.helper.RunnableHelper.execute(RunnableHelper.java:69)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer.deploy(AbsDeployer.java:83)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployerList.deploy(AbsDeployerList.java:44)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer.doDeploy(AbsDeployer.java:225)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer.deploy(AbsDeployer.java:205)
    	at org.ow2.util.ee.deploy.impl.deployer.DeployerManager.deployOneTypeList(DeployerManager.java:231)
    	at org.ow2.util.ee.deploy.impl.deployer.DeployerManager.doDeploymentOperation(DeployerManager.java:198)
    	at org.ow2.util.ee.deploy.impl.deployer.DeployerManager.deploy(DeployerManager.java:212)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.deploy(DeployableMonitor.java:644)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.detectNewArchives(DeployableMonitor.java:557)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.checkNewArchives(DeployableMonitor.java:380)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.run(DeployableMonitor.java:260)
    Caused by: org.ow2.easybeans.persistence.api.PersistenceXmlFileAnalyzerException: Cannot parse the URL 'jar:file:/G:/JOnAS_5/work/apps/jonas/PAD_2013.10.29-17.37.59.ear/EJB.jar!/META-INF/persistence.xml'.
    	at org.ow2.easybeans.persistence.xml.PersistenceXmlFileAnalyzer.analyzePersistenceXmlFile(PersistenceXmlFileAnalyzer.java:123)
    	at org.ow2.easybeans.container.JContainer3.enhance(JContainer3.java:605)
    	... 16 more
    Caused by: org.ow2.easybeans.persistence.xml.JPersistenceUnitInfoException: Cannot parse the url
    	at org.ow2.easybeans.persistence.xml.JPersistenceUnitInfoLoader.loadPersistenceUnitInfoImplList(JPersistenceUnitInfoLoader.java:107)
    	at org.ow2.easybeans.persistence.xml.JPersistenceUnitInfoHelper.getPersistenceUnitInfoList(JPersistenceUnitInfoHelper.java:118)
    	at org.ow2.easybeans.persistence.xml.PersistenceXmlFileAnalyzer.analyzePersistenceXmlFile(PersistenceXmlFileAnalyzer.java:121)
    	... 17 more
    Caused by: org.ow2.easybeans.util.xml.DocumentParserException: Cannot detect the version of the Persistence schema from the URL 'jar:file:/G:/JOnAS_5/work/apps/jonas/PAD_2013.10.29-17.37.59.ear/EJB.jar!/META-INF/persistence.xml'
    	at org.ow2.easybeans.util.xml.DocumentParser.getDocument(DocumentParser.java:102)
    	at org.ow2.easybeans.persistence.xml.JPersistenceUnitInfoLoader.loadPersistenceUnitInfoImplList(JPersistenceUnitInfoLoader.java:105)
    	... 19 more
    2013-10-29 17:38:01,150 : ServerJNDIResolver.removeContainerResolver : Cannot remove the given container resolver as it is not present.
    2013-10-29 17:38:01,152 : DeployableMonitor.deploy : DeployerException : Cannot deploy the deployable 'EAR 'PAD.ear', application.xml  provided, Content: '
    org.ow2.util.ee.deploy.api.deployer.DeployerException: Container 'G:\JOnAS_5\work\apps\jonas\PAD_2013.10.29-17.37.59.ear\EJB.jar' has failed
    	at org.ow2.jonas.ear.internal.EarDeployer.doDeploy(EarDeployer.java:865)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer$1.execute(AbsDeployer.java:85)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer$1.execute(AbsDeployer.java:83)
    	at org.ow2.util.execution.helper.RunnableHelper.execute(RunnableHelper.java:69)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer.deploy(AbsDeployer.java:83)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployerList.deploy(AbsDeployerList.java:44)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer.doDeploy(AbsDeployer.java:225)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer.deploy(AbsDeployer.java:205)
    	at org.ow2.util.ee.deploy.impl.deployer.DeployerManager.deployOneTypeList(DeployerManager.java:231)
    	at org.ow2.util.ee.deploy.impl.deployer.DeployerManager.doDeploymentOperation(DeployerManager.java:198)
    	at org.ow2.util.ee.deploy.impl.deployer.DeployerManager.deploy(DeployerManager.java:212)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.deploy(DeployableMonitor.java:644)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.detectNewArchives(DeployableMonitor.java:557)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.checkNewArchives(DeployableMonitor.java:380)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.run(DeployableMonitor.java:260)
    Caused by: org.ow2.easybeans.api.EZBContainerException: Cannot analyze the persistence.xml file in the archive
    	at org.ow2.easybeans.container.JContainer3.enhance(JContainer3.java:619)
    	at org.ow2.easybeans.container.JContainer3.start(JContainer3.java:443)
    	at org.ow2.jonas.ear.internal.EarDeployer.doDeploy(EarDeployer.java:854)
    	... 14 more
    Caused by: org.ow2.easybeans.persistence.api.PersistenceXmlFileAnalyzerException: Cannot parse the URL 'jar:file:/G:/JOnAS_5/work/apps/jonas/PAD_2013.10.29-17.37.59.ear/EJB.jar!/META-INF/persistence.xml'.
    	at org.ow2.easybeans.persistence.xml.PersistenceXmlFileAnalyzer.analyzePersistenceXmlFile(PersistenceXmlFileAnalyzer.java:123)
    	at org.ow2.easybeans.container.JContainer3.enhance(JContainer3.java:605)
    	... 16 more
    Caused by: org.ow2.easybeans.persistence.xml.JPersistenceUnitInfoException: Cannot parse the url
    	at org.ow2.easybeans.persistence.xml.JPersistenceUnitInfoLoader.loadPersistenceUnitInfoImplList(JPersistenceUnitInfoLoader.java:107)
    	at org.ow2.easybeans.persistence.xml.JPersistenceUnitInfoHelper.getPersistenceUnitInfoList(JPersistenceUnitInfoHelper.java:118)
    	at org.ow2.easybeans.persistence.xml.PersistenceXmlFileAnalyzer.analyzePersistenceXmlFile(PersistenceXmlFileAnalyzer.java:121)
    	... 17 more
    Caused by: org.ow2.easybeans.util.xml.DocumentParserException: Cannot detect the version of the Persistence schema from the URL 'jar:file:/G:/JOnAS_5/work/apps/jonas/PAD_2013.10.29-17.37.59.ear/EJB.jar!/META-INF/persistence.xml'
    	at org.ow2.easybeans.util.xml.DocumentParser.getDocument(DocumentParser.java:102)
    	at org.ow2.easybeans.persistence.xml.JPersistenceUnitInfoLoader.loadPersistenceUnitInfoImplList(JPersistenceUnitInfoLoader.java:105)
    	... 19 more
    2013-10-29 17:38:01,137 : Enhancer.enhance : Beans found are [PersonnesManagerBean]
    2013-10-29 17:38:01,151 : Embedded.removeContainer : Container 'G:\JOnAS_5\work\apps\jonas\PAD_2013.10.29-17.37.59.ear\EJB.jar' removed
    =======================================================
    Dans persistence.xml j'ai changé la version, la version était 2.1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <persistence 
    	version="2.1" 
    	xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    En 2.0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <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_2_0.xsd"
                 version="2.0">
    Je crois que l'EAR c'est déployé avec succès.
    Keith Flint 1969 - 2019

  8. #8
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut
    Désoler, je n'ai pas eu le temps de te répondre aujourd'hui. Je voit que tu as réussie à t'en sortir quand même.

    Pour Hibernate. n'oublie pas de préciser un PersistenceProvider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <provider>org.hibernate.ejb.HibernatePersistence</provider>
    Pour EclipseLink, il s'agit de :
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    .

    Dans le cas d'hibernate, tu as le PeristenceProvider permettant d'utiliser hibernate en mode JPA( celui que j'ai indiqué) et tu as celui qui permet de faire du Hibernate pur.

    Dans le cas de l'utilisation d'une datasource, configurée sur le serveur, il faut aussi la définir dans le persistence.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <persistence-unit name="manager1" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>TaDataSource</jta-data-source>
        <!-- ... !-->
    </persistence-unit>

  9. #9
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 593
    Points : 18 498
    Points
    18 498
    Par défaut
    Merci pour cette réponse.

    J'ai vraiment beaucoup de mal.
    Je ne connais pas bien la structure à utiliser.

    Là pour l'instant j'aimerai pouvoir entrer un texte dans une input dans une page JSP et enregistrer cet input dans la base de données.
    Je pense pouvoir le faire avec les informations que j'ai.

    Ensuite il faut que je trouve comme faire un chat.
    Il faudrait qu'a chaque fois qu'un texte est entré mettre à jour l'affichage pour tout ceux qui sont dans le chat.
    Par contre là j'ai aucune idée de comment faire.

    Edit :
    Du coup j'ai récupéré ça :
    http://www.web-tech-india.com/software/jsp_chat.php

    Ça tourne sous Jonas c'est chouette.
    Je vais pouvoir le modifier pour récupérer ce qu'il me faut.
    Keith Flint 1969 - 2019

  10. #10
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut
    Pour le chat, tu n'a pas 36 solutions.

    1. Soit tu dis au navigateur de rafraichir la page tout les x seconde. ( Vraiment pas top niveau ergonomie, à oublier)
    2. Soit tu utilise un applet java qui va communiquer avec le serveur. En gros tu as du swing dans ta jsp. ( Vraiment pas top non plus, les applets ne se font plus, et gros problème de sécurité depuis toujours)
    3. Soit tu fait de l'ajax avec du long-pooling ( C'est l'ancienne méthode et certainement celle utilisé par l'application de ton lien) . En gros tu balance une requête ajax tout les secondes qui met à jour ton chat avec les nouveaux message. Le seul soucis, c'est que si tu as un grand nombre d'utilisateur, ton serveur va prendre chère.
    4. Enfin la dernière méthode, la plus récente, tu utilise les websockets. (En gros le serveur "pousse" les nouveaux messages quand il y en a aux navigateurs qui mettent à jour le chat. Comme ça plus de problème de surcharge du serveur. Le seul soucis, c'est que jonas n'implémente pas les websockets et n'est pas près de la faire. Donc si tu veux utiliser ça faut passer sur glassfish.

  11. #11
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 593
    Points : 18 498
    Points
    18 498
    Par défaut
    Merci pour ces précisions.

    J'ai regardé le code du chat et c'est la solution à oublier qui est utilisé.
    Il y a une page avec 2 frames, dans la frame du haut on affiche les messages, dans la frame du bas on écrit les messages.

    Dans le head de la frame du haut il y a ça :
    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
    <link rel="stylesheet" type="text/css" href="chat.css">
    <%
    	int refreshAfter = 10000; // 10 seconds
    	String t = application.getInitParameter("refreshAfter"); // gets seconds
    	if (t != null)
    	{
    		try
    		{
    			refreshAfter = Integer.parseInt(t);
    			refreshAfter = refreshAfter * 1000; // convert to mili seconds
    		}
    		catch (NumberFormatException nfe)
    		{							
    		}
    	}
    %>
    <script language="JavaScript" type="text/javascript">
    <!--
    function reload()
    {
    	window.location.reload();
    }
     
    setInterval('reload()', <%=refreshAfter%>);
     
    function winopen(path)
    {
    	chatterinfo = window.open(path,"chatterwin","scrollbars=no,resizable=yes, width=400, height=300, location=no, toolbar=no, status=no");
    	chatterinfo.focus();
    }
    //-->
    C'est bizarre comme code.
    Enfin bref, c'est un setInterval.
    http://www.w3schools.com/jsref/met_win_setinterval.asp

    Du coup c'est pas très optimisé.

    Mais puisque je n'ai pas trouvé d'autre chat en JEE, je pense garder celui la.

    Comme je l'ai déjà dis, il faut que je réalise un tableau blanc avec un chat.
    Les utilisateurs pourront créer un tableau, le rejoindre, dessiner dessus et parler dans le chat.
    Mais tout devra être enregistré en base de données avec la date à chaque fois.

    Pour pouvoir plus tard dérouler tout ce qui ce passe en pas à pas, par exemple.

    Donc là je pourrai déjà faire une page de connexion.
    En regardant si le nom d'utilisateur et le mot de passe est en base de données.
    Keith Flint 1969 - 2019

  12. #12
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut
    Pour réaliser ce que tu demandes, si tu ne peux pas utiliser les websockets, le mieux est de prendre la solution 3. Coté vue, tu utilises un canvas sur lequel les utilisateur vont pouvoir dessiner, tu afficheras le texte écrit en dessous. Ensuite toute les x secondes ( a toi de voir) tu fais une requète ajax qui va récupérer les changements sur le serveur, et tu affiche les modifications dans le canvas et la zone de texte sans recharger la page.

    Toujours en ajax, lorsqu'un utilisateur dessine ou tape un texte, tu envois une requète ajax qui va enregistrer les changements sur le serveur. ( Quand je dis enregistrer je pense à mettre en mémoire.

    Pour la sauvegarde, tu peux le faire à la demande ou tous les x secondes pour pas surcharger le serveurs de requète sql.

    Pour réaliser tout cela, tu peux utiliser JQuery pour l'ajax et la partie javascript. Et de simple servlets coté serveur.

  13. #13
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 593
    Points : 18 498
    Points
    18 498
    Par défaut
    Merci pour toutes ces précisions.
    Je comptais utilisé Ajax et JQuery, mais là c'est plus clair.

    Pour le moment j’essaie de faire faire des actions dans la base de données.
    PersonnesManager.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @Remote
    public interface PersonnesManager
    {
    	//...
    	public void getPersonne(String nom, String password);
    }
    PersonnesManagerBean.java :
    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
    @Stateless
    public class PersonnesManagerBean implements PersonnesManager
    {
    	@PersistenceContext
    	private EntityManager em;
     
    	@PersistenceUnit(unitName="PAD_WAR")
    	private EntityManagerFactory emf;
     
            // ...
    	public void getPersonne(String nom, String password){
     
    		Query q= em.createQuery("FROM Personne p WHERE p.nom like :pNom AND p.motdepasse like :pMotDePasse");
    		q.setParameter("pNom",nom);
    		q.setParameter("pMotDePasse",password);
    		q.getResultList();
     
    		System.out.println("Result : "+q.getFirstResult());
     
    	}
    }
    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
    <?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_2_0.xsd"
                 version="2.0">
    	<persistence-unit name="PAD_WAR" transaction-type="JTA">
    	 	<provider>org.hibernate.ejb.HibernatePersistence</provider>
    		<class>database.personnes.Personne</class>
    		<properties>
    			<property name="hibernate.connection.username" value="root"/>
    			<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/maBase"/>
    			<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
    		</properties>
     
    	</persistence-unit>
    </persistence>
    J'ai un formulaire dans une page JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="login" method="post" action="<%=request.getContextPath()%>/servlet/login">
    web.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
    <web-app>
     
    	<display-name>Chat Application</display-name>
    	<description>This is a small chat Application created using JSP and Servlets</description>
     
    	<servlet>
    		<servlet-name>login</servlet-name>
    		<servlet-class>tableau_blanc.servlet.LoginServlet</servlet-class>
    	</servlet>
     
    	<servlet-mapping>
    		<servlet-name>login</servlet-name>
    		<url-pattern>/servlet/login</url-pattern>
    	</servlet-mapping>
     
    </web-app>
    Dans le formulaire j'entre un nom d'utilisateur et un mot de passe.
    La servlet :
    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
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    	{
    		contextPath = request.getContextPath();		
     
    		String nickname = request.getParameter("nickname");
    		String password = request.getParameter("password");
     
    		try {
    			Context ctx = new InitialContext();
    			PersonnesManagerBean personnesMB = (PersonnesManagerBean)ctx.lookup("PersonnesManagerBean /remote");
    			personnesMB.getPersonne(nickname, password);
     
    		} catch (NamingException e) {
    			e.printStackTrace();
    		}
     
    		response.sendRedirect(contextPath + "/login.jsp");
    	}

    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
    javax.naming.NamingException: Cannot perform lookup [Root exception is javax.naming.NameNotFoundException: PersonnesManagerBean [Root exception is java.rmi.NotBoundException: PersonnesManagerBean]]
            at org.ow2.carol.jndi.intercept.spi.InterceptableContext.namingException(InterceptableContext.java:823)
            at org.ow2.carol.jndi.intercept.spi.InterceptableContext.lookup(InterceptableContext.java:126)
            at org.ow2.carol.jndi.spi.VirtualJNDILookup.lookup(VirtualJNDILookup.java:109)
            at javax.naming.InitialContext.lookup(Unknown Source)
            at tableau_blanc.servlet.LoginServlet.doPost(LoginServlet.java:50)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
            at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
            at org.ow2.jonas.web.tomcat7.CheckOpenResourcesValve.invoke(CheckOpenResourcesValve.java:69)
            at org.ow2.jonas.web.tomcat7.tx.TransactionValve.invoke(TransactionValve.java:89)
            at org.ow2.jonas.web.tomcat7.ResetAuthenticationValve.invoke(ResetAuthenticationValve.java:95)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
            at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
            at org.ow2.jonas.web.tomcat7.versioning.VersioningValve.invoke(VersioningValve.java:105)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
            at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
            at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
            at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
    Caused by: javax.naming.NameNotFoundException: PersonnesManagerBean [Root exception is java.rmi.NotBoundException: PersonnesManagerBean]
            at org.ow2.carol.jndi.registry.AbsRegistryWrapperContext.lookup(AbsRegistryWrapperContext.java:99)
            at org.ow2.carol.jndi.spi.AbsContext.lookup(AbsContext.java:159)
            at org.ow2.carol.jndi.spi.AbsContext.lookup(AbsContext.java:174)
            at javax.naming.InitialContext.lookup(Unknown Source)
            at org.ow2.carol.jndi.spi.MultiContext.lookup(MultiContext.java:117)
            at org.ow2.carol.jndi.intercept.operation.StringLookupInterceptionContext.executeLast(StringLookupInterceptionContext.java:48)
            at org.ow2.carol.jndi.intercept.operation.AbstractInterceptionContext.proceed(AbstractInterceptionContext.java:57)
            at org.ow2.jonas.jndi.interceptors.impl.datasource.DataSourceLeakDetectorContextInterceptor.intercept(DataSourceLeakDetectorContextInterceptor.java:62)
            at org.ow2.carol.jndi.intercept.operation.AbstractInterceptionContext.proceed(AbstractInterceptionContext.java:55)
            at org.ow2.carol.jndi.intercept.spi.InterceptableContext.lookup(InterceptableContext.java:124)
            ... 25 more
    Caused by: java.rmi.NotBoundException: PersonnesManagerBean
            at org.ow2.carol.jndi.registry.jrmp.ManageableRegistry.lookup(ManageableRegistry.java:126)
            at org.ow2.carol.jndi.registry.AbsRegistryWrapperContext.lookup(AbsRegistryWrapperContext.java:97)
            ... 34 more
    Pour l'instant c'est juste un test pour voir si j'arrive à appeler une méthode de ma classe PersonnesManagerBean.

    Malheureusement je n'arrive pas à faire un lookup.
    Peut être que j'oublie une partie importante.
    Je ne sais pas trop je me suis inspiré de ce topic :
    http://www.developpez.net/forums/d85...nterexception/
    Keith Flint 1969 - 2019

  14. #14
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut
    Il y a beaucoup plus simple pour contacter ton EJB.

    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
     
    public class LoginServlet extends HttpServlet{
     
    @EJB
    private PersonnesManager pm;
     
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    	{
    		String nickname = request.getParameter("nickname");
    		String password = request.getParameter("password");
    		personnesMB.getPersonne(nickname, password);
    		response.sendRedirect(contextPath + "/login.jsp");
    	}
     
    }
    L'annotation @EJB permet de faire de l'injection de dépendance. En gros le conteneur JEE va regarder le type de la class suivant l'annotation ( ici PersonnesManager) et injecter dans la variable une instance de ton EJB. Le tout de manière automatique. Il faut toujours utiliser l'interface de l'EJB pour y accéder. ( ici PersonneManager ).

    Sinon j'oubliait. Si tu es avec la version 5.3.0 de JOnAS, j'ai constater un bug avec le plugin eclipse. Vérifie bien que tu à le jar client.jar dans la librairie JOnas Runtime de ton projet. Si tu ne l'a pas rajoute la. Elle se trouve dans le répertoire lib du dossier d'installation de JONAS.

    Enfin grâce à l'annotation @WebServlet tu peux te passer de la déclaration des servlets dans le web.xml. Toujours sympa à savoir.

    J'oubliais : Si tu t'es EJB sont dans le même EAR que t'es servlet. Remplace @Remote par @Local sur ton interface. @Remote ne doit être utilisé que lors d'accès distant à l'EJB. Par exemple avec un serveur pour t'es servlet et un serveur pour t'es EJB. Tu aura de bien meilleur performance avec @Local.

    Sinon sauf cas particulier tu n'a pas besoin de définir une EntityManagerFactory dans t'es EJB. Un EntityManager suffit pour faire des requètes.

  15. #15
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 593
    Points : 18 498
    Points
    18 498
    Par défaut
    Merci

    Ça fonctionne très bien.
    J'ai du supprimer la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    em = Persistence.createEntityManagerFactory("PAD_WAR").createEntityManager();
    J'ai enlevé l'EntityManagerFactory.

    J'ai bien ajouté client.jar dans mon build path depuis le début, sinon tout était rouge et il était impossible de compiler.

    C'est Pratique @WebServlet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @WebServlet (name = "login", urlPatterns = {"/servlet/login"})
    D'accord je vais utiliser @Local sur mon interface.

    Merci beaucoup, j'avance enfin !
    Ça devenait frustrant...
    Keith Flint 1969 - 2019

  16. #16
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut
    Pas de problème, n'hésite pas si tu as d'autre questions. Jonas est loin d'être le plus simple des serveurs d'application à apréhender.

  17. #17
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 593
    Points : 18 498
    Points
    18 498
    Par défaut
    Je ne connais pas très bien cette technologie, j'ai une question basique.

    Pour l'instant j'ai des formulaire dans les JSP, qui appellent des Servlets.
    Les Servlets créer des objets, les mets en attributs de session puis redirige vers une autre JSP.

    La page JSP récupère les objets dans les attributs de session.
    Elle affiche les informations.

    Comment dois-je m'y prendre pour mettre à jour ces informations en actualisant la page (F5) ?
    Je pourrai faire un bouton refresh qui rappelle la Servlet, mais ce n'est pas ce que je souhaite.

    J'ai l'impression de ne pas utiliser la bonne méthode.
    Mais je n'en connais pas d'autre pour le moment.

    Le traitement dans les Servlets utilise un EJB (:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @EJB
    private TableauManager tableauManager;
    J'ai essayé de récupérer l'EJB dans une page JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <%! @EJB private TableauManager tableauManager;%>
    Mais le serveur génère une exception.
    Keith Flint 1969 - 2019

  18. #18
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut
    Dans ta servlet tu doit utiliser ceci pour passé la variable que tu souhaite afficher à la vue( jsp) . La session ne sert pas à afficher des paramètres valable juste pendant une requète. tu à l'objet request pour ça. Utilise le "scope" session quand tu veux persister des informations le temps d'une session. Comme les informations de l'utilisateur connecté par exemple.

    Tu ne peut pas appeler un EJB directement dans une JSP. Sinon tu casse le model MVC. De plus ta servlet( Controleur) doit traiter les informations issus de ton model(EJB) et envoyé à la vue( JSP ) seulement des donnée prête à être affichées. ( Object, collections, valeur ). Aucun traitement ne doit se faire dans une JSP.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribut("nomDeTaVariable" , valeur);
    Ensuite dans ta JSP tu as plusieurs solutions pour afficher la valeur :
    Soit en java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%= nomDeTaVariable; %>
    Soit en EL(Expression Language) beaucoup plus simple et recommandé :
    Si tu passe un objet en temps que variable tu peux accéder à la propriété de ton objet comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${nomDeTaVariable.attribut}

    Pour utiliser l'EL tu doit avoir importer la bibliothèque jstl.jar dans ton projet.
    https://jstl.java.net/

    Puis l'inclure dans l'entête de tes JSP .



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
    La première ligne te permet d'utiliser les méthodes basiques de la jstl comme c:foreach qui te permet de parcourir une collection.
    La seconde ligne propose des fonctions un peu plus poussées comme le formtage des dates.




    J'espère avoir bien répondu à ta question.

  19. #19
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 593
    Points : 18 498
    Points
    18 498
    Par défaut
    Merci.

    Je vais essayer d'utiliser l'EL.
    Pour l'instant j'utilisais .

    En fait ce que je voulais savoir c'est comment il était possible de rappeler le contrôleur quand on actualise la vue.

    J'affiche une liste des tableaux actifs, en la récupérant dans la base de données (depuis la servlet).
    Mais si un autre utilisateur créer un tableau, ou si un tableau cesse d'être actif, en actualisant la page je ne peux pas voir le changement.

    Je crois que la bonne solution serait d'utiliser les WebSocket comme je vais essayer de la faire pour le chat.

    Il faut que je fasse des recherches sur les websockets.
    Du côté de Jonas je ne sais pas comment ça ce passe...
    J'imagine que ça a un rapport avec Tomcat 7.
    Keith Flint 1969 - 2019

  20. #20
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut
    Je ne comprend pas bien pourquoi ta page ne prend pas en compte les changements si tu affiche la liste des tableaux en base de donnée. Dans ton url vers ta page, tu appelles bien ta servlet et non ta jsp? Tu ne doit jamais appeller une jsp directement. Tu appelles toujours une servlet qui va afficher une jsp. Comme ça si tu rafraichit la page, la servlet est appelé à nouveau et les données sont réactualisées.


    Si par contre tu n'a pas encore persisté les changements , 3 solutions.

    Soit tu persiste le changement en base de donnée. Comme ça quand tu rafraîchis la page, tu as la mise à jour.

    Soit du persiste le changement dans un Bean avec le scope Application. Un bean avec le scope application est commun à toute l'application. Ce qui veux dire que n'importe quel utilisateur à accès aux même valeurs.

    Soit effectivement, tu passe par les websockets. Mais la Jonas ne peut pas le faire. Les websocket sont très récent et demande JEE 7. Hors jonas n'est compatible qu'avec JEE5 ou JEE6 Web profile ( JEE allégé).

    Après pour les deux premières solutions, soit il faut que l'utilisateur rafraîchisse la page. ( Cas du forum developpez.net ) Soit tu fait une requête AJAX toutes les x secondes et tu met à jour la vue en javascript.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/05/2007, 16h47
  2. Connexion à une base de donnée avec swing sous eclipse
    Par kodo dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 07/04/2006, 11h03
  3. [VSS] Est ce possible de travailler avec VSS sous eclipse ?
    Par jlassira dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 07/03/2006, 17h53
  4. Problèmes avec Hibernate (sous Eclipse)
    Par Pierric dans le forum Hibernate
    Réponses: 2
    Dernier message: 07/04/2005, 14h35
  5. [plugins][JOnAS]PB tutoriel EJB avec JOnAS et eclipse
    Par bicente_t dans le forum Eclipse Java
    Réponses: 17
    Dernier message: 30/07/2004, 09h08

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