關於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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java程式設計思想中關於閉包的一個例子Java程式設計
- 一個關於SQL隱碼攻擊的簡單例子SQL單例
- 用java實現一個簡單的序列化的例子(轉)Java
- 用java實現一個簡單的序列化的例子 (轉)Java
- Java多型的一個簡單入門的例子Java多型
- Rust 程式設計中使用 leveldb 的簡單例子Rust程式設計單例
- Java關於檔案上傳的一個例子Java
- 關於 Java 中的 RMI-IIOPJava
- 擼一個簡單的MVVM例子MVVM
- 關於XML序列化的簡單例子XML單例
- 軟體開發中的矛盾——一個簡單的例子 (轉)
- 一個簡單的解密程式 (轉)解密
- 一個最簡單的 Github workflow 例子Github
- 一個簡單的觀察者模式例子模式
- 一個簡單的Ajax請求例子
- C++ Boost 之Python(一個簡單的例子) (轉)C++Python
- 請教一個關於JAVA SOCKET程式設計中的問題Java程式設計
- 初學,一個關於RMI的問題請教!!!
- 關於SSM框架的一個簡單DemoSSM框架
- 用java實現一個簡單的房屋管理程式。 (轉)Java
- 用RMI實現基於Java的分散式計算(轉)Java分散式
- 一個程式設計師的讀書筆記——關於程式設計的反思程式設計師筆記
- [轉貼]一個JAVA 程式設計師的告白Java程式設計師
- WebRTC:一個視訊聊天的簡單例子Web單例
- 一個簡單的例子教會您使用javapJava
- 一個簡單的spring-boot例子Springboot
- 一個簡單的例子帶你理解HashmapHashMap
- 一個閉包函式的簡單例子函式單例
- 關於程式與執行緒的一個簡單解釋執行緒
- 關於責任鏈模式的一個例子模式
- 關於VC中的DLL的程式設計 (轉)程式設計
- ASP 程式設計中 15 個非常有用的例子 (轉)程式設計
- 關於委託事件的一兩個很好的例子!事件
- 一個簡單的檔案管理程式 (轉)
- 一個簡單的愷撒加密程式 (轉)加密
- spring攔截器的一個簡單例子Spring單例
- 一個簡單的oracle函式返回陣列的例子Oracle函式陣列
- java關於事件的簡單介紹Java事件