hello world

          隨筆 - 2, 文章 - 63, 評論 - 0, 引用 - 0
          數據加載中……

          RMI連接的簡單例子

          自己依照已有的源代碼,主要是在JMX框架下,實現了RMI遠程調用的一個簡單的例子,主要是為了驗證RMI調用時文件的配置情況。
          主要有forPlay類及對應的MBean,Server端以及client端,其中,clint端是和其他文件異地配置的,在同一臺機子上更沒問題了。通過RMI遠程連接,我們可以實現一個瘦客戶端的,即主要的MBean是放在Server端,客戶端使用相應的類時,只需要通過RMI調用就行了,另外,MBean只需和服務器同包放置或者服務器能夠找到的位置,無須顯式的注冊,這是我實現這個程序的主要目的。
          server端的源代碼和JMX下RMI遠程調用的入門(環境變量的設置)里面的Server.java文件是一樣的,涉及到環境變量以及如何運行,這篇文章里也有詳細介紹。這里只給出我今天寫的一段代碼
          整個程序一共有四個文件
          forReplay.java、forReplayMBean.java、Client.java以及前面說到的Server.java,這里給出前三個文件的代碼:
          ***********************************************************
          forReplay.java
          ***************************************
          public class forReplay

           implements forReplayMBean{
           
           private String State="待調用";
           
           public void play(){
            System.out.println("play函數調用成功!");
            
           }

           public String getState() {
            
            return State;
           }

           public void setState(String s) {
            State=s;
            
           }

          }
          ***********************************************************
          ***********************************************************
          forReplayMBean.java
          ***************************************
          public interface forReplayMBean {
           
           public String getState();
           public void setState(String s);
           public void play();

          }
          ***********************************************************
          ***********************************************************
          Client.java
          ***************************************
          import javax.management.MBeanServerConnection;
          import javax.management.ObjectName;
          import javax.management.remote.JMXConnector;
          import javax.management.remote.JMXConnectorFactory;
          import javax.management.remote.JMXServiceURL;

          public class Client {

              public static void main(String[] args) {
                  try {
                   
                      // 創建RMI連接客戶端到RMI連接服務器
                      JMXServiceURL url = new JMXServiceURL(
                  "service:jmx:rmi:///jndi/rmi://localhost:9999/server");
                      JMXConnector jmxc = JMXConnectorFactory.connect(url, null);

                      // 獲得一個MBean服務器連接
                      MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();

                      //創建一個forPlay類
                      ObjectName mbeanName = new ObjectName("chengang:name=forReplay");
                      mbsc.createMBean("forReplay", mbeanName, null, null);

                     
                      System.out.println("\nMBean數量為" + mbsc.getMBeanCount());// 獲得Mbean的數量
                      mbsc.invoke(mbeanName,"play", null, null);//調用forPlay類中的play()函數

                      Thread.sleep(2000);//掛起2000毫秒,等待服務器反應.
                   
                      mbsc.unregisterMBean(mbeanName); //注銷MBean的注冊,不是必要的
                      jmxc.close();// 關閉連接,不是必要的
                     
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              }
          }

          ***********************************************************
          ***********************************************************

          posted on 2008-04-03 21:47 聽風 閱讀(521) 評論(0)  編輯  收藏 所屬分類: JAVA

          主站蜘蛛池模板: 汤原县| 浮山县| 田林县| 安龙县| 保山市| 金乡县| 潍坊市| 搜索| 三穗县| 灌南县| 喀喇沁旗| 如东县| 宁津县| 宜君县| 泰兴市| 夏津县| 化州市| 五大连池市| 武冈市| 鸡泽县| 南汇区| 东海县| 垣曲县| 新民市| 浦东新区| 博客| 南华县| 陇西县| 田阳县| 嘉善县| 绿春县| 磐安县| 曲水县| 沙坪坝区| 虎林市| 甘洛县| 时尚| 阿拉善盟| 泸定县| 岑巩县| 九寨沟县|