Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
893 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  jmx et persistence ? vaporware ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

jmx et persistence ? vaporware ?

n°855166
the real m​oins moins
Posté le 21-09-2004 à 19:02:23  profilanswer
 

Bon, jmx, c'est bien mais il semblerait que les spec'eux ont pas encore compris qu'ils feraient bien d'arreter d'utiliser des descripteurs a rallonges et inutiles.
 
Bref, j'ai un mbean qui contient des bouts de config. Ce mbean est deployé dans jboss, et j'aimerais bien sauvegarder l'état de ma config quand jboss stoppe, ou qd j'undeploy/deploy mon package. Je dois utiliser un ModelMbean? c'est quoi? comment? J'ai vaguement lu qques trucs en rapport avec ça, mais rien de concret et qui allait au bout de l'exemple. jmx, vaporware?
 
Si qqun à un lien sous le coude, ou des explications simples et concrètes à ce sujet, je suis preneur...
 
 [:fing fang fung]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le 21-09-2004 à 19:02:23  profilanswer
 

n°855177
benou
Posté le 21-09-2004 à 19:24:49  profilanswer
 

t'as des liens ou tu peux faire un petit topo sur les MBean ?


---------------
ma vie, mon oeuvre - HomePlayer
n°855179
d4rK 3Mpr0​R
fr33 Kevin
Posté le 21-09-2004 à 19:27:31  profilanswer
 

surtout que des MBeans, y'en a partout dans Java 5 dont certains qui m'intéressent particulièrement ...

n°855180
the real m​oins moins
Posté le 21-09-2004 à 19:28:02  profilanswer
 

benou a écrit :

t'as des liens ou tu peux faire un petit topo sur les MBean ?

euh à la base si j'pose une question comme ça, c'est que j'suis pas vraiment calé hein ... :sweat:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°855181
the real m​oins moins
Posté le 21-09-2004 à 19:28:12  profilanswer
 
n°855192
d4rK 3Mpr0​R
fr33 Kevin
Posté le 21-09-2004 à 19:45:38  profilanswer
 

est-ce que tu vas au ciné et après, est-ce que tu baises ?
 
(2 de plus)

n°855196
d4rK 3Mpr0​R
fr33 Kevin
Posté le 21-09-2004 à 19:50:24  profilanswer
 

A model MBean is a generic, configurable MBean that anyone can use to instrument almost any resource rapidly. Model MBeans are dynamic MBeans that also implement the interfaces specified in this chapter. These interfaces define structures that, when implemented, provide an instantiable MBean with default and configurable behavior. Further, the Java Management extensions specify that a model MBean implementation must be supplied as part of all conforming JMX agents. This means that resources, services and applications can rely on the presence of a generic template for creating manageable objects on-the-fly. Users only need to instantiate a model MBean, configure the exposure of the default behavior, and register it in a JMX agent. This significantly reduces the programming burden for gaining manageability. Developers can instrument their resources according to the JMX specification in as little as three to five lines of code. Instrumentation with model MBeans is universal because instrumentors are guaranteed that there will be a model MBean appropriately adapted to all environments that implement the Java Management extensions.  
 
(spec page 71)
 
ça t'aide ?

n°855197
the real m​oins moins
Posté le 21-09-2004 à 19:52:29  profilanswer
 

merci mais non. La spec c'est bien beau, mais j'ai besoin d'un exemple concret de a-z qui me montre que ça marche et comment ça marche. je veux juste sauver l'etat de mon bordel :sweat:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°855198
d4rK 3Mpr0​R
fr33 Kevin
Posté le 21-09-2004 à 19:52:51  profilanswer
 

bordel, je perds les espaces au copier-coller, mais page 72, y'a le scénario d'utilisation

n°855199
d4rK 3Mpr0​R
fr33 Kevin
Posté le 21-09-2004 à 19:54:15  profilanswer
 

the real moins moins a écrit :

je veux juste sauver l'etat de mon bordel :sweat:

Themodel MBean, incooperationwithitsJMXagent, will beimplementedto supportitsownpersistence, transactionality, locationtransparency, andlocatability, asapplicableinitsenvironment. Instrumentationdevelopersdonotneedtodevelop MBeanswiththeirowntransactional andpersistencecharacteristics. Theymerely instantiatemodel MBeansintheJMXagentandtrustthatthemodel MBean implementationisappropriatefortheenvironmentinwhichtheJMXagentcurrently exists.

mood
Publicité
Posté le 21-09-2004 à 19:54:15  profilanswer
 

n°855201
d4rK 3Mpr0​R
fr33 Kevin
Posté le 21-09-2004 à 19:56:11  profilanswer
 

il faut avoir la foi on te dit !

n°855982
julienv
Posté le 22-09-2004 à 21:19:01  profilanswer
 

Il faut que tu fasses un XMBean qui est l'implementation de JBoss des ModelMBean.
 
En plus du fichier jboss-service.xml tu dois fournir pour ton XMBean un descripteur qui decrit l interface de management du MBean. En effet contrairement au standard MBean (qui utilise une class Toto implementant TotoMBean pour decouvrir l interface de management par introspection) la tu dois toi meme fournir un mapping qui mappe l'interface de management a la classe Java.
 
L'avantage est de pouvoir transformer n'importe quel objet en MBean, surtout si tu n as pas acces au code source.
 
Par exemple tu vas dire que l'operation stop() dans l interface de management se mappe sur la method stoppe() de la classe Toto.
 
Ce fichier est au format XML et tu trouves la DTD dans JBOSS_HOME/docs/dtd/xmbean.dtd
 
En ce qui concerne la persistence tu dois utiliser les options de persistences offertes par ce format, par exemple :
 
<xmbean>
   <description>PersistentServiceExample</description>
   <descriptors>
      <persistence persistPolicy="OnUpdate"/>
      <persistence-manager value="org.jboss.mx.persistence.ObjectStreamPersistenceManager"/>
  </descriptors>
<class>Toto</class>
etc....
</xmbean>
 
Une fois que tu as pondu ce fichier (faisable par xdoclet), tu dois ensuite lorsque tu declares ton MBean, lui dire que c est un XMBean dans jboss-service.xml :
 
<mbean code="..." name="..." xmbean-dd="Toto.xml">...</mbean>
 
Le fichier Toto.xml doit etre dans le jar ou la classe de Toto reside.

n°856064
the real m​oins moins
Posté le 22-09-2004 à 23:21:22  profilanswer
 

une vraie réponse [:atsuko]
 
 
 
(je vais lire :love:)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°856082
the real m​oins moins
Posté le 22-09-2004 à 23:48:27  profilanswer
 

bon ben en fait j'étais pas très loin!  
jpense que ce qu'il me manquait c'était le       <persistence-manager>
Est-ce que je peux le spécifier par xdoclet??  
(le reste - le descripteur et le jboss-service.xml - etant déjà généré par xdoclet..)
 
Encore deux questions:
- au niveau de la persistPolicy, je ne sais laquelle choisir: dans mon bean, j'ai une Map, mais pas d'accesseurs direct, seulement qques methodes qui vont en interne écrire des choses dans cette Map. Est-ce que par chance ce genre d'opération est prise en compte pour un "onUpdate" ?
- Tant que j'avais pas la persistence de ma config gerée par le conteneur, j'ai wrappé la map dans un objet Config et mon mbean delègue à cet objet. Pour intégration dans une console jmx, j'ai une methode qui me montre la Map sus-mentionné sous forme d'une table, avec html. Donc, comme ça, ça me gène *pas trop* d'avoir un peu de bordel qui fait explicitement de l'html dans mon bean. (euh, j'ai qd meme abstrait la construction de la <table> dans une classe utilitaire hein)... Maintenant que je peux persister mon mbean directement, ça me broute un peu d'avoir ça au milieu de ma logique business. Ca m'ennuie aussi pas mal tout ce blabla du à xdoclet, qui empeche une lecture simple de la classe, qui en dehors de tout ça est plutot simple. Tu procèdes comment?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°856138
julienv
Posté le 23-09-2004 à 00:46:39  profilanswer
 

the real moins moins a écrit :

- au niveau de la persistPolicy, je ne sais laquelle choisir: dans mon bean, j'ai une Map, mais pas d'accesseurs direct, seulement qques methodes qui vont en interne écrire des choses dans cette Map. Est-ce que par chance ce genre d'opération est prise en compte pour un "onUpdate" ?


 
c'est un des gros problemes des ModelMBean, quand tu modifies un objet en interne la persistence ne sera pas effectuee. Il faut passer par le MBeanServer.setAttribute pour declencher cela. Et encore ton cas et special. Ce que tu pourrais faire c est :
 
Recuperer ton ObjectName JMX en implementant MBeanRegistration, en meme temps tu vas avoir une reference sur le MBeanServer ce qui est bien pratique.
 
Ensuite tu exposes la Map comme un attribut JMX. Qd tu veux modifier la map en interne, tu la clones et tu fait un setAttribute sur toi meme :
 
private void add(Object key, Object value)
{
   try {
      Map copy = new HashMap(originale);
      copy.put(key, value);
      server.setAttribute(name, new Attribute("Originale", copy);
      }
   catch(Exception e) {
      e.printStackTrace();
   }
}
 
Je sais c est un peu tordu mais je ne connais pas d autre moyen.
 
Qd tu vas faire un setAttribute, le MBeanServer deleguer ca au XMBean (qui implemente DynamicMBean) et le XMBean avant d appeler setOriginale(Map) sur ta resource managee (i.e ton object) va voir que l on change la valeur de l'attribute et va utiliser le PersistenceManager pour serializer les descripteurs du MBean.
 
 
 

the real moins moins a écrit :


- Tant que j'avais pas la persistence de ma config gerée par le conteneur, j'ai wrappé la map dans un objet Config et mon mbean delègue à cet objet. Pour intégration dans une console jmx, j'ai une methode qui me montre la Map sus-mentionné sous forme d'une table, avec html. Donc, comme ça, ça me gène *pas trop* d'avoir un peu de bordel qui fait explicitement de l'html dans mon bean. (euh, j'ai qd meme abstrait la construction de la <table> dans une classe utilitaire hein)... Maintenant que je peux persister mon mbean directement, ça me broute un peu d'avoir ça au milieu de ma logique business. Ca m'ennuie aussi pas mal tout ce blabla du à xdoclet, qui empeche une lecture simple de la classe, qui en dehors de tout ça est plutot simple. Tu procèdes comment?


 
pour faire quoi ?
 
sinon j'ai develope mon propre ModelMBean qui construit l'interface de management par reflection, tous les champs marques non transient sont consideres comme persistents + un JDBCPersistenceManager qui serialize les champs dans une table de base de donnee et utilise des java.bean.PropertyEditor pour faire les conversions String<->Object
 
Le code est GPL si ca t interesse.

n°856142
the real m​oins moins
Posté le 23-09-2004 à 00:57:24  profilanswer
 

oui ça m'interesse :)
 
> pour faire quoi ?
pour éviter d'avoir un MBean de 400 lignes dont les 3/4 sont du blabla pour xdoclet et/ou du code qui va servir à presenter les données dans une console jmx (web) :/
 
(j'ai un peu maté le code de jboss et ça a pas l'air de les gener de balancer 40 lignes au milieu de nulle part pour generer de l'html à partir de données présente dans le mbean...)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°856148
julienv
Posté le 23-09-2004 à 01:23:18  profilanswer
 

the real moins moins a écrit :

oui ça m'interesse :)
 
bon c est un peu dispatche dans le codebase :
 
ca c est le code du persistence manager, a priori c est utilisable dans n importe quel XMBean mais je n ai pas essaye.
 
http://cvs.sourceforge.net/viewcvs [...] iew=markup
 
Pour que ca marche :
 
persistence-manager : mettre le nom de cette classe
persistName         : mettre le nom qui va etre utiliser comme cle primaire dans la table
persistLocation     : mettre le nom JDNI de la datasource qui va persister les changements / le nom de la table, par exemple java:DefaultDS/MyTable
 
le create table pour mysql :
 
CREATE TABLE `nuke_services_attributes` (
`pn_sid`     varchar(128)   NOT NULL,
`pn_aid`     varchar(128)   NOT NULL,
`pn_value`   text           NULL        default NULL,
PRIMARY KEY(pn_sid, pn_aid)
);
 
Ca ne persiste que les champs qu il peut faire, cest a dire dont il trouve un PropertyEditor. Donc pour les types de base ca marche, les collections aussi je pense et les truc genre org.w3c.Element.
 
Si tu veux persister tes propres types, tu dois enregistrer un PropertyEditor aupres du java.bean.PropertyEditorManager si je me rapelle bien.
 
apres le code qui construit le ModelMBean est la aussi maispeut etre devrait tu reprendre que les parties interessantes :
 
http://cvs.sourceforge.net/viewcvs [...] component/
 
En fait NukesMBean etend la class MBeanInvoker fournie par JBoss, mais ce qui est interessant c est la construction des metadata JMX a partir de la classe fait dans NukesBuilder, c est la qu est fait tout le job. Detection des champs persistent et configuration du ModelMBeanInfo
 
> pour faire quoi ?
pour éviter d'avoir un MBean de 400 lignes dont les 3/4 sont du blabla pour xdoclet et/ou du code qui va servir à presenter les données dans une console jmx (web) :/
 
(j'ai un peu maté le code de jboss et ça a pas l'air de les gener de balancer 40 lignes au milieu de nulle part pour generer de l'html à partir de données présente dans le mbean...)


 
ok, j'avais pas compris que c'etait ce qui te genait. tu peux toujours appeler ton MBean depuis une servlet et faire la presentation la.

n°856149
the real m​oins moins
Posté le 23-09-2004 à 01:35:22  profilanswer
 

bon, je vais jeter un oeil à tout ça. je pensais que ça serait un peu plus "clés en main" cette histoire, à la base :/
 
sinon le persistence-manager que tu as mentionné plus haut (ObjectStream...) il va me serializer mes attributs dans un fichier...? qui se trouve ou ?
 
et pour le côté présentation, c'est que c'est sympa, facile et rapide de pouvoir utiliser la jmx-console de jboss pour administrer mon appli, mais que si je veux avoir qques données affichées (du genre le contenu de ma fameuse Map), jsuis obligé d'y foutre de la logique de présentation... Je me demandais s'il y avait pas un méchanisme plus malin pour ce genre de pirouettes..
 


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°856152
julienv
Posté le 23-09-2004 à 01:51:30  profilanswer
 

il va le persister sur le disk dur dans le repertoire donne par persistLocation et avec le nom donne par persistName
 
sinon tu peux toujours utiliser un org.w3c.dom.Element, normalement la JMX console va montrer ca dans un TextField.
 
Par exemple tu fait un champ de type Element avec le nom getRepresentation(), qd il est appele tu prend ta Map, tu crees
un doc XML et tu met ca dedans et tu retournes le DocumentElement du document. Normaleent le contenu devrait etre affciche sous format XML.
 
Sinon essaie avec un type wrapper a toi et un PropertyEditor que tu enregistre. La console cherche d abord les property editor pour les classes qu elle ne connait pas. Un property editor c est tout simple a faire :
 
public class MyPropertyEditor extends PropertyEditorSupport
{
   public String getAsText()
   {
       Toto toto = (Toto)getValue();
       return toto.getMyValue();
   }
}
 
ensuite dans ton MBean dans le start() tu enregistres le property editor sur le PropertyEditorManager avec un truc genre :
 
PropertyEditorManager.register(Toto.class, MyPropertyEditor.class);
 
 
 

the real moins moins a écrit :

bon, je vais jeter un oeil à tout ça. je pensais que ça serait un peu plus "clés en main" cette histoire, à la base :/
 
sinon le persistence-manager que tu as mentionné plus haut (ObjectStream...) il va me serializer mes attributs dans un fichier...? qui se trouve ou ?
 
et pour le côté présentation, c'est que c'est sympa, facile et rapide de pouvoir utiliser la jmx-console de jboss pour administrer mon appli, mais que si je veux avoir qques données affichées (du genre le contenu de ma fameuse Map), jsuis obligé d'y foutre de la logique de présentation... Je me demandais s'il y avait pas un méchanisme plus malin pour ce genre de pirouettes..

n°856153
the real m​oins moins
Posté le 23-09-2004 à 01:54:30  profilanswer
 

:ouch: ha merde je connaissais pas du tout ça !? merci :jap:
mais pourquoi dans le code de je ne sais plus quel mbean de jboss ils ne font pas ça plutot que de balancer de l'html directement dans l'mbean!?


Message édité par the real moins moins le 23-09-2004 à 01:54:42

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°856155
the real m​oins moins
Posté le 23-09-2004 à 01:59:35  profilanswer
 

(y'a un endroit +/- standard de persistLocation pour mes mbeans avec lesquels je voudrais utiliser l'ObjectStreamPersistenceManager, ou bien j'invente? y'a un moyen d'aller coller ça dans le server/xxx/conf de jboss par exemple, sans lui donner le chemin complet?)
 
(y'a un endroit ou sont documenté les differents PersistenceManager pour jboss-mx - s'il y en a d'autres ?)
 
 
(bon, faut que je trouve un moyen de te garder sur le forum toi [:joce])


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°856156
julienv
Posté le 23-09-2004 à 02:07:32  profilanswer
 

the real moins moins a écrit :

(y'a un endroit +/- standard de persistLocation pour mes mbeans avec lesquels je voudrais utiliser l'ObjectStreamPersistenceManager, ou bien j'invente? y'a un moyen d'aller coller ça dans le server/xxx/conf de jboss par exemple, sans lui donner le chemin complet?)


 
oui avec en utilisant une propriete genre ${}, en general on met ce genre de truc dans /server/XXX/data
 
essaie pour persist location : :${jboss.server.data.dir} ca devrait mettre dans ce repertoire
 

the real moins moins a écrit :


(y'a un endroit ou sont documenté les differents PersistenceManager pour jboss-mx - s'il y en a d'autres ?)


 
j ai vu que dimitri avait fait un nouveau persistence manager : http://www.jboss.org/wiki/Wiki.jsp [...] nceService
 

the real moins moins a écrit :


(bon, faut que je trouve un moyen de te garder sur le forum toi [:joce])


 
:-), pas de prb, j aime contribuer


Message édité par julienv le 23-09-2004 à 02:07:53
n°856157
the real m​oins moins
Posté le 23-09-2004 à 02:09:50  profilanswer
 

merci beaucoup! j'essaie tout ça dès que j'ai une heure ou deux qui se dégage !
(foutue deadline à la con [:kiki])


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  jmx et persistence ? vaporware ?

 

Sujets relatifs
[JAVA]Prob de persistence d'une session apres un shutdown de tomcat[Java]Persistence
Plus de sujets relatifs à : jmx et persistence ? vaporware ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR