mx4j/src/examples/mx4j/examples/tools/remote/hessian Client.java,NONE,1.1 Server.java,NONE,1.1

Simone Bordet <[email protected]> Wed, 23 Feb 2005 13:05:15 +0000
Newsgroups gmane.comp.java.mx4j.cvs
Message-ID <[email protected]>
Update of /cvsroot/mx4j/mx4j/src/examples/mx4j/examples/tools/remote/hessian
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16839/src/examples/mx4j/examples/tools/remote/hessian

Added Files:
	Client.java Server.java 
Log Message:
Examples for the hessian protocol

--- NEW FILE: Client.java ---
/*
 * Copyright (C) The MX4J Contributors.
 * All rights reserved.
 *
 * This software is distributed under the terms of the MX4J License version 1.0.
 * See the terms of the MX4J License in the documentation provided with this software.
 */

package mx4j.examples.tools.remote.hessian;

import javax.management.MBeanServerConnection;
import javax.management.MBeanServerDelegateMBean;
import javax.management.MBeanServerInvocationHandler;
import javax.management.Notification;
import javax.management.NotificationListener;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.management.timer.Timer;

/**
 * This example shows how to connect to a Hessian JMXConnectorServer.
 * To run this example, you need the following jars:
 * <ul>
 * <li>MX4J 3.x</li>
 * <ul>
 * <li>mx4j.jar</li>
 * <li>mx4j-remote.jar</li>
 * <li>mx4j-tools.jar</li>
 * <li>mx4j-examples.jar</li>
 * </ul>
 * <li>Hessian 3.0.8</li>
 * <ul>
 * <li>hessian-3.0.8.jar</li>
 * </ul>
 * </ul>
 *
 * @version $Revision: 1.1 $
 */
public class Client
{
   public static void main(String[] args) throws Exception
   {
      // This JMXServiceURL works only if the connector server is on the same host of
      // the connector. If this is not the case, set the correct host name.
      JMXServiceURL address = new JMXServiceURL("hessian", null, 8080, "/hessian");

      // Connect a JSR 160 JMXConnector to the server side
      JMXConnector connector = JMXConnectorFactory.connect(address);

      // Retrieve an MBeanServerConnection that represent the MBeanServer
      // the remote connector server is bound to
      MBeanServerConnection connection = connector.getMBeanServerConnection();

      // Call the server side as if it is a local MBeanServer
      ObjectName delegateName = ObjectName.getInstance("JMImplementation:type=MBeanServerDelegate");
      Object proxy = MBeanServerInvocationHandler.newProxyInstance(connection, delegateName, MBeanServerDelegateMBean.class, true);
      MBeanServerDelegateMBean delegate = (MBeanServerDelegateMBean)proxy;

      System.out.println(delegate.getImplementationVendor() + " is cool !");

      // Register an MBean, and get notifications via the Hessian protocol
      connection.addNotificationListener(delegateName, new NotificationListener()
      {
         public void handleNotification(Notification notification, Object handback)
         {
            System.out.println("Got the following notification: " + notification);
         }
      }, null, null);

      ObjectName timerName = ObjectName.getInstance("services:type=Timer");
      connection.createMBean(Timer.class.getName(), timerName, null);

      // Unregistering the MBean to get another notification
      connection.unregisterMBean(timerName);

      // Allow the unregistration notification to arrive before killing this JVM
      Thread.sleep(1000);

      connector.close();
   }
}

--- NEW FILE: Server.java ---
/*
 * Copyright (C) The MX4J Contributors.
 * All rights reserved.
 *
 * This software is distributed under the terms of the MX4J License version 1.0.
 * See the terms of the MX4J License in the documentation provided with this software.
 */

package mx4j.examples.tools.remote.hessian;

import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXServiceURL;

/**
 * This example shows how to setup a JSR 160 connector server that uses
 * Caucho's Hessian protocol.
 * <br />
 * MX4J's implementation requires the hessian library version 3.0.8 and
 * a servlet container to run. The default servlet container used is Jetty.
 * To run this example, you need the following jars:
 * <ul>
 * <li>MX4J</li>
 * <ul>
 * <li>mx4j.jar</li>
 * <li>mx4j-remote.jar</li>
 * <li>mx4j-tools.jar</li>
 * <li>mx4j-examples.jar</li>
 * </ul>
 * <li>Jetty 4.2.x or later</li>
 * <ul>
 * <li>org.mortbay.jetty.jar</li>
 * <li>servlet.jar</li>
 * <li>commons-logging.jar</li>
 * </ul>
 * <li>Hessian 3.0.8</li>
 * <ul>
 * <li>hessian-3.0.8.jar</li>
 * </ul>
 * </ul>
 *
 * @version : $Revision: 1.1 $
 */
public class Server
{
   public static void main(String[] args) throws Exception
   {
      // The MBeanServer
      MBeanServer server = MBeanServerFactory.createMBeanServer();

      // Pass null as the host name to tell JMXServiceURL to default to InetAddress.getLocalHost().getHostName()
      JMXServiceURL url = new JMXServiceURL("hessian", null, 8080, "/hessian");

      JMXConnectorServer connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, null, server);
      connectorServer.start();

      System.out.println("Server up and running " + connectorServer + " on " + url);
   }
}



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click