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";
};
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运行参数