關於Java的RMI程式設計的一個簡單的例子 (轉)
現在雖然我們很少用到進行,但是做為一個最早的分散式解決方案,我們還是有了解的必要,從例子開始吧(雖然是幾年前的了)!
介面RmiHelloRemoteIntfc .java
import java.rmi.*;
public interface RmiHelloRemoteIntfc extends Remote
{
String helloRemoteObj(String client) throws RemoteException;
}
遠端介面的實現類RmiHelloRemoteObj.java
import java.rmi.server.*;
import java.rmi.*;
public class RmiHelloRemoteObj extends UnicastRemote implements RmiHelloRemoteIntfc
{
public RmiHelloRemoteObj() throws RemoteException
{
super();
}
public String helloRemoteObj(String client) throws RemoteException
{
return "Hello World"+client;
}
}
類RmiHelloServer.java
import java.io.*;
import java.rmi.*;
import java.rmi.server.*;
import sun.applet.*;
import java.rmi.registry.LocateRegistry;
public class RmiHelloServer
{
public RmiHelloServer()
{
}
public static void main(String[] args)
{
//建立並管理器
if(System.getSecurityManager()==null)
{
System.setSecurityManager(new RMISecurityManager());
}
try{
//建立遠端
RmiHelloRemoteObj ttt=new RmiHelloRemoteObj();
//啟動登錄檔
LocateRegistry.createRegistry(2222);
//獎名稱繫結到物件
Naming.rebind("//Fangm:2222/helloObj",ttt);
System.out.println("RMI伺服器正在執行。。。。。。");
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
伺服器端的RmiHelloServer.policy
grant codeBase
"file:/e://rmitest/"
{
permission java.SocketPermission
"*:1000-9999","accept,connect,listen,resolve";
};
現在就看看Client端是如何連線伺服器和進行遠端方法的的吧
import java.rmi.*;
import java.rmi.server.*;
public class RmiHelloClient
{
public RmiHelloClient()
{
}
public static void main(String[] args)
{
//建立並安裝安全管理器
if(System.getSecurityManager()==null)
{
System.setSecurityManager(new RMISecurityManager());
}
try{
RmiHelloRemoteIntfc c1=(RmiHelloRemoteIntfc)Naming.lookup("rmi://Fangm:2222/helloObj");
System.out.println(c1.helloRemoteObj("Everyone"));
}
catch(Exception e)
{
e.printStackTrace();
}
System.exit(0);
}
}
Client端的許可權檔案RmiHelloClient.policy
grant codeBase
"file:/e:/download/rmitest/"
{
permission java.net.SocketPermission
"*:1000-9999","accept,connect,listen,resolve";
};
好了,一個最簡單的RMI例子就安無了,對了還少了最重要的一步,那就是編譯和執行呢?我們就來了個Bat或Cmd的批處理來進行吧,
看看RmiHello.bat吧
javac RmiHelloRemoteIntfc.java
javac RmiHelloRemoteObj.java
rmic RmiHelloRemoteObj
javac RmiHelloServer.java
javac RmiHelloClient.java
echo 在另一個視窗啟動伺服器,請稍後。。。
start java -Djava.security.policy=RmiHelloServer.policy RmiHelloServer
echo 執行客戶。。。
java -Djava.security.policy=RmiHelloClient.policy RmiHelloClient
這個檔案很簡單吧!包你一試就通,雖然簡單,不過對於初學者來說,還是很不錯的哦!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-962430/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一個簡單的「IOC」例子
- Rust 程式設計中使用 leveldb 的簡單例子Rust程式設計單例
- 擼一個簡單的MVVM例子MVVM
- 關於 Java 中的 RMI-IIOPJava
- 一個簡單的netty通訊的例子Netty
- 一個最簡單的 Github workflow 例子Github
- 一個簡單的生活例子,感受TRIZ的魅力!
- WebRTC:一個視訊聊天的簡單例子Web單例
- 關於SSM框架的一個簡單DemoSSM框架
- 關於程式與執行緒的一個簡單解釋執行緒
- 轉一篇OpenSSL的例子:簡單的TLS伺服器TLS伺服器
- 一個簡單的例子瞭解async跟defer
- 一個簡單的例子教會您使用javapJava
- [轉]:如何快速構建一個簡單的程式
- 設計一個簡單的devops系統dev
- 一個小白的vue之路(一)——關於vue的簡單瞭解Vue
- Java實現一個簡單的計算器Java
- 關於簡單的js計步功能JS
- 關於Java註解(annotation)的簡單理解Java
- 關於MongoDB的簡單理解(二)--Java篇MongoDBJava
- 一個簡單java程式的執行全過程Java
- 用Java編寫一個最簡單的桌面程式Java
- java實現一個簡單的爬蟲小程式Java爬蟲
- 一個簡單的例子理解Kubernetes的三種IP地址型別型別
- 通過一個簡單的例子,瞭解 Cypress 的執行原理
- Unity如何連線伺服器: 一個簡單的例子Unity伺服器
- spring 簡單的使用 Hikari連線池 和 jdbc連線mysql 的一個簡單例子SpringJDBCMySql單例
- 用java實現一個簡單的計算器Java
- 程式設計師過關斬將--為微服務擼一個簡約而不簡單的配置中心程式設計師微服務
- JUnit概述及一個簡單例子單例
- 簡單計算器 (關於棧的一種應用)
- 好程式設計師Java培訓分享之RMI與RPC的區別程式設計師JavaRPC
- 一個具體的例子學習Java volatile關鍵字Java
- 最簡單的C程式設計--順序程式設計C程式程式設計
- 建立一個簡單的小程式
- Java併發程式設計中的設計模式解析(二)一個單例的七種寫法Java程式設計設計模式單例
- python+flask 編寫一個簡單的登入介面例子PythonFlask
- python+flask編寫一個簡單的登入介面例子PythonFlask
- SAP MM採購定價過程的一個簡單例子單例