Java的RMI(远程方法调用)的实现范例
来源:互联网 发布:网络游戏数据能修改吗 编辑:程序博客网 时间:2024/05/19 23:12
Java的RMI(远程方法调用)的实现范例
2013-01-23 10:33 738人阅读 评论(0)收藏举报
分类:
版权声明:本文为博主原创文章,未经博主允许不得转载。
主要将服务器端和客户端分布在两个独立的项目工程中,以实现客户端传递参数到服务器端,服务器端返回查询结果的过程。
1.在Eclipse里面创建一个server 端的project。然后创建一个接口(IRemote),这个接口是你要向client端开放的方法定义。 里面开放一个通过参数返回结果的方法。并且这个接口继承java.rmi.Remote接口。
- package rmi.server.remote;
- import java.rmi.Remote;
- import java.rmi.RemoteException;
- public interface IRemote extends Remote {
- public String querySQL(String userId) throws RemoteException;
- }
2.创建上述接口(IRemote)的实现类(RemoteImpl)。
- package rmi.server.remote;
- import java.rmi.RemoteException;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- public class RemoteImpl implements IRemote {
- private final static String URL = "jdbc:oracle:thin:@(description=(address_list=(address=(host=192.168.0.80)(protocol=tcp)(port=1521))(load_balance=yes)(failover=on))(connect_data=(service_name=mgdb01)))";
- private final static String USERNAME = "DBUSER";
- private final static String PASSWORD = "DBPASSWORD ";
- public RemoteImpl() throws RemoteException {
- }
- public String querySQL(String userId) throws RemoteException {
- StringBuffer sb = new StringBuffer();
- Connection connection = null;
- try {
- Class.forName("oracle.jdbc.driver.OracleDriver");
- connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
- String query = "select * from u_user where user_id = '" + userId + "'";
- Statement statement = connection.createStatement();
- ResultSet rs = statement.executeQuery(query);
- while (rs.next()) {
- sb.append(" | user id:");
- sb.append(rs.getString("USER_ID"));
- sb.append(" | nick name:");
- sb.append(rs.getString("USER_NICK_NAME"));
- sb.append(" | password:");
- sb.append(rs.getString("USER_PASSWORD"));
- sb.append("\r\n");
- }
- rs.close();
- statement.close();
- connection.close();
- } catch (Exception e) {
- try {
- if (connection != null) {
- connection.close();
- }
- } catch (SQLException e1) {
- e1.printStackTrace();
- }
- e.printStackTrace();
- }
- return sb.toString();
- }
- }
3. 定义一个服务器端主程序入口,注册你已经实现的RMI接口,包括开放端口等。
- package rmi.server;
- import java.rmi.AlreadyBoundException;
- import java.rmi.RemoteException;
- import java.rmi.registry.LocateRegistry;
- import java.rmi.registry.Registry;
- import java.rmi.server.UnicastRemoteObject;
- import rmi.server.remote.IRemote;
- import rmi.server.remote.RemoteImpl;
- public class Server {
- public static void main(String[] args) throws AlreadyBoundException,
- RemoteException {
- RemoteImpl remoteObj = new RemoteImpl();
- IRemote userManager = (IRemote) UnicastRemoteObject.exportObject(remoteObj, 0);
- // Bind the remote object in the registry
- Registry registry = LocateRegistry.createRegistry(2001);
- registry.rebind("userManager", userManager);
- System.out.println("server is ready");
- }
- }
4.到目前为止,Server端的代码已经全部写完。现在将接口(IRemote)打包成jar,导入到客户端工程中。
5.开始创建client端的程序。新建一个project。创建完成后,把刚才jar包导入进client的项目中。
6.导入接口jar以后,可以开始编写一个client端的主程序,并调用server端的方法。
- package rmi.client;
- import java.rmi.NotBoundException;
- import java.rmi.RemoteException;
- import java.rmi.registry.LocateRegistry;
- import java.rmi.registry.Registry;
- import rmi.server.remote.IRemote;
- public class Client {
- public static void main(String[] args) {
- try {
- Registry registry = LocateRegistry.getRegistry("localhost", 2001);
- IRemote userManager = (IRemote) registry.lookup("userManager");
- String strResult = userManager.querySQL("EU0000000095");
- System.out.println(strResult);
- strResult = userManager.querySQL("EU0000000168");
- System.out.println(strResult);
- strResult = userManager.querySQL("EU0000000169");
- System.out.println(strResult);
- } catch (RemoteException e) {
- e.printStackTrace();
- } catch (NotBoundException e) {
- e.printStackTrace();
- }
- }
- }
7.执行步骤,先执行服务器端程序,然后再执行客户端程序。
0 0
- Java的RMI(远程方法调用)的实现范例
- Java的RMI(远程方法调用)的实现范例
- Java的RMI远程方法调用实现和应用
- java 方法的远程调用rmi
- RMI(远程方法调用)实现远程操作电脑的步骤
- 关于远程方法调用(RMI)的实现
- 关于远程方法调用(RMI)的实现
- 利用RMI实现远程方法调用获取数据库的内容
- [Java] 演示RMI(远程方法调用) 的一个例子
- RMI 实现的rpc 远程过程调用 Java
- Java RMI远程方法调用
- Java远程方法调用(RMI)
- Java远程方法调用RMI
- Java Rmi 远程方法调用
- JAVA rmi 远程方法调用
- java rmi远程方法调用
- Java RMI-远程方法调用
- Java远程方法调用(RMI)
- 微信小程序之下拉加载和上拉刷新
- AjaxUpload上传文件
- 微信公众平台测试号那些API未授权的坑
- AJAX跨域访问(get、post请求)
- python 判断为空nan, null
- Java的RMI(远程方法调用)的实现范例
- ubuntu16.04 chrome,SwitchyOmega,shadowsockqt-5
- 利用spotlight监控Linux环境性能
- 按照某字段去重的SQL
- python Scrapy安装
- Android java基础静态(static)方法的继承和重写,面试常问
- 联合概率分布
- 重构二叉树&&判断二叉树的子结构
- 程序员的可迁移技能和经验