开发环境:MyEclipse8.5
服务器ip为192.168.1.100
客户端ip为192.168.1.101
服务器初始目录结构:
src/com/syslink
| server
|-------TaskInfo.java (接口)
|-------TaskDispatcher.java (接口)
|-------TaskInfoImpl.java (实现TaskInfo接口)
|-------TaskDispatcherImpl.java (实现TaskDispatcher接口)
|-------Server.java (启动RMI服务器)
bin/com/syslink
| server
|-------TaskInfo.class
|-------TaskDispatcher.class
|-------TaskInfoImpl.class
|-------TaskDispatcherImpl.class
|-------Server.class
客户端初始目录结构:
src/com/syslink
| server
|-------TaskInfo.java (接口,同服务器下的接口文件)
|-------TaskDispatcher.java (接口,同服务器下的接口文件)
| client
|-------Client.java (启动RMI客户端)
bin/com/syslink
| server
|-------TaskInfo.class
|-------TaskDispatcher.class
| client
|-------Client.class
1:服务器端运行RMIC(我机子上位于C:\Program Files\Java\jdk1.6.0_12\bin)生成stub文件
必须在src目录下执行以下两句:
src>RMIC com.syslink.server.TaskInfoImpl
src>RMIC com.syslink.server.TaskDispatcherImpl
运行完后在
com/syslink/server目录下将新增两个文件:TaskInfoImpl_Stub.class 和 TaskDispatcherImpl_Stub.class
(如果在RMIC命令中加-keep参数,还会生成另两个文件TaskInfoImpl_Stub.java和 TaskDispatcherImpl_Stub.java,最好看一下里面的继承关系,加深理解)
(如果出现找不到类的情况,请添加classpath参数,如:RMIC -classpath . com.syslink.server.TaskInfoImpl )
2:将1中生成的两个*Impl_Stub.class文件拷贝到服务器bin/com/syslink/server和客户端bin/com/syslink/server目录下
3:分别在服务器和客户端的bin/com/syslink/server目录下建一个server.policy文件,内容为:
grant {
permission java.security.AllPermission "", "";
};
(内容可以根据实际情况改,这里表示允许客户端做任何事)
4:服务器端运行start rmiregistry
5:服务器端运行Server
记得在server的启动代码里加上System.setProperty ("java.security.policy", EmailSendServer.class.getResource("server.policy").toString ()); 否则将出现“Access Denied。。。”错误
6:客户端运行Client
跟运行Server一样,加上System.setProperty ("java.security.policy", EmailSendClient.class.getResource("server.policy").toString ()); 否则将出现“Access Denied。。。”错误
7:最后的目录结构为:
服务器最终目录结构:
src/com/syslink
| server
|-------TaskInfo.java (接口)
|-------TaskDispatcher.java (接口)
|-------TaskInfoImpl.java (实现TaskInfo接口)
|-------TaskDispatcherImpl.java (实现TaskDispatcher接口)
|-------Server.java (启动RMI服务器)
|-------TaskInfoImpl_Stub.class (删除也没关系)
|-------TaskDispatcherImpl_Stub.class (删除也没关系)
bin/com/syslink
| server
|-------TaskInfo.class
|-------TaskDispatcher.class
|-------TaskInfoImpl.class
|-------TaskDispatcherImpl.class
|-------Server.class
|-------TaskInfoImpl_Stub.class
|-------TaskDispatcherImpl_Stub.class
|-------server.policy
客户端最终目录结构:
src/com/syslink
| server
|-------TaskInfo.java (接口,同服务器下的接口文件)
|-------TaskDispatcher.java (接口,同服务器下的接口文件)
| client
|-------Client.java (启动RMI客户端)
bin/com/syslink
| server
|-------TaskInfo.class
|-------TaskDispatcher.class
|-------TaskInfoImpl_Stub.class
|-------TaskDispatcherImpl_Stub.class
| client
|-------Client.class
|-------server.policy