11.6 Code Listings

11.6.1 UDDIRegistryClientManagerMBean Implementation

11.6.1.1 UDDIRegistryClient Class
  package  jnjmx.ch11;  /** This example requires installation of UDDI4J available from  *  http://www.uddi4j.org or http://www.ibm.com  */  import  org.uddi4j.*;  import  org.uddi4j.client.*;  import  org.uddi4j.datatype.*;  import  org.uddi4j.datatype.business.*;  import  org.uddi4j.datatype.binding.*;  import  org.uddi4j.request.*;  import  org.uddi4j.response.*;  import  org.uddi4j.transport.TransportFactory;  import  org.uddi4j.util.*;  import  org.w3c.dom.Element;  import  java.util.Vector;  import  java.util.Properties;  import  java.io.*;  import  java.net.*;  public   class  UDDIRegistryClient {        String logonID = "";        String logonPW = "";        String regName = "";        String regURL = "";        /**         * Constructor for UDDIRegistryClient.         */  public  UDDIRegistryClient() {        }  public  UDDIRegistryClient(String name, String url, String inLogonID,            String inLogonPW) {                System.out.println("instantiating UDDIRegistryClient");                logonID = inLogonID;                logonPW = inLogonPW;                regName = name;                regURL = url;        }  public   long  ping(String url) {                // >0 is good, 0 is bad, -1 is unknown host or other exception                // this ping uses the ping already on the system through the                // runtime.                // This will work on a Windows 2000 system with default ping.                // On a UNIX system or using another ping tool, the parsing to                // extract the correct average response time may need to be                // customized.  long  roundTripTime = 0;  long  sendTime, endTime = 0;  long  timeMeasured = -1;  long  pingMS = 0;                InetAddress uddiIPAddr;                URL pingURL;                String printstring;  if  (url.equals(""))  {url = regURL; }  if  (url.equals("")) {                       url = regURL;                       // search for all businesses starting with I ("IBM" should                       // be there)                       url = "http://www-3.ibm.com/services/uddi/" +                             "testregistry/inquiryapi";                }                System.out.println(                    "UDDIRegistryClient:ping ping for url " + url);  try  {                       pingURL =  new  URL(url);                       String hostname = pingURL.getHost();                       String th = (InetAddress.getLocalHost()).getHostName();                       uddiIPAddr = InetAddress.getByName(hostname);                       String hostipaddr = uddiIPAddr.getHostAddress();                       System.out.println("Pinging " + hostname + " at " +                           hostipaddr + " from " + th);                       String[] cmdString =  new  String[] {"ping", hostipaddr};                       endTime = -1;  int  avgindex, msindex;                       String avgms =  null;  sendTime = System.currentTimeMillis();                       Process pingproc = (Runtime.getRuntime()).exec(cmdString);                       InputStream pingos = pingproc.getInputStream();                       endTime = System.currentTimeMillis();                       BufferedReader rdr =  new  BufferedReader(  new  InputStreamReader(pingos));                       printstring = rdr.readLine();  while  ((printstring !=  null  ) && (avgms ==  null  )) {                               // System.out.println("ping returned: " +                               // printstring);                               avgindex = printstring.indexOf("Average");                               // *Average  if  (avgindex > 0) {                                      msindex = printstring.indexOf(                                          "ms", avgindex);                                      // *Average = xxxms*                                      avgms = printstring.substring(                                              avgindex+7, msindex); // * = xxx*                               }                               printstring = rdr.readLine();                       }  if  (avgms !=  null  ) {                               avgms =  avgms.replace('=', ' ');                               avgms = avgms.trim();       // should leave just                                                           // the digits                               pingMS = (  new  Long(avgms)).longValue();                       }  if  (pingMS <= 0) {                               // setup url connnection, the url has been                               // redirected to                               HttpURLConnection toUDDI = (HttpURLConnection)                                   pingURL.openConnection();                               toUDDI.setUseCaches(  false  );                               toUDDI.setRequestMethod("POST");                               toUDDI.connect();                               InputStream is = toUDDI.getInputStream();                               BufferedReader urlrdr =  new  BufferedReader(  new  InputStreamReader(is));                               printstring = urlrdr.readLine();  while  (printstring !=  null  )  {                                      // System.out.println(                                      // "url returned: " + printstring);                                      printstring = urlrdr.readLine();                               }                       }                }  catch  (UnknownHostException eu) {                       System.out.println("URL " + url + " is unknown");  return  -1;                }  catch  (MalformedURLException em) {                       System.out.println("URL " + url + " is malformed");  return  -1;                }  catch  (Exception e) {// failed                       System.out.println("Ping failed");  return  -1;  return  pingMS;        }  public   long  test(String url, String businessName) {                System.setProperty(TransportFactory.PROPERTY_NAME,                      "org.uddi4j.transport.ApacheAxisTransport");                UDDIProxy proxy;  if  (url.equals(""))  {url = regURL; }  if  (url.equals("")) {                       // search for all businesses starting with I                       // ("IBM" should be there)                       url = "http://www-3.ibm.com/services/uddi/" +                             "testregistry/inquiryapi";                }  if  (businessName.equals("")) {                       // search for all businesses starting with I                       // ("IBM" should be there)                       businessName = "I";                }                // System.out.println("UDDIRegistryClient:test for url " + url);  try  {                       proxy =  new  UDDIProxy();                       proxy.setInquiryURL(url);                }  catch  (Exception e) {                       e.printStackTrace();  return  -1;                }  try  {                // creating vector of Name Object                Vector bizNames =  new  Vector();                bizNames.add(  new  Name(businessName));                // setting FindQualifiers to "caseSensitiveMatch"                FindQualifiers findQualifiers =  new  FindQualifiers();                Vector qualifier =  new  Vector();                qualifier.add(  new  FindQualifier("caseSensitiveMatch"));                findQualifiers.setFindQualifierVector(qualifier);  long  findStartTime = System.currentTimeMillis();                System.out.println("Looking for businesses " + businessName);                // finding businesses by name                // and setting the maximum rows to be returned as 5.                BusinessList businessList = proxy.find_business(bizNames,  null,   null,   null,   null,  findQualifiers,5);                // System.out.println("uddi getBusiness return " +                             // businessList.getBusinessInfos().size());  long  findReturnTime = System.currentTimeMillis();                Vector businessInfoVector =                    businessList.getBusinessInfos().getBusinessInfoVector(); //              for (int i = 0; i < businessInfoVector.size(); i++) { //                            BusinessInfo businessInfo = (BusinessInfo)                               businessInfoVector.elementAt(i); //                            Print name for each business //                            System.out.println(businessInfo.getNameString()); //               }  if  (businessInfoVector.size() > 0) {  long  elapsedFindTime = findReturnTime - findStartTime;  return  elapsedFindTime;                  }  else  {  return  -1;                  }                  }  catch  (UDDIException e) {                  System.out.println("UDDIRegistryClient:test UDDIException " +                     e.getMessage());                 DispositionReport dr = e.getDispositionReport();  if  (dr!=  null  ) {                    System.out.println("UDDIException faultCode:" +                       e.getFaultCode() +                                       "\n operator:" + dr.getOperator() +                                       "\n generic:"  + dr.getGeneric() +                                       "\n errno:"    + dr.getErrno() +                                       "\n errCode:"  + dr.getErrCode() +                                       "\n errInfoText:" + dr.getErrInfoText());                 }  return  -1;            }  catch  (Exception e) {                 System.out.println("UDDIRegistryClient:test exception " +                      e.getMessage());  return  -1;            }        } } 
11.6.1.2 UDDIRegistryClientManagerMBean Interface
  package  jnjmx.ch11;  public   interface  UDDIRegistryClientManagerMBean {        String getName();  void  setName(String name);        String getURL();  void  setURL(String url);        String getStatus();  void  setStatus(String avail);        Long checkAvailability(String businessName);        Long checkNetworkAvailability(); } 
11.6.1.3 UDDIRegistryClientManager Class
  package  jnjmx.ch11;  /**  *  @author  Heather Kreger: Java And JMX: Building Manageable Systems  *  * This class interacts with the UDDI Registry using UDDI4J  *  */  public   class  UDDIRegistryClientManager  implements  UDDIRegistryClientManagerMBean {        String regName = "";        String regURL = "";        String logonID = "";        String logonPW = "";        String currentStatus = "available";        UDDIRegistryClient uddiClient;  public  UDDIRegistryClientManager(String name, String url,            String logonName, String pw) {                regName = name;                regURL = url;                logonID = logonName;                logonPW = pw;                uddiClient =  new  UDDIRegistryClient(regName, regURL, logonID,                    logonPW); }        /**         * Constructor for UDDIRegistryClientManager.         */  public  UDDIRegistryClientManager() {  super  ();                uddiClient =  new  UDDIRegistryClient();        }        /**         *  @see  jnjmx.ch11.UDDIRegistryClientManagerMBean#getName()         */  public  String getName() {  return  regName;        }        /**         *  @see  jnjmx.ch11.UDDIRegistryClientManagerMBean#setName(String)         */  public   void  setName(String name) {                regName = name;        }        /**         *  @see  jnjmx.ch11.UDDIRegistryClientManagerMBean#getURL()         */  public  String getURL() {  return  regURL;        }        /**         *  @see  jnjmx.ch11.UDDIRegistryClientManagerMBean#setURL(String)         */  public   void  setURL(String url) {                regURL = url;        }        /**         *  @see  jnjmx.ch11.UDDIRegistryClientManagerMBean#getStatus()         */  public  String getStatus() {  return  currentStatus;        }        /**         *  @see  jnjmx.ch11.UDDIRegistryClientManagerMBean#setStatus(String)         */  public   void  setStatus(String avail) {                currentStatus = avail;        }        /**         *  @see  jnjmx.ch11.UDDIRegistryClientManagerMBean#checkAvailability(int)         */  public  Long checkAvailability(String businessName) {               // System.out.println(               "UDDIRegistryClientManager:checkAvailability:testing uddi server "               + regURL);  long  rc = uddiClient.test(regURL, businessName);  if  (rc > 0)                      currentStatus = "available";  else  currentStatus = "not available";  return   new  Long(rc);        }        /**         *  @see  * jnjmx.ch11.UDDIRegistryClientManagerMBean#checkNetworkAvailability()         */  public  Long checkNetworkAvailability() {                // 0 = not available, else returns response time for ping                // Note, this method will not work if the UDDI registry's URL                // has been redirected.                // System.out.println( "UDDIRegistryClientManager:checkNetworkAvailability:pinging uddi server for " + regURL);  long  rc = 0;                Long zero =  new  Long(0);  try  {                       rc = uddiClient.ping(regURL);                }  catch  (Exception e) {  return  zero;                }  if  (rc > 0 ) {                       currentStatus = "available";  return   new  Long(rc);                }  else  {                       currentStatus = "not available";  return  zero;                }        } } 

11.6.2 WebServiceRuntimeManagerMBean Implementation

  package  jnjmx.ch11;  import  java.lang.Class;  import  java.util.Date;  public   interface  WebServiceRuntimeManagerMBean {        String getName();        String getType();        String getVersion();                                // getServerVersion        Date getStartTime();                                // getStartDate        Integer getNumberOfServicesDeployed();              // getServicesCount        Integer getNumberofRequests();                      // getTotalCalls        String checkAvailability();        String getServerHostname();                         // getServerHostName        String getServerPort();                             // getServerPort        Boolean getDebug();  void  setDebug(Boolean flip); }  package  jnjmx.ch11;  import  java.util.Date;  import  java.util.ArrayList;  import  java.util.Hashtable;  import  javax.management.*; /**  * Implementing MBean  *     Date getStartTime();                      // getStartDate  *     Integer getNumberOfServicesDeployed();    // getServicesCount  *     Integer getNumberofRequests();            // getTotalCalls  *     String getAvailability();  *     String getServerHostname();               // getServerHostName  *     String getServerPort();                   // getServerPort  *     Boolean getDebug();  *     void setDebug(Boolean flip);  */  public   class  WebServiceRuntimeManager  implements  WebServiceRuntimeManagerMBean {        String rtName = "";        String rtVersion = "V1R0";        Date start;        Integer numDeployed, numRequests;        String status;        String hostname="localhost", port="80";        String rtType = "unknown";        Boolean debugFlag =  new  Boolean("false");        String mbDomain;        Date mbInit;        MBeanServer mbs;        ObjectName runtimeMBName;        /**         * Constructor for WebServiceRuntimeManager.         */  public  WebServiceRuntimeManager() {  super  ();                start =  new  Date();                mbInit =  new  Date();                ArrayList mbServers = MBeanServerFactory.findMBeanServer(  null  );  if  (!mbServers.isEmpty())                       mbs = (MBeanServer) mbServers.get(0);  else  System.out.println(                           "WebServiceRuntimeManager MBean constructor failed");        }  public  WebServiceRuntimeManager (String name, String type,                                         String version) {                rtName = name;                rtType = type;                rtVersion = version;                start =  new  Date();  try  {                      ArrayList mbServers =                         MBeanServerFactory.findMBeanServer(  null  );  if  (!mbServers.isEmpty())                             mbs = (MBeanServer) mbServers.get(0);  else  System.out.println(                                 "WebServiceRuntimeManager MBean constructor " +                                     failed");                      String mbDomain = "SoapManagement";                      runtimeMBName =  new  ObjectName(mbDomain, "type", "soap");                      // runtime MBeanName                      // need to construct WS MBeanName...                      // namekeys = new Hashtable(4);                      // namekeys.put("type", "soap");                      // namekeys.put("name", wsName);                      // wsMBName = new ObjectName(mbDomain, namekeys);                }  catch  (Exception e) {                       System.out.println(                         "WebServiceRuntimeManager MBean constructor failed");                }        }        /**         *  @see  jnjmx.ch11.WebServiceRuntimeManagerMBean#getName()         */  public  String getName() {  return  rtName;        }        /**         *  @see  jnjmx.ch11.WebServiceRuntimeManagerMBean#getType()         */  public  String getType() {  try  {                       rtType = (String) mbs.getAttribute(runtimeMBName,                           "ServerType");                }  catch  (Exception e) {                       // unable to get attribute, return old value                }  return  rtType;        }        /**         *  @see  jnjmx.ch11.WebServiceRuntimeManagerMBean#getVersion()         */  public  String getVersion() {  try  {                       rtVersion = (String) mbs.getAttribute(runtimeMBName,                          "ServerVersion");                }  catch  (Exception e) {                       // unable to get attribute, return old value                }  return  rtVersion;        }  public  Date getStartTime() {  try  {                     start = (Date) mbs.getAttribute(runtimeMBName, "StartDate");                }  catch  (Exception e) {                       // unable to get attribute, return old value                }  return  start;        }  public  Integer getNumberOfServicesDeployed() {  try  {                       numDeployed = (Integer) mbs.getAttribute(runtimeMBName,                           "ServiceCount");                }  catch  (Exception e) {                       // unable to get attribute, return old value                }  return  numDeployed;        }        /**         *  @see  jnjmx.ch11.WebServiceRuntimeManagerMBean#getNumberofRequests()         */  public  Integer getNumberofRequests() {  try  {                       numRequests = (Integer) mbs.getAttribute(runtimeMBName,                           "TotalCount");                }  catch  (Exception e) {                       // unable to get attribute, return old value                }  return  numRequests;        }  public  String getServerHostname() {  try  {                       hostname = (String) mbs.getAttribute(runtimeMBName,                           "ServerHostname");                }  catch  (Exception e) {                       // unable to get attribute, return old value                }  return  hostname;        }  public  String getServerPort() {  try  {                       port = (String) mbs.getAttribute(runtimeMBName,                           "ServerPort");                }  catch  (Exception e) {                       port = "unknown";                }  return  port;        }        /**         *  @see  jnjmx.ch11.WebServiceRuntimeManagerMBean#getAvailability()         */  public  String checkAvailability() {                // this should exercize the Web Service Runtime in some way                String status = "unknown";  return  status;        }  public   void  setDebug(Boolean dbg) {  try  {                       Attribute newDbg =  new  Attribute("WstkDebug", dbg);                       mbs.setAttribute(runtimeMBName, newDbg);                }  catch  (Exception e) {                       // unable to get attribute, return old value                }        }  public  Boolean getDebug() {  try  {                       debugFlag = (Boolean) mbs.getAttribute(runtimeMBName,                           "WstkDebug");                }  catch  (Exception e) {                       // unable to get attribute, return old value                }  return  debugFlag;        } } 

11.6.3 WebServiceManagerMBean Implementation

  package  jnjmx.ch11;  import  java.util.Date;  public   interface  WebServiceManagerMBean {        String getName();        String getVersion();  void  setVersion(String version);        Integer getNumberofRequests();                //getInvocations        Integer getNumberofResponses();               // getSucesses        Integer getNumberofFailureResponses();        // getFailures        Date getStartTime();                          // getStartDate        Integer getAverageResponseTimeofResponses();  // getAverageResonseTimeMs        String checkAvailability();                   // getStatus        Integer getTotalElapsedExecutionTime();       // getTotalProcessTimeMs }  package  jnjmx.ch11;  import  java.util.ArrayList;  import  java.util.Date;  import  javax.management.*;  import  java.util.Hashtable;  public   class  WebServiceManager  implements  WebServiceManagerMBean {        String wsName = "";        String wsVersion = "v1r0";        String mbDomain;        Date mbInit;        MBeanServer mbs;        ObjectName runtimeMBName, wsMBName;        Hashtable namekeys;        /**         * constructor for WebServiceManager         */  public  WebServiceManager() {                mbInit =  new  Date();                ArrayList mbServers = MBeanServerFactory.findMBeanServer(  null  );  if  (!mbServers.isEmpty())                       mbs = (MBeanServer) mbServers.get(0);  else  System.out.println(                           "WebServiceManager MBean constructor failed");        }  public  WebServiceManager(String name, String version) {                wsName = name;                wsVersion = version;                mbInit =  new  Date();  try  {                      ArrayList mbServers =                             MBeanServerFactory.findMBeanServer(  null  );  if  (!mbServers.isEmpty())                             mbs = (MBeanServer) mbServers.get(0);  else  System.out.println(                                 "WebServiceManager MBean constructor failed");                      String mbDomain = "SoapManagement";                      runtimeMBName =  new  ObjectName(mbDomain, "type", "soap");                      // runtime MBeanName                      // need to construct WS MBeanName...                      namekeys =  new  Hashtable(4);                      namekeys.put("type", "soap");                      namekeys.put("name", wsName);                      wsMBName =  new  ObjectName(mbDomain, namekeys);                }  catch  (Exception e) {                       System.out.println(                           "WebServiceManager MBean constructor failed");                }        }        /**         *  @see  jnjmx.ch11.WebServiceManagerMBean#getName()         */  public  String getName() {  return  wsName;        }        /**         *  @see  jnjmx.ch11.WebServiceManagerMBean#getName()         */  public   void  setName(String name) {                // this will change what MBean is used, but it                // will not change the name of the MBean.                wsName = name;  try  {                       wsMBName =  new  ObjectName(mbDomain, namekeys);                }  catch  (Exception e) {                       // bad name                }        }        /**         *  @see  jnjmx.ch11.WebServiceManagerMBean#getVersion()         */  public  String getVersion() {                // version is a local concept, not used by JMX or Web services  return  wsVersion;        }        /**         *  @see  jnjmx.ch11.WebServiceManagerMBean#setVersion()         */  public   void  setVersion(String version) {                wsVersion = version;        }        /**         *  @see  jnjmx.ch11.WebServiceManagerMBean#getStartDate()         */  public  Date getStartTime() {                Date initDate;  try  {                       initDate = (Date) mbs.getAttribute(wsMBName, "StartDate");                }  catch  (Exception e) {                       initDate = mbInit;                }  return  initDate;        }        /**         *  @see  jnjmx.ch11.WebServiceManagerMBean#getNumberofRequests()         */  public  Integer getNumberofRequests() {                Integer numReq;  try  {                       numReq = (Integer) mbs.getAttribute(wsMBName,                           "Invocations");                }  catch  (Exception e) {                   numReq =  new  Integer(0);            }  return  numReq;    }    /**     *  @see  jnjmx.ch11.WebServiceManagerMBean#getNumberofResponses()     */  public  Integer getNumberofResponses() {            Integer numSucc;  try  {                 numSucc = (Integer) mbs.getAttribute(wsMBName, "Successes");            }  catch  (Exception e) {                 numSucc =  new  Integer(0);            }  return  numSucc;    }    /**     *  @see  jnjmx.ch11.WebServiceManagerMBean#getNumberofFailureResponses()     */  public  Integer getNumberofFailureResponses() {            Integer numFailures;  try  {                   numFailures = (Integer) mbs.getAttribute(wsMBName,                       "Failures");            }  catch  (Exception e) {                   numFailures =  new  Integer(0);            }  return  numFailures;    }    /**     *  @see  jnjmx.ch11.WebServiceManagerMBean#getAverageResponseTimeofResponses()     */  public  Integer getAverageResponseTimeofResponses() {            Integer avgRT;  try  {                   avgRT = (Integer) mbs.getAttribute(wsMBName,                       "AverageResponseTimeMs");            }  catch  (Exception e) {                       avgRT =  new  Integer(0);                }  return  avgRT;        }        /**         *  @see  jnjmx.ch11.WebServiceManagerMBean#getAvailability()         */  public  String checkAvailability() {                String status;  try  {                       status = (String) mbs.getAttribute(wsMBName, "Status");                }  catch  (Exception e) {                       status = "unknown";                }  return  status;        }        /**         *  @see  jnjmx.ch11.WebServiceManagerMBean#getTotalElapsedExecutionTime()         */  public  Integer getTotalElapsedExecutionTime() {                Integer procTime;  try  {                       procTime = (Integer) mbs.getAttribute(wsMBName,                           "TotalProcessTimeMs");                }  catch  (Exception e) {                       procTime =  new  Integer(0);                }  return  procTime;        } } 

11.6.4 StockQuote Service WSDL Document

 <?xml version="1.0"?>  <definitions name="StockQuote"           targetNamespace="http://example.com/stockquote.wsdl"           xmlns:tns="http://example.com/stockquote.wsdl"           xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"           xmlns:xsd1="http://example.com/stockquote.xsd"           xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"           xmlns="http://schemas.xmlsoap.org/wsdl/">     <message name="GetTradePriceInput">         <part name="tickerSymbol" element="xsd:string"/>         <part name="time" element="xsd:timeInstant"/>     </message>     <message name="GetTradePriceOutput">         <part name="result" type="xsd:float"/>     </message>     <portType name="StockQuotePortType">         <operation name="GetTradePrice">            <input message="tns:GetTradePriceInput"/>            <output message="tns:GetTradePriceOutput"/>         </operation>     </portType>     <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">         <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>         <operation name="GetTradePrice">            <soap:operation soapAction="http://example.com/GetTradePrice"/>            <input>                <soap:body use="encoded" namespace="http://example.com/stockquote"                           encodingStyle=                               "http://schemas.xmlsoap.org/soap/encoding/"/>            </input>            <output>                <soap:body use="encoded" namespace=                    "http://example.com/stockquote"                           encodingStyle=                               "http://schemas.xmlsoap.org/soap/encoding/"/>            </output>         </operation>>     </binding>     <service name="StockQuoteService">         <documentation>My first service</documentation>         <port name="StockQuotePort" binding="tns:StockQuoteBinding">            <soap:address location="http://example.com/stockquote"/>         </port>     </service> </definitions> 


Java and JMX. Building Manageable Systems
Javaв„ў and JMX: Building Manageable Systems
ISBN: 0672324083
EAN: 2147483647
Year: 2000
Pages: 115

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net