Bonjour,
dans le cadre de mon projet de Stage "Déploiement de comptes clients à travers différetns serveurs", je souhaite créer un module permettant d'ajouter un virtual host "à chaud" car redémarrer un serveur applicatif n'est pas terrible car on doit attendre que plus aucun client ne soit connecté pour pouvoir le faire.
J'ai commencé donc à faire du JMX et c'est très puissant, masi je n'arrive pas à bien gérer pour l'ajout de virtual host.
L'erreur vient donc de la méthode invoke qui appelle la méthode addchild(Container) du Engine.
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 try { JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://192.168.2.25:8999/jmxrmi"); JMXConnector conn = JMXConnectorFactory.connect(url, null); MBeanServerConnection mbsc = conn.getMBeanServerConnection(); ObjectName objectName = new ObjectName("Catalina:type=Engine"); if (mbsc.getAttribute(objectName, "baseDir") != null) { System.out.println("connexion réussie, baseDir= "+mbsc.getAttribute(objectName, "baseDir")); //ceci sert àvérifier que la connection ait bien été faite } else { System.out.println("connexion ratée"); } org.apache.catalina.Container Sh = new StandardHost(); ((StandardHost) Sh).setAppBase("test2"); ((StandardHost) Sh).setName("test21.appli.fr"); ((StandardHost) Sh).addAlias("yoyoyo"); ((StandardHost) Sh).setAutoDeploy(false); ((StandardHost) Sh).setDeployOnStartup(true); ((StandardHost) Sh).setUnpackWARs(false); org.apache.catalina.Container Sc = new StandardContext(); //creation du contexte du virtual host ((StandardContext) Sc).setDocBase("/data/apache-tomcat-6.0.16/webapps/examples"); ((StandardContext) Sc).setPath("/examples"); ((StandardContext) Sc).setDisplayName("nomCont"); ((StandardHost) Sh).addChild(Sc); Object[] params = {Sh}; String[] signature = {new String("org.apache.catalina.Container")}; mbsc.invoke(objectName, "addChild", params, signature); //invocation de la méthode addchild(Container) de Engine conn.close(); } catch (MBeanException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } catch (AttributeNotFoundException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } catch (InstanceNotFoundException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } catch (ReflectionException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } catch (NullPointerException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } catch (MalformedObjectNameException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); }
des idées?java.io.NotSerializableException: org.apache.catalina.util.LifecycleSupport
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at java.util.HashMap.writeObject(HashMap.java:1001)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at java.rmi.MarshalledObject.<init>(MarshalledObject.java:101)
at javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.invoke(RMIConnector.java:975)
at testjmx2.Main.main(Main.java:81)
BUILD SUCCESSFUL (total time: 1 second)
Partager