Maintenant que nous savons interroger WebLogic via un Service Web,
il serait intéressant de l’interroger via JSON en vu d’afficher les résultats sous forme de graphe dans une simple page HTML avec un peu de JAVASCRIPT.
Il va donc falloir écrire du JSON ce qui est fastidieux…
Donc une petite recherche sur le web et on trouve une belle lib qui fait tout ça.
Il s’agit de gson
Voilà donc le code de ma Servlet:
package fr.free.sebastien.colas.json; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Infos */ public class Infos extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Infos() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/json"); PrintWriter out = response.getWriter(); fr.free.sebastien.colas.ws.Infos infos=new fr.free.sebastien.colas.ws.Infos(); String name=request.getParameter("name"); String attribute=request.getParameter("attribute"); out.print(infos.getJSON(name==null?"":name, attribute==null?"":attribute)); } }
Rien de particulier à signaler si ce n’est qu’on réutilise le JavaBean utilisé pour le Service Web sur lequel on a créé une nouvelle méthode getJSON
.
package fr.free.sebastien.colas.ws; import java.util.HashMap; import javax.jws.WebMethod; import javax.jws.WebService; import javax.management.MBeanServer; import javax.management.ObjectName; import javax.naming.InitialContext; import com.google.gson.Gson; @WebService public class Infos { @WebMethod public String getMBeanValue(String name,String attribute) throws Exception { Object o=null; InitialContext ic; ic = new InitialContext(); MBeanServer server=(MBeanServer)ic.lookup("java:comp/env/jmx/runtime"); o=server.getAttribute(new ObjectName(name), attribute); if (o!=null) return o.toString(); else return null; } /* * Utilisation de la lib gson: * http://code.google.com/p/google-gson/ */ public String getJSON(String name,String attribute) { HashMapmap=new HashMap (); Gson gson=new Gson(); try { map.put("value", getMBeanValue(name, attribute)); } catch (Exception e) { map.put("error", e.getMessage()); } return gson.toJson(map); } }
Dans la méthode on crée tout bêtement une table de hash qui va contenir le resultat de la demande.
On fait l’intérrogation de WebLogic via la méthode Web Service getMBeanValue
Et voià le tour est joué.
On teste tout ça avec une page html:
Interrogation d'un MBean Interrogation d'un MBean
Et voilà on teste est c’est fini.
Vous pouvez télécharger l’application ici: WebServices.ear