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

Glassfish et Payara Java Discussion :

La différence entre "ejb-jar_3_1.xsd" et "ejb-jar.xml" ?


Sujet :

Glassfish et Payara Java

  1. #1
    Débutant
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut La différence entre "ejb-jar_3_1.xsd" et "ejb-jar.xml" ?
    Bonjour,

    Est ce que le fichier "ejb-jar_3_1.xsd" présente le descripteur de déploiement de Glassfish 3 ?

    Où je vais mettre exactement dans "ejb-jar_3_1.xsd" le contenu suivant de fichier "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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar xmlns = "http://java.sun.com/xml/ns/javaee"
    version = "3.0"
    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">
    <interceptors>
    <interceptor>
    <interceptor-class>com.jmd.test.domaine.ejb.MesurePerfIntercepteur</interceptor-class>
    </interceptor>
    </interceptors>
     
    <assembly-descriptor>
    <interceptor-binding>
    <ejb-name>*</ejb-name>
    <interceptor-class>com.jmd.test.domaine.ejb.MesurePerfIntercepteur</interceptor-class>
    </interceptor-binding>
    </assembly-descriptor>
    </ejb-jar>
    Merci.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd C'est le schéma XSD qui décrit et permet de valider un fichier ejb-jar.xml pour des EJB 3.1.

    Tu dois mettre ejb-jar_3_1.xsd à la place de ejb-jar_3_0.xsd et version 3.1 à la place de 3.0 (Je suppose)

    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"?>
    <ejb-jar xmlns = "http://java.sun.com/xml/ns/javaee"
    version = "3.1"
    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_1.xsd">
    <interceptors>
    <interceptor>
    <interceptor-class>com.jmd.test.domaine.ejb.MesurePerfIntercepteur</interceptor-class>
    </interceptor>
    </interceptors>
     
    <assembly-descriptor>
    <interceptor-binding>
    <ejb-name>*</ejb-name>
    <interceptor-class>com.jmd.test.domaine.ejb.MesurePerfIntercepteur</interceptor-class>
    </interceptor-binding>
    </assembly-descriptor>
    </ejb-jar>

  3. #3
    Débutant
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut
    Bonjour,
    Merci tout d'abord, pour votre réponse.
    Je vous informe que je travaille avec Java EE version 5.
    Je n'ai pas trouvé le fichier "ejb-jar.xml" dans le répertoire d'installation de Glassfish. C'est moi qui a crée le fichier "ejb-jar.xml".
    Ce fichier existe seulement dans le dossier de travail de mon application et exactement dans le module EJB.

    Mais, j'ai trouvé dans le répertoire :C:\glassfish3\glassfish\lib\schemas
    les fichiers suivants :"ejb-jar_2_1.xsd", "ejb-jar_3_0.xsd" et "ejb-jar_3_1.xsd"

    1)- Parmi ces 3 fichiers quel fichier présente le descripteur de déploiement sachant que mon application Java EE de version 5 ?

    - Comment je pourrai savoir avec quelle version de EJB je suis en train de travailler EJB 3 ou EJB 3.1 ?

    2) - Est ce que ces fichiers d'extension "*.xsd" par exemple "ejb-jar_3_0.xsd" sont modifiables.

    - Est ce que c'est possible au lieu de créer un fichier "ejb-jar.xml" alors on modifie le contenu de fichier "ejb-jar_3_0.xsd" ?
    Si oui, alors je vais mettre la partie de code suivant dans "ejb-jar_3_0.xsd" ? :
    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
     
     
    <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar xmlns = "http://java.sun.com/xml/ns/javaee"
    version = "3.0"
    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">
    <interceptors>
    <interceptor>
    <interceptor-class>com.jmd.test.domaine.ejb.MesurePerfIntercepteur</interceptor-class>
    </interceptor>
    </interceptors>
     
    <assembly-descriptor>
    <interceptor-binding>
    <ejb-name>*</ejb-name>
    <interceptor-class>com.jmd.test.domaine.ejb.MesurePerfIntercepteur</interceptor-class>
    </interceptor-binding>
    </assembly-descriptor>
    </ejb-jar>
    3) Je voulais ajouter un fichier externe "jamon-2.73.jar" (API) mais je ne sais pas dans quel emplacement de répertoire d'installation de Glassfish 3 je vais l'ajouter car j'ai plusieurs dossiers nommés "lib" qui existent sous les répertoires suivants : ?
    C:\glassfish3\glassfish
    C:\glassfish3\install
    C:\glassfish3\javadb
    C:\glassfish3\mq
    C:\glassfish3\pkg
    C:\glassfish3\updatetool
    C:\glassfish3\domains\domain1
    C:\glassfish3\domains\pet
    C:\glassfish3\glassfish\domains\pet\applications\jamon\WEB-INF\lib
    Je vous informe que "pet" c'est le nom de domaine sur lequel je travaille. Par défaut il y a le domaine "domain1".

    4)
    Si j'ai une application Java EE déployée sur le serveur Glassfish V3 alors comment je pourrai accéder à cette application sachant je n'ai pas le code source de cette application ? A partir de quel fichier, je pourrai savoir le nom de ses classes, de ces méthodes et etc ?

    Je vous remercie pour votre précieuse compréhension.

    Merci.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par siempre Voir le message
    Bonjour,
    Merci tout d'abord, pour votre réponse.
    Je vous informe que je travaille avec Java EE version 5.
    Attention JEE5 = EJB 3.0 et non 3.1

    Citation Envoyé par siempre Voir le message
    Je n'ai pas trouvé le fichier "ejb-jar.xml" dans le répertoire d'installation de Glassfish. C'est moi qui a crée le fichier "ejb-jar.xml".
    Ce fichier existe seulement dans le dossier de travail de mon application et exactement dans le module EJB.
    Normal, un fichier ejb-jar.xml n'a rien à faire dans le dossier d'installation de glassfish, mais dans le dossier META-INF d'un JAR (Ou d'un WAR dans le cas de JEE 6) qui contient des EJB.

    Citation Envoyé par siempre Voir le message
    1)- Parmi ces 3 fichiers quel fichier présente le descripteur de déploiement sachant que mon application Java EE de version 5 ?
    Le 3.0 pour JEE 5

    Citation Envoyé par siempre Voir le message
    - Comment je pourrai savoir avec quelle version de EJB je suis en train de travailler EJB 3 ou EJB 3.1 ?
    Ca dépends de ton server d'application.
    Glassfish 3 et +=> JEE 6

    Citation Envoyé par siempre Voir le message
    2) - Est ce que ces fichiers d'extension "*.xsd" par exemple "ejb-jar_3_0.xsd" sont modifiables.
    Ne touche surtout pas à ces fichiers.


    Citation Envoyé par siempre Voir le message
    3) Je voulais ajouter un fichier externe "jamon-2.73.jar" (API) mais je ne sais pas dans quel emplacement de répertoire d'installation de Glassfish 3 je vais l'ajouter car j'ai plusieurs dossiers nommés "lib" qui existent sous les répertoires suivants : ?
    Dans le dossier glassfish/lib ça devrait marcher.


    Citation Envoyé par siempre Voir le message
    4) Si j'ai une application Java EE déployée sur le serveur Glassfish V3 alors comment je pourrai accéder à cette application sachant je n'ai pas le code source de cette application ? A partir de quel fichier, je pourrai savoir le nom de ses classes, de ces méthodes et etc ?
    Ca dépends du type d'application : web, webservice, ejb...


    Avant de te lancer la dedans je pense qu'il serait bon d’apprendre les bases de JEE.

  5. #5
    Débutant
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    Merci beaucoup pour les informations fournies.

    Dans le dossier glassfish/lib ça devrait marcher.
    Pardon, j'ai mais le fichier "jamon-2.73.jar" dans le dossier "glassfish/lib"
    Mais, ça ne marche pas. Voici le messagr d'erreur:
    Error occurred during deployment: Exception while deploying the app [Yaps-Server] : Interceptor binding contains an interceptor class name = com.jamonapi.aop.JAMonEJBInterceptor that is not defined as an interceptor. Please see server.log for more details.
    Je vous informe que j'ai un autre fichier nommé "jamon.war" fourni avec le fichier "jamon-2.73.jar" mais je ne sais pas où je vais le mettrai.

    Voici le contenu de fichier "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
    <ejb-jar xmlns = "http://java.sun.com/xml/ns/javaee"
    version = "3.0"
    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">
        <interceptors>
            <interceptor>
                <interceptor-class>com.jmd.test.domaine.ejb.MesurePerfIntercepteur</interceptor-class>
            </interceptor>
        </interceptors>
        <assembly-descriptor>
            <interceptor-binding>
                <ejb-name>*</ejb-name>
                <interceptor-class>com.jmd.test.domaine.ejb.MesurePerfIntercepteur</interceptor-class>
                <interceptor-class>com.jamonapi.aop.JAMonEJBInterceptor</interceptor-class>
            </interceptor-binding>
        </assembly-descriptor>
    </ejb-jar>
    Voici le contenu de ma classe intercepteur:

    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
    package com.jmd.test.domaine.ejb;
     
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
     
    public class MesurePerfIntercepteur {
     
        @AroundInvoke
        public Object mesurerPerformance(InvocationContext ic) throws
                Exception {
            long debutExec = System.currentTimeMillis();
            try {
                return ic.proceed();
            } finally {
                long tempsExec = System.currentTimeMillis() - debutExec;
                System.out.println("[PERF] Temps d'execution de la methode " + ic.getClass() + "." + ic.getMethod() + " : " + tempsExec + " ms");
     
                java.io.File monFichier = null;
                try {
                    monFichier = new java.io.File("C:\\projects\\YapsON\\Yaps-Server\\mesure.txt");
     
                    monFichier.createNewFile();
                } catch (IOException e) {
                    System.out.println("Impossible de créer le fichier");
                }
                java.io.FileOutputStream monFluxFichier = null;
                try {
                    monFluxFichier = new java.io.FileOutputStream(monFichier);
                } catch (FileNotFoundException e) {
                    System.out.println("Impossible de trouver le fichier");
                }
                try {
                    String s = "[PERF] Temps d'execution de la methode " + ic.getClass() + "." + ic.getMethod() + " : " + tempsExec + " ms";
                    monFluxFichier.write(s.getBytes());
     
                    monFluxFichier.close();
     
                } catch (IOException e) {
                    System.out.println("Impossible d'écrire dans le fichier");
                }
            }
        }
    }
    - Pardon, quel est le problème ?

    Ca dépends du type d'application : web, webservice, ejb...
    C'est une application de type "Entreprise Application" qui qui contient deux modules: module EJB et module WAR.
    - Dans ce cas, comment je pourrai accéder à cette application sachant je n'ai pas le code source de cette application ? A partir de quel fichier, je pourrai savoir le nom de ses classes, de ces méthodes et etc ?

    Avant de te lancer la dedans je pense qu'il serait bon d’apprendre les bases de JEE.
    - Pardon, pourriez-vous m'informer et m'envoyer des bons tutoriels ?


    Merci.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Je ne connais pas bien les interceptors, mais il me semble que ta classe com.jamonapi.aop.JAMonEJBInterceptor n'est pas définie comme interceptor dans ton fichier ejb-jar.xml.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <interceptors>
            <interceptor>
                <interceptor-class>com.jmd.test.domaine.ejb.MesurePerfIntercepteur</interceptor-class>
            </interceptor>
        </interceptors>
    D'où le message d'erreur :
    Interceptor binding contains an interceptor class name = com.jamonapi.aop.JAMonEJBInterceptor that is not defined as an interceptor.
    Tu devrais avoir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <interceptors>
            <interceptor>
                <interceptor-class>com.jmd.test.domaine.ejb.MesurePerfIntercepteur</interceptor-class>
            </interceptor>
            <interceptor>
                <interceptor-class>com.jamonapi.aop.JAMonEJBInterceptor</interceptor-class>
            </interceptor>
        </interceptors>
    Petit rappel : ce fichier doit être placé dans le dossier META-INF du jar de ton module EJB.


    Pour les tutoriels, rien que sur developpez.com tu trouvera tout ce qu'il faut. Sinon =>




    Au passage :
    http://www.adam-bien.com/roller/abie...3_for_absolute

  7. #7
    Débutant
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    Tu devrais avoir ça :
    Merci infiniment maintenant çà marche.

    Juste j'ai deux questions dont j'ai en besoin de vos réponses c'est possible:

    1) Je voulais sauvegarder mes résultats dans un fichier texte "res.txt". Mais, j'ai remarqué que ce fichier a été crée une seule fois et il a pris le résultat de premier déploiement de mon application mais si je déploie de nouveau mon application alors ce fichier ne prend pas en compte les nouveaux résultats.
    Je voulais savoir comment le fichier "rest.txt" dans les deux cas suivants ? :
    - pour chaque déploiement, il aura une nouvelle création de fichier "res.txt".
    - pour chaque déploiement, il aura l'ajout des nouveaux résultats sans effacer les anciens résultats. La création de fichier "res.txt" se fait une seule fois.

    Voici le code de ma classe intercepteur qui contient la création de fichier "res.txt":
    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
     
    package com.jmd.test.domaine.ejb;
     
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
     
    public class MesurePerfIntercepteur {
     
        @AroundInvoke
        public Object mesurerPerformance(InvocationContext ic) throws
                Exception {
            long debutExec = System.currentTimeMillis();
            try {
                return ic.proceed();
            } finally {
                long tempsExec = System.currentTimeMillis() - debutExec;
                System.out.println("[PERF] Temps d'execution de la methode " + ic.getClass() + "." + ic.getMethod() + " : " + tempsExec + " ms");
     
                java.io.File monFichier = null;
                try {
                    monFichier = new java.io.File("C:\\travail\\res.txt");
     
                    monFichier.createNewFile();
                } catch (IOException e) {
                    System.out.println("Impossible de créer le fichier");
                }
                java.io.FileOutputStream monFluxFichier = null;
                try {
                    monFluxFichier = new java.io.FileOutputStream(monFichier);
                } catch (FileNotFoundException e) {
                    System.out.println("Impossible de trouver le fichier");
                }
                try {
                    String s = "[PERF] Temps d'execution de la methode " + ic.getClass() + "." + ic.getMethod() + " : " + tempsExec + " ms";
                    monFluxFichier.write(s.getBytes());
     
                    monFluxFichier.close();
     
                } catch (IOException e) {
                    System.out.println("Impossible d'écrire dans le fichier");
                }
            }
        }
    }
    - Comment deviendra ce code dans les deux cas cités ci-dessus ?

    2)Pour une application de type "Entreprise Application" qui qui contient deux modules: module EJB et module WAR.
    - Dans ce cas, comment je pourrai accéder à cette application sachant je n'ai pas le code source de cette application ? A partir de quel fichier de serveur Glassfish, je pourrai savoir le nom de ses classes, de ces méthodes ?

    Je vous remercie pour votre précieuse compréhension.

    Cordialement.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Test l'existence de ton fichier avec file.exists(), ne pas le créer si il existe déjà.

    Créer un FileOutputStream avec le mode append=true Pour ne pas effacer le contenue existant du fichier.

    Sans sources, ni Javadoc, si tu veux connaître le contenu tu n'as plus qu'à décompiler. Ou ajouter ton jar en lib d'un projet pour pouvoir l'explorer.

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Pour faire ce que tu veux faire, il serait plus utile d'utiliser une API de logging plutôt que d'écrire dans un fichier texte...

  10. #10
    Débutant
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut
    Test l'existence de ton fichier avec file.exists(), ne pas le créer si il existe déjà.

    Créer un FileOutputStream avec le mode append=true Pour ne pas effacer le contenue existant du fichier.
    Merci çà marche maintenant.

    Sans sources, ni Javadoc, si tu veux connaître le contenu tu n'as plus qu'à décompiler.
    - Comment décompiler cette application dans ce cas ?

    Ou ajouter ton jar en lib d'un projet pour pouvoir l'explorer.
    - Vous voulez dire quel jar ? Lib de quel projet ?
    - Comment exporter une application de type "Entreprise Application" vers un un fichier jar ? Quel de type de jar à choisir ?
    - A partir de Glassfish, on aura la possibilité de savoir les détails (les classes, les méthodes) d'une application Java EE déployée ?
    si oui, comment on procédera ?

    Pour faire ce que tu veux faire, il serait plus utile d'utiliser une API de logging plutôt que d'écrire dans un fichier texte...
    - Pourriez-vous me renseigner sur quelques APIs intéressantes ?
    - Si j'utiliserai une API alors comment je pourrai visualiser les résultats ?

    Merci.

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/09/2015, 10h34
  2. Différence entre %STR et %QUOTE
    Par fafabzh6 dans le forum Macro
    Réponses: 10
    Dernier message: 14/03/2011, 18h43
  3. Différence entre XSLT et XSD
    Par GDMINFO dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/04/2007, 13h00
  4. Différence entre JavaBean et EJB
    Par webspeak dans le forum Java EE
    Réponses: 2
    Dernier message: 11/12/2004, 15h09

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