java遠程調用rmi入門執行個體

來源:互聯網
上載者:User

標籤:tor   serial   method   pack   rgs   read   generate   erb   通過   

      RMI是Java的一組擁護開發分布式應用程式的API。RMI使用Java語言介面定義了遠程對象,它集合了Java序列化和Java遠程方法協議(Java Remote Method Protocol)。簡單地說,這樣使原先的程式在同一作業系統的方法調用。變成了不同作業系統之間程式的方法調用。因為J2EE是分布式程式平台。它以RMI機制實現程式組件在不同作業系統之間的通訊。

比方,一個EJB能夠通過RMI調用Web上還有一台機器上的EJB遠程方法。

    用例server端結構大概如此

    

首先定義要傳送的實體類,由於要網路傳輸。必須實現序列化

User.java

package com.yiyuwanglu.rmi.entity;import java.io.Serializable;public class User implements Serializable {/** *  */private static final long serialVersionUID = -8400949180923337013L;private String id;private String name;private int age;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
第二定義實體介面,必須繼承 java.rmi.Remote

UserService

package com.yiyuwanglu.rmi.service;import java.rmi.Remote;import java.rmi.RemoteException;import com.yiyuwanglu.rmi.entity.User;public interface UserService extends Remote {public User getUserById(String id)throws RemoteException;}
第三,實現介面 記得繼承UnicastRemoteObject

UserServiceImpl

package com.yiyuwanglu.rmi.service.impl;import java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;import com.yiyuwanglu.rmi.entity.User;import com.yiyuwanglu.rmi.service.UserService;public class UserServiceImpl extends UnicastRemoteObject  implements UserService {/** *  */private static final long serialVersionUID = 6222175854495075991L;public UserServiceImpl() throws RemoteException {super();// TODO Auto-generated constructor stub}@Overridepublic User getUserById(String id) {User user=new User();user.setId(id);user.setAge(100);user.setName("測試");return user;}}

server端啟動

Program.java

package com.yiyuwanglu.rmi.program;import java.net.MalformedURLException;import java.nio.channels.AlreadyBoundException;import java.rmi.Naming;  import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;  import com.yiyuwanglu.rmi.service.UserService;import com.yiyuwanglu.rmi.service.impl.UserServiceImpl;  public class Program{      public static void main(String[] args) {          // TODO Auto-generated method stub          try {              UserService userService=new UserServiceImpl();              //注冊通訊連接埠              LocateRegistry.createRegistry(6600);              //注冊通訊路徑              Naming.rebind("rmi://127.0.0.1:6600/userService", userService);              System.out.println("Service Start!");          }  catch (RemoteException e) {            System.out.println("建立遠程對象發生異常!

"); e.printStackTrace(); } catch (AlreadyBoundException e) { System.out.println("發生反覆綁定對象異常!

"); e.printStackTrace(); } catch (MalformedURLException e) { System.out.println("發生URL畸形異常!"); e.printStackTrace(); } } }


client測試,最好找還有一台機子(當然同一台機子或許,只是為了類比真實情況,還是還有一台機子,記得iP要換)建立client。切記: 相關的類的包的路徑要跟server一樣

比如:client的 UserService

package com.yiyuwanglu.rmi.service;
最後client調用

package com.yiyuwanglu.rmi.program;import java.rmi.Naming;import com.yiyuwanglu.rmi.entity.User;import com.yiyuwanglu.rmi.service.UserService;public class Client { public static void main(String[] args){          try{              //調用遠程對象,注意RMI路徑與介面必須與server配置一致          UserService userService=(UserService)Naming.lookup("rmi://127.0.0.1:6600/userService");              User user =userService.getUserById("1245");             System.out.println(user.getName());        }catch(Exception ex){              ex.printStackTrace();          }      }  }


先啟動server端Program然後啟動clientClient
顯示結果各自是

Service Start!

client

測試



java遠程調用rmi入門執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.