Java 使用RMI

來源:互聯網
上載者:User

標籤:ring   locate   string   main   connected   hello   imp   java   執行   

Java 使用RMI

Java使用序列化的方式,可以實現遠端的方法調用,在分工合作時非常方便。本文記錄使用java標準庫實現rmi

一、服務端結構
.├── pom.xml├── src│   ├── main│   │   └── java│   │       └── hello│   │           ├── HelloImpl.java│   │           ├── HelloServer.java│   │           └── IHello.java│   └── test│       └── java│           └── mycom│               └── AppTest.java└── target
IHello.java
package hello;import java.rmi.Remote;import java.rmi.RemoteException;public interface IHello extends Remote {    public String sayHelloToSomeBody(String someBodyName) throws RemoteException;
HelloImpl.java
package hello;import java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;public class HelloImpl extends UnicastRemoteObject implements IHello {    public HelloImpl() throws RemoteException {        super();    }    public String sayHelloToSomeBody(String someBodyName) throws RemoteException {        System.out.println("Connected sucessfully!");        return "你好," + someBodyName + "!";    }}
HelloServer.java
package hello;import java.net.MalformedURLException;import java.rmi.AlreadyBoundException;import java.rmi.Naming;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;public class HelloServer {    public static void main(String args[]) {        try {            IHello rhello = new HelloImpl();            LocateRegistry.createRegistry(8888);            // 如果配置在遠程伺服器,把地址換成你的ip            System.setProperty("java.rmi.server.hostname","127.0.0.1");            Naming.bind("rmi://localhost:8888/RHello", rhello);            System.out.println(">>>>>INFO:遠程IHello對象綁定成功!");        } 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();        }    }}

在服務端啟動HelloServer.java就會在8888連接埠監聽請求了

二、用戶端

用戶端只要分享介面檔案就好了

啟動代碼

package hello;import java.net.MalformedURLException;import java.rmi.Naming;import java.rmi.NotBoundException;import java.rmi.RemoteException;public class Client {    public static void main(String args[]) {        try {            // 填寫伺服器ip            IHello rhello = (IHello) Naming.lookup("rmi://127.0.0.1:8888/RHello");            System.out.println(rhello.sayHelloToSomeBody("Erich"));        } catch (NotBoundException e) {        } catch (MalformedURLException e) {            e.printStackTrace();            e.printStackTrace();        } catch (RemoteException e) {            e.printStackTrace();        }    }}
三、小結

可以看到,用戶端只要得到介面檔案就能執行操作,而具體的實現交給服務端完成,這種架構可以解耦調用和實現

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.