Java RMI Demo
前言
在Java實驗課上碰到一個題目要求寫一個Java RMI 應用,打碼是不難寫,就是eclipse上執行跟命令列編譯總是各種蜜汁錯誤~在此給大家填坑。
題目
首先在啟動rmiregistry之前先為介面例項生成Stub類,java8會有下面的警告(畢竟過時了的東西嘛),看了下還是可以生成Stub類就無妨。
然後啟動registry服務之後再執行Server。
否則如下:(開啟不成功也會)
然後還有。。。服務連線不上開啟客戶端就會如此
最可怕的還是找不到類的坑,,,,兩節課基本都卡在那裡,,,,
圖現在是截不到了,,,反正老師ppt裡的程式碼跟ppt裡面的連結那個教程按步驟打的程式碼均 無法執行(心裡一萬個xxx)
(想著反正以後再也不會寫這玩意了!)
最後上圖!
需求完成,趕快撤退~
程式碼
介面
import java.rmi.*;
public interface PCinfo extends Remote{
public String showInfo() throws RemoteException;
}
介面例項
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Properties;
public class Info extends UnicastRemoteObject implements PCinfo{
/**
*
*/
private static final long serialVersionUID = -8178091323074177041L;
public Info() throws RemoteException {
super();
}
public String showInfo() throws RemoteException {
InetAddress addr = null;
try {
addr = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
String hostName=addr.getHostName().toString();
Properties sysProperty = System.getProperties();
String systemName = sysProperty.getProperty("os.name");
return "Server Env: OS of " + hostName + " is " + systemName;
}
}
服務端:
import java.rmi.Naming;
public class InfoServer {
public static void main(String[] args){
try{
Info i = new Info();
Naming.bind("rmi://localhost:12312/Info", i);
System.out.println("InfoServer bound in register");
}catch(Exception e){
System.out.println("InfoServer err: "+e.getMessage());
e.printStackTrace();
}
}
}
客戶端:
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
public class InfoClient {
public static void main(String[] args) {
try {
PCinfo h = (PCinfo)Naming.lookup("rmi://localhost:12312/Info");
System.out.println(h.showInfo());
} catch (MalformedURLException e) {
System.out.println("url格式異常");
} catch (RemoteException e) {
System.out.println("建立物件異常");
e.printStackTrace();
} catch (NotBoundException e) {
System.out.println("物件未繫結");
}
}
}
policy檔案我就不放了,這個東西在我電腦是用不了的,,,一直報錯找不到類-Djava.security.policy,網上也查了挺多,無解。建議就是不要用他23333
相關文章
- Java RMI詳解Java
- Java 中 RMI 的使用Java
- Java RMI之HelloWorld篇Java
- java中RMI是什麼Java
- Java安全之RMI協議分析Java協議
- 關於 Java 中的 RMI-IIOPJava
- Java安全之RMI反序列化Java
- Java RMI學習與解讀(一)Java
- Java RMI學習與解讀(二)Java
- Java RMI遠端方法呼叫詳解Java
- Java RMI技術詳解與案例分析Java
- RMI CLASSNOFOUNDEXCEPTIONException
- Java SPI及DemoJava
- java多型demoJava多型
- Java Date API demoJavaAPI
- 分散式架構基礎:Java RMI詳解分散式架構Java
- kafka java.rmi.server.ExportException: Port already in useKafkaJavaServerExportException
- java RMI相關反序列化漏洞整合分析Java
- RMI基礎
- java -jar demo.jarJavaJAR
- java遠端呼叫(rmi)常見的兩個錯誤Java
- Java之RMI設計模式基本原理與示例Java設計模式
- Java 後端微信支付demoJava後端
- Java NIO的簡單demoJava
- RMI應用部署
- Spring RMI配置Spring
- Spring RMI呼叫Spring
- 用RMI實現基於Java的分散式計算(轉)Java分散式
- 初識NIO之Java小DemoJava
- 用java實現日曆demo。Java
- java servlet 程式碼樣例 (demo)JavaServlet
- JAVA JNI 呼叫C語言 DemoJavaC語言
- C語言 JNI 呼叫JAVA DemoC語言Java
- Rmi學習筆記筆記
- jdk 的rmi效能如何JDK
- 自己寫了個Java RMI(遠端方法呼叫)的實現案例Java
- naxx Demo1_ZZQ_02.javaJava
- Java Swing掃雷遊戲demo分享Java遊戲