隨筆-109  評論-187  文章-25  trackbacks-0

          1:文件Service.java ServiceImpl.java ServiceServer.java ServiceClient.java? client.policy

          結構
          ?src
          ??? net.loocky.rmi/ *.java
          ??? client.policy

          文件如下:
          Service.java是個interface
          package net.loocky.rmi;

          import java.rmi.Remote;
          import java.rmi.RemoteException;

          public interface Service extends Remote {

          ?public String getName() throws RemoteException;

          ?public void setName(String name) throws RemoteException;

          }
          ServiceImpl.java Service的實現
          package net.loocky.rmi;

          import java.rmi.RemoteException;
          import java.rmi.server.UnicastRemoteObject;

          public class ServiceImpl extends UnicastRemoteObject implements Service {
          ?private static final long serialVersionUID = 1L;

          ?private String name;

          ?public ServiceImpl(String name) throws RemoteException {
          ??this.name = name;
          ?}

          ?public String getName() throws RemoteException {
          ??return name;
          ?}

          ?public void setName(String name) throws RemoteException {
          ??this.name = name;

          ?}

          }

          ServiceServer
          package net.loocky.rmi;

          import java.rmi.Naming;

          public class ServiceServer {

          ?/**
          ? * @param args
          ? */
          ?public static void main(String[] args) {
          ??try {

          ???ServiceImpl s1 = new ServiceImpl("my name is john");
          ???ServiceImpl s2 = new ServiceImpl("my name is loocky");
          ???Naming.rebind("john", s1);
          ???Naming.rebind("loocky", s2);
          ???System.out.println("waiting for clients...");
          ??} catch (Exception e) {
          ???e.printStackTrace();
          ??}

          ?}

          }
          ServiceClient
          package net.loocky.rmi;

          import java.rmi.Naming;
          import java.rmi.RMISecurityManager;

          public class ServiceClient {

          ?/**
          ? * @param args
          ? */
          ?public static void main(String[] args) {
          ??System.setSecurityManager(new RMISecurityManager());
          ??String url = "rmi://127.0.0.1:1099/";
          ??try {
          ???Service s1 = (Service) Naming.lookup(url + "john");
          ???Service s2 = (Service) Naming.lookup(url + "loocky");
          ???System.out.println(s1.getName());
          ???s2.setName("my name is not loocky");
          ???System.out.println(s2.getName());

          ??} catch (Exception e) {
          ???e.printStackTrace();
          ??}
          ?}

          }
          client.policy
          grant
          {
          ? permission java.security.AllPermission;
          // permission java.net.SocketPermission "127.0.0.1:1099","connect";
          // permission java.net.SocketPermission "127.0.0.1:80","connect";
          };

          有了這些文件下面要做的事情是

          1:進入bin/? rmic net.loocky.rmi.ServiceImpl 生成STUB
          2:dos下面 rmiregistry
          3:java net.loocky.rmi.ServiceServer
          4: java -Djava.security.policy=client.policy net.loocky.rmi.ServiceClient
          5:查看控制臺的結果吧!




          posted on 2006-05-26 11:10 小小程序程序員混口飯吃 閱讀(387) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 延津县| 隆昌县| 泽库县| 义乌市| 黄骅市| 凤阳县| 重庆市| 汉源县| 当雄县| 呈贡县| 井研县| 绍兴县| 玉田县| 三台县| 滨州市| 搜索| 平罗县| 托里县| 中方县| 丰镇市| 左权县| 印江| 和林格尔县| 昆明市| 沽源县| 武陟县| 崇阳县| 翁源县| 资阳市| 宾阳县| 渝北区| 会东县| 红原县| 五华县| 双牌县| 吉安县| 吴桥县| 金堂县| 阳西县| 武强县| 玛曲县|