IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Wildfly/JBoss Java Discussion :

Utilisation des MBeans avec JBoss


Sujet :

Wildfly/JBoss Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Utilisation des MBeans avec JBoss
    Bonjour,

    Je travaille actuellement sur un projet J2EE utilisant JBoss 3.2.5. Nous utilisons des fichiers de propriétés pour configurer l'application. Le problème est que ces fichiers de propriétés sont embarqués dans le .war. Pas très pratique, me direz-vous.

    Je pensais donc utiliser les MBeans pour remplacer les fichiers de propriétés.
    J'ai ainsi créé une interface :

    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
    package mon.projet;
     
    import javax.naming.NamingException;
     
    public interface ProprietesFichierInterfaceMBean
    {
        public String getJndiName ();
        public void setJndiName (String jndiName) throws NamingException;
        public String getNomFichier();
        public void setNomFichier(String filename);
        public String getPath();
        public void setPath(String path);
     
        public void start() throws Exception;
        public void stop();
    }
    Note : mon fichier de propriétés ne contient que deux propriétés : path et nomFichier.

    J'ai également codé la classe implémentant cette interface :

    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    package mon.projet;
     
    import java.util.HashMap;
     
    import javax.naming.InitialContext;
    import javax.naming.Name;
    import javax.naming.NamingException;
     
    import org.jboss.naming.NonSerializableFactory;
     
    public class ProprietesFichier implements ProprietesFichierInterfaceMBean
    {
        private String jndiName;
        private HashMap contextMap = new HashMap();
        private String nomFichier;
        private String path;
     
        private boolean started;
     
        public String getJndiName()
        {
            return jndiName;
        }
     
        public void setJndiName(String jndiName) throws NamingException
        {
            String oldName = this.jndiName;
            this.jndiName = jndiName;
            if (started)
            {
                unbind(oldName);
                try
                {
                    rebind();
                }
                catch(Exception e)
                {
                    NamingException ne = new NamingException("Failedto update jndiName");
                    ne.setRootCause(e);
                    throw ne;
                }
            }
        }
     
        public String getNomFichier()
        {
            return nomFichier;
        }
     
        public void setNomFichier(String filename)
        {
            this.nomFichier = filename;
        }
     
        public String getPath()
        {
            return path;
        }
     
        public void setPath(String path)
        {
            this.path = path;
        }
     
        public void start() throws Exception
        {
            started = true;
            rebind();
        }
     
        public void stop()
        {
            started = false;
            unbind(jndiName);
        }
     
     
        private void rebind() throws NamingException
        {
            InitialContext rootCtx = new InitialContext();
            Name fullName = rootCtx.getNameParser("").parse(jndiName);
            System.out.println("fullName="+fullName);
            NonSerializableFactory.rebind(fullName, contextMap, true);
        }
     
        private void unbind(String jndiName)
        {
            try
            {
                InitialContext rootCtx = new InitialContext();
                rootCtx.unbind(jndiName);
                NonSerializableFactory.unbind(jndiName);
            }
            catch(NamingException e)
            {
                e.printStackTrace();
            }
        }
     
    }
    J'ai généré mon war. Pas de souci jusqu'ici. J'ai ensuite ajouté un fichier, proprietes-service.xml dans le répertoire deploy de JBoss :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!--<!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.1//EN" "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_1.dtd"> -->
    <server>
        <mbean code="mon.projet.ProprietesFichier"
               name=":service=ProprietesFichier">
            <attribute name="JndiName">/jms/MyJms</attribute>
            <attribute name="NomFichier">batchFileError</attribute>
            <attribute name="Path">/tmp</attribute>
            <depends>jboss:service=Naming</depends>
        </mbean>
    </server>
    J'ai déposé le war dans le répertoire deploy, et j'ai lancé JBoss.

    J'obtiens alors le message suivant dans le log :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    08:41:00,735 WARN  [org.jboss.util.NestedThrowable] Duplicate throwable nesting of same base type: class org.jboss.deployment.DeploymentException is assignable from: class org.jboss.deployment.DeploymentException
    08:41:00,737 ERROR [org.jboss.deployment.MainDeployer] could not create deployment: file:/var/jboss/server/dev4/deploy/proprietes-service.xml
    org.jboss.deployment.DeploymentException: create operation failed for package file:/var/jboss/server/dev4/deploy/proprietes-service.xml; - nested throwable: (org.jboss.deployment.DeploymentException: No ClassLoaders found for: mon.projet.ProprietesFichier; - nested throwable: (java.lang.ClassNotFoundException: No ClassLoaders found for: mon.projet.ProprietesFichier))
            at org.jboss.deployment.SARDeployer.create(Unknown Source)
            at org.jboss.deployment.MainDeployer.create(Unknown Source)
            at org.jboss.deployment.MainDeployer.deploy(Unknown Source)
    (j'ai volontairement tronqué le message d'erreur pour ne pas surcharger mon post).

    Quelqu'un a-t-il une idée de ce qui cloche ? Je pense que cela vient du fichier xml, mais je ne suis pas sur...

    Merci d'avance,
    Viggen

  2. #2
    Membre éclairé Avatar de XmasRock
    Inscrit en
    Janvier 2007
    Messages
    729
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 729
    Points : 821
    Points
    821
    Par défaut
    tu as un probleme de packaging. Où est le jar contenant tes classes ?
    il faudrait que tu fasses un fichier .sar ce serait plus propre.

    Sinon, pourquoi n'utilises-tu pas le service de propriété existant ?
    properties-service.xml (regardes les commentaires a l'interieur)

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/01/2007, 11h45
  2. [JMS] Utilisation des "queue" avec JMS
    Par be_tnt dans le forum Java EE
    Réponses: 1
    Dernier message: 01/11/2006, 16h05
  3. [JTABLE] Peut-on utiliser des autoFilters avec une JTable
    Par Nico+10) dans le forum Composants
    Réponses: 3
    Dernier message: 18/09/2006, 19h53
  4. Utilisation des paramètres avec rowsource - 97 et 2003
    Par IntenseM3 dans le forum Access
    Réponses: 1
    Dernier message: 10/05/2006, 09h18
  5. Utiliser des webservices avec nusoap
    Par budiste dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 30/03/2006, 11h56

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