现在的位置: 首页 > 综合 > 正文

RMI实践

2013年10月11日 ⁄ 综合 ⁄ 共 2756字 ⁄ 字号 评论关闭
package com.livedoor.commodity.client;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;

public class RmiServer {

    /**
     * @param args
     */
    public static void main(String[] args) {
          if(System.getSecurityManager()==null)
            {
              //new RMISecurityManager().;
              System.setProperty( "java.security.policy", "server.policy" );
               System.setSecurityManager(new RMISecurityManager());
            }
            try {
                LocateRegistry.createRegistry(1111);
                 RmiMessage rmessage=new MessageImp();
                    rmessage.setMessage("chexp");
                    Naming.rebind("//10.4.2.208:1111/messageObj",rmessage);
            } catch (RemoteException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
          
            System.out.println("Constructing server implementions...");
            System.out.println("Binding server implementions to Registry");
        ;
       
    }

}
 package com.livedoor.commodity.client;

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

public interface RmiMessage extends Remote {

public String getMessage() throws RemoteException;
    
public  void setMessage(String message) throws RemoteException;
}
package com.livedoor.commodity.client;

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

public class RmiClient {

    /**
     * @param args
     */
    public static void main(String[] args) {
        if(System.getSecurityManager()==null)
        {
          System.setProperty( "java.security.policy", "client.policy" );
           System.setSecurityManager(new RMISecurityManager());
        }

        try{
              RmiMessage c1=( RmiMessage)Naming.lookup("//10.4.2.233:1111/messageObj");
              System.out.println(c1.getMessage());
        }
        catch(Exception e)
        {
           e.printStackTrace();
        }
        System.exit(0);

    }

}
package com.livedoor.commodity.client;


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

public class MessageImp  extends UnicastRemoteObject implements RmiMessage  {

    String message;
    protected MessageImp() throws RemoteException {
        super();

    }

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    public String getMessage() throws RemoteException {

        return message;
    }

    public void setMessage(String message) throws RemoteException {
        this.message=message;
    }

}
这两个文件放到classpath下,Eclipse工程根目录即可。
client.policy
grant
{
 permission java.net.SocketPermission "*:1000-9999","accept,connect,listen,resolve";
};
server.policy
grant
{
 permission java.net.SocketPermission "*:1000-9999","accept,connect,listen,resolve";
};

然后什么也不直接运行RmiServer,不用任何java运行参数。
直接运行RmiClient,不用任何java运行参数

抱歉!评论已关闭.