Java的RMI(远程方法调用)的实现范例
2013-01-23 10:33
756 查看
这个范例是基于JDK1.5的RMI程序搭建。
主要将服务器端和客户端分布在两个独立的项目工程中,以实现客户端传递参数到服务器端,服务器端返回查询结果的过程。
1.在Eclipse里面创建一个server 端的project。然后创建一个接口(IRemote),这个接口是你要向client端开放的方法定义。 里面开放一个通过参数返回结果的方法。并且这个接口继承java.rmi.Remote接口。
2.创建上述接口(IRemote)的实现类(RemoteImpl)。
3. 定义一个服务器端主程序入口,注册你已经实现的RMI接口,包括开放端口等。
4.到目前为止,Server端的代码已经全部写完。现在将接口(IRemote)打包成jar,导入到客户端工程中。
5.开始创建client端的程序。新建一个project。创建完成后,把刚才jar包导入进client的项目中。
6.导入接口jar以后,可以开始编写一个client端的主程序,并调用server端的方法。
7.执行步骤,先执行服务器端程序,然后再执行客户端程序。
主要将服务器端和客户端分布在两个独立的项目工程中,以实现客户端传递参数到服务器端,服务器端返回查询结果的过程。
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.执行步骤,先执行服务器端程序,然后再执行客户端程序。
相关文章推荐
- Java的RMI(远程方法调用)的实现范例
- Java的RMI远程方法调用实现和应用
- Java的RMI远程方法调用实现和应用
- spring整合RMI实现Java远程方法调用
- Java动态代理实现模拟RMI远程方法调用
- Java远程方法调用RMI的实现
- [Java] 演示RMI(远程方法调用) 的一个例子
- RMI(远程方法调用)实现简单的查单词功能
- Java中的RMI(远程方法调用)
- 使用RMI实现远程方法调用
- .net下的面向工控领域的远程方法调用(RMI)中间件,客户端协议栈应答端实现
- 关于远程方法调用(RMI)的实现
- Java学习笔记之RMI远程方法调用
- Java远程方法调用(RMI)
- Java远程方法调用(RMI)机制
- 在java中实现远程方法调用
- Java远程方法调用(RMI)
- java 远程方法调用RMI
- RMI(远程方法调用)实现远程操作电脑的步骤
- Java远程方法调用(RMI)