Java RMI 的简单示例
2014-11-24 16:46
399 查看
1. 远程传输对象:
2. 远程对象调用接口:
3. 远程对象调用接口实现:
4. 服务端:
5. 客户端:
package com.huey.dream.bean; import java.io.Serializable; /** * 远程传输对象,须实现java.io.Serializable接口 * @author huey * @version 1.0 * @created 2014-11-18 */ public class Book implements Serializable { /** * */ private static final long serialVersionUID = 8807174227849297542L; private String title; private String author; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Book() { super(); } public Book(String title, String author) { super(); this.title = title; this.author = author; } @Override public String toString() { return "Book [title=" + title + ", author=" + author + "]"; } }
2. 远程对象调用接口:
package com.huey.dream.serv; import java.rmi.Remote; import java.rmi.RemoteException; import java.util.List; import com.huey.dream.bean.Book; /** * 远程对象调用接口,须实现java.rmi.Remote接口 * @author huey * @version 1.0 * @created 2014-11-18 */ public interface BookServ extends Remote { /** * 远程对象调用接口的方法,须抛出java.rmi.RemoteException异常 * @param author * @return * @throws RemoteException */ public List<Book> getBooksByAuthor(String author) throws RemoteException; }
3. 远程对象调用接口实现:
package com.huey.dream.serv.impl; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import java.util.ArrayList; import java.util.List; import com.huey.dream.bean.Book; import com.huey.dream.serv.BookServ; /** * 远程调用对象实现类,须继承java.rmi.server.UnicastRemoteObject类 * @author huey * @version 1.0 * @created 2014-11-18 */ public class BookServImpl extends UnicastRemoteObject implements BookServ { /** * */ private static final long serialVersionUID = -3185430753116015923L; private List<Book> allBooks; public BookServImpl() throws RemoteException { allBooks = new ArrayList<Book>(); allBooks.add(new Book("白夜行", "东野圭吾")); allBooks.add(new Book("嫌疑人X的献身", "东野圭吾")); allBooks.add(new Book("百年孤独", "加西亚·马尔克斯")); } @Override public List<Book> getBooksByAuthor(String author) throws RemoteException { List<Book> books = new ArrayList<Book>(); for (Book book : allBooks) { if (author.equals(book.getAuthor())) { books.add(book); } } return books; } }
4. 服务端:
package com.huey.dream.main; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import com.huey.dream.serv.BookServ; import com.huey.dream.serv.impl.BookServImpl; /** * RMI服务端 * @author huey * @version 1.0 * @created 2014-11-18 */ public class RmiServer { public static void main(String[] args) { try { BookServ bookServ = new BookServImpl(); // 注册端口 LocateRegistry.createRegistry(8098); // 注册路径 Naming.rebind("rmi://127.0.0.1:8098/bookserv", bookServ); System.out.println("Service Start!"); } catch (RemoteException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } } }
5. 客户端:
package com.huey.dream.main; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; import java.util.List; import com.huey.dream.bean.Book; import com.huey.dream.serv.BookServ; /** * RMI客户端 * @author huey * @version 1.0 * @created 2014-11-18 */ public class RmiClient { public static void main(String[] args) { try { // 获取远程对象 BookServ bookServ = (BookServ) Naming.lookup("rmi://127.0.0.1:8098/bookserv"); List<Book> books = bookServ.getBooksByAuthor("东野圭吾"); for (Book book : books) { System.out.println(book); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } catch (NotBoundException e) { e.printStackTrace(); } } }
相关文章推荐
- [原创]Java RMI的简单示例--调用远程方法返回当前时间
- java rmi (2)Java RMI 简单示例
- Java RMI 简单示例
- Java RMI 简单示例
- Java RMI 简单示例
- Java RMI 简单示例
- Java RMI 简单示例
- Java RMI 简单示例
- RMI(三)——Java RMI 简单示例
- Java RMI 简单示例
- 用JDOM包实现生成XML文件的简单示例
- Tomcat4/5连接池的设置及简单应用示例
- 简单的CodeDOM示例
- 构建WebService常用特性[含简单示例程序]
- 最简单的支持中文的示例
- Tomcat4/5连接池的设置及简单应用示例
- Java 5.0 新增 Autoboxing & Unboxing 功能的简单示例
- 异步Socket通信的一个简单示例
- 小偷程序原理和简单示例
- Tomcat4/5连接池的设置及简单应用示例