补充一下我的程序如下:
FangFa.java
import java.rmi.Remote;
public interface FangFa extends java.rmi.Remote
{
public String getName() throws java.rmi.RemoteException;
public String getId() throws java.rmi.RemoteException;
public String getSex() throws java.rmi.RemoteException;
}
Server.java
import java.rmi.*;
import java.rmi.server.*;
public class Server extends UnicastRemoteObject implements FangFa
{
public Server() throws java.rmi.RemoteException
{super();}
public String getName() throws java.rmi.RemoteException {return "123";}
public String getId() throws java.rmi.RemoteException {return "0000001";}
public String getSex() throws java.rmi.RemoteException {return "123";}
}
Run.java
public class Run
{
public static void main(String args[])
{
try{
System.setSecurityManager(new java.rmi.RMISecurityManager());
Server obj=new Server();
java.rmi.Naming.rebind("//192.168.0.5/Server",obj);
java.rmi.Naming.rebind("//192.168.1.5/Server",obj);
System.out.println("Wait...");
}catch(Exception e){System.out.println(e);}
}
}
Client.java
import java.rmi.*;
public class Client
{
public static void main(String args[])
{
System.setSecurityManager(new RMISecurityManager());
try{
FangFa server=(FangFa)Naming.lookup("rmi://192.168.0.5/Server");
System.out.println(server.getId());
System.out.println(server.getName());
System.out.println(server.getSex());
}catch(Exception e){System.out.println(e);}
}
}
我在有一个网卡的机器上都调试好了。不知为什么到了两块网卡的机器就不行??
FangFa.java
import java.rmi.Remote;
public interface FangFa extends java.rmi.Remote
{
public String getName() throws java.rmi.RemoteException;
public String getId() throws java.rmi.RemoteException;
public String getSex() throws java.rmi.RemoteException;
}
Server.java
import java.rmi.*;
import java.rmi.server.*;
public class Server extends UnicastRemoteObject implements FangFa
{
public Server() throws java.rmi.RemoteException
{super();}
public String getName() throws java.rmi.RemoteException {return "123";}
public String getId() throws java.rmi.RemoteException {return "0000001";}
public String getSex() throws java.rmi.RemoteException {return "123";}
}
Run.java
public class Run
{
public static void main(String args[])
{
try{
System.setSecurityManager(new java.rmi.RMISecurityManager());
Server obj=new Server();
java.rmi.Naming.rebind("//192.168.0.5/Server",obj);
java.rmi.Naming.rebind("//192.168.1.5/Server",obj);
System.out.println("Wait...");
}catch(Exception e){System.out.println(e);}
}
}
Client.java
import java.rmi.*;
public class Client
{
public static void main(String args[])
{
System.setSecurityManager(new RMISecurityManager());
try{
FangFa server=(FangFa)Naming.lookup("rmi://192.168.0.5/Server");
System.out.println(server.getId());
System.out.println(server.getName());
System.out.println(server.getSex());
}catch(Exception e){System.out.println(e);}
}
}
我在有一个网卡的机器上都调试好了。不知为什么到了两块网卡的机器就不行??
grant {
permission java.security.AllPermission;
};
192.168.0.5
在一个新dos窗口中:
set classpath=
rmiregistry
在一个新dos窗口中:
java -Djava.rmi.server.codebase=http://192.168.0.17/ -Djava.security.policy=java.policy Run
其中:http://192.168.0.17/是我的stub文件的所在地
192.168.0.17
在一个新dos窗口中:
java -Djava.security.policy=java.policy Client
服务端和客户端用同一个policy
不知道怎么解决,阿,
有方法请告知,多谢
[email protected]
运行服务端的IP:192.168.0.5和192.168.1.5
肯定能PING通192.168.0.5。
192.168.1.5不行
方法如下:
在运行rmiregistry时候添加java.rmi.server.hostname的属性
start rmiregistry -J-Djava.rmi.server.hostname=192.168.0.5
在注册你的服务时候
java -Djava.rmi.server.hostname=192.168.0.5 Run
应该就OK了