分布式程序设计现在用的地方可多了,但是自己一直没有去了解这方面的内容,今天兴致一来,就找了本书扫了一下盲,并且做了个简单的示例进行了实现,主要是通过java的RMI(Remote method Invoke)来做的,理论这里就不说了,直接从程序上稍作分析。
RMI应用程序编写步骤
1、定义一个Remote接口:(根据文件名称,读取文件内容)
public interface FileInterface extends Remote
{
public String readFile(String fileName) throws RemoteException;
}
2、实现一个Remote接口
public class FileImpl extends UnicastRemoteObject implements FileInterface {
protected FileImpl() throws RemoteException {
super();
}
@Override
public String readFile(String fileName) throws RemoteException {
try {
File file = new File(fileName);
StringBuffer sbuffer = new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String str ="";
while((str = br.readLine()) != null ) {
sbuffer.append(str + "\n");
}
return sbuffer.toString();
} catch (Exception e) {
System.out.println("FileImpl.readFile(): " + e.getMessage());
e.printStackTrace();
return null;
}
}
}
3、编写Server端程序
public class FileServer {
public static void main(String[] args) {
int portNum = 9090;
if(System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
try {
LocateRegistry.createRegistry(portNum);
FileInterface fi = new FileImpl();
Naming.rebind("//127.0.0.1:" + portNum + "//FileServer", fi);
System.out.println("Server Start...");
} catch (Exception e) {
System.out.println("FileServer: " + e.getMessage());
e.printStackTrace();
}
}
}
4、编写Client端程序
public class FileClient {
public static void main(String[] args) {
if(args.length != 3) {
System.out.println("Usage: java FileClient filename machinename port");
System.exit(0);
}
try {
String name = "//" + args[1] + ":" + args[2] + "//FileServer";
FileInterface fi = (FileInterface)Naming.lookup(name);
String str = fi.readFile(args[0]);
System.out.println(str);
} catch (Exception e) {
System.out.println("FileServer exception: " + e.getMessage());
e.printStackTrace();
}
}
}
5、生成Stubs和Skeletons,启动服务端和客户端
由于在FileServer中使用的SecurityManager,因此自定义了一个security.policy文件,如下:
grant {
permission java.security.AllPermission;
};
执行过程,在源代码中存在于run.bat文件中:
javac org/clzps/distributed/FileInterface.java
javac org/clzps/distributed/FileImpl.java
rmic org.clzps.distributed.FileImpl
javac org/clzps/distributed/FileServer.java
javac org/clzps/distributed/FileClient.java
java -Djava.security.policy=org/clzps/distributed/security.policy org.clzps.distributed.FileServer
显示界面如下:
通过客户端访问如下:
java org.clzps.distributed.FileClient D:\Test.txt 127.0.0.1 9090,如下所示:
- 大小: 71.8 KB
- 大小: 15.5 KB
分享到:
相关推荐
0729分布式通信框架-RMI1
Java RMI 简单示例
技术分享:分布式环境下Java RMI与RPC,JMS,CORBA,DCOM的比较
完整的Rmi调用示例,极难得的Rmi应用示例
数据库系统概论分布式调用RMI例子程序分布式调用RMI例子程序分布式调用RMI例子程序分布式调用RMI例子程序
RMi java 分布式 开发,包括代码和部署例子
本书覆盖了使用Java开发分布式应用程序的所有方面,包括Socket,RMI,CORBA,以及移动代理和Voyager。本书四部分之间相对独立,便于读者迅速掌握相关内容。另外,本书中包含了大量分布式程序的范例,这些范例将为...
1. 远程调用RMI(Remote Method Invocation): 通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,并且,Spring支持两个传统的RMI(使用 java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的...
使用RMI和CORBA进行分布式java程序设计
本书覆盖了使用Java开发分布式应用程序的所有方面,包括Socket,RMI,CORBA,以及移动代理和Voyager。本书四部分之间相对独立,便于读者迅速掌握相关内容。另外,本书中包含了大量分布式程序的范例,这些范例将为...
RMI简单示例,主要用在一次对刚毕业的学生的培训中的。例子内容是完整的,非常简单,一个RMI开发的简单示例
实验名称 基于Socket的C/S编程实验 实验名称 基于Java RMI的C/S编程实验
java RMI开发指南,详细地讲述了java RMI的原理,有具体的实例描述。
分布式实验报告RMI.docx
使用 Java RMI 构建一个分布式议程服务(agenda service)。不同的客户应能连接到这一共享的议程服务,并查询、添加和删除议程中的会晤(meeting)安排。服务程序应具备新用户注册、清除某一用户所有会晤安排等管理...
介绍了RMI原理和实例,其中提供了完整的服务器和客户端代码
使用Java RMI创建一个分布式议程共享服务。不同的用户可以使用这个共享议程服务执行查询、添加和删除会议的操作。服务器支持会议的登记和清除等功能;
Java分布式处理技术RMI,JNDI,
使用Java RMI创建一个分布式议程共享服务。不同的用户可以使用这个共享议程服务执行查询、添加和删除会议的操作。服务器支持会议的登记和清除等功能; 议程共享服务包括以下功能:用户注册、添加会议、查询会议、...