Précédent   Forum des professionnels en informatique > Java > Serveurs, conteneurs, et Java EE > GlassFish
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/12/2011, 00h07   #1
Débutant
 
Inscription : mai 2009
Messages : 386
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 386
Points : 4
Points : 4
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 :
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.
siempre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 10h18   #2
Modérateur
 
Homme Mathieu
Ingénieur développement logiciels
Inscription : avril 2004
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France

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

Informations forums :
Inscription : avril 2004
Messages : 843
Points : 1 136
Points : 1 136
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 :
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>
Mathieu.J est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 11h52   #3
Débutant
 
Inscription : mai 2009
Messages : 386
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 386
Points : 4
Points : 4
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 :
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 : ?
Citation:
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.
siempre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 12h11   #4
Modérateur
 
Homme Mathieu
Ingénieur développement logiciels
Inscription : avril 2004
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France

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

Informations forums :
Inscription : avril 2004
Messages : 843
Points : 1 136
Points : 1 136
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.
Mathieu.J est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 13h28   #5
Débutant
 
Inscription : mai 2009
Messages : 386
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 386
Points : 4
Points : 4
Bonjour,

Merci beaucoup pour les informations fournies.

Citation:
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:
Citation:
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 :
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 :
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 ?

Citation:
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 ?

Citation:
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.
siempre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 14h20   #6
Modérateur
 
Homme Mathieu
Ingénieur développement logiciels
Inscription : avril 2004
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France

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

Informations forums :
Inscription : avril 2004
Messages : 843
Points : 1 136
Points : 1 136
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 :
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 :
Citation:
Interceptor binding contains an interceptor class name = com.jamonapi.aop.JAMonEJBInterceptor that is not defined as an interceptor.
Tu devrais avoir ça :
Code :
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
Mathieu.J est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 15h10   #7
Débutant
 
Inscription : mai 2009
Messages : 386
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 386
Points : 4
Points : 4
Bonjour,

Citation:
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 :
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.
siempre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 15h18   #8
Modérateur
 
Homme Mathieu
Ingénieur développement logiciels
Inscription : avril 2004
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France

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

Informations forums :
Inscription : avril 2004
Messages : 843
Points : 1 136
Points : 1 136
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.
Mathieu.J est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 15h20   #9
Modérateur
 
Homme Mathieu
Ingénieur développement logiciels
Inscription : avril 2004
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France

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

Informations forums :
Inscription : avril 2004
Messages : 843
Points : 1 136
Points : 1 136
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...
Mathieu.J est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 16h06   #10
Débutant
 
Inscription : mai 2009
Messages : 386
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 386
Points : 4
Points : 4
Citation:
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.

Citation:
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 ?

Citation:
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 ?

Citation:
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.
siempre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h03.


 
 
 
 
Partenaires

Hébergement Web