日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java rmi 是否 必要_Java学习之路-RMI学习

發布時間:2023/12/10 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java rmi 是否 必要_Java学习之路-RMI学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java遠程方法調用,即Java RMI(Java Remote Method Invocation)是Java編程語言里,一種用于實現遠程過程調用的應用程序編程接口。它使客戶機上運行的程序可以調用遠程服務器上的對象。遠程方法調用特性使Java編程人員能夠在網絡環境中分布操作。RMI全部的宗旨就是盡可能簡化遠程接口對象的使用。

一、創建RMI程序的4個步驟

1、定義一個遠程接口的接口,該接口中的每一個方法必須聲明它將產生一個RemoteException異常。

2、定義一個實現該接口的類。

3、創建一個服務,用于發布2中定義的類。

4、創建一個客戶程序進行RMI調用。

二、程序的詳細實現

1.首先我們先創建一個實體類,這個類需要實現Serializable接口,用于信息的傳輸。

1 importjava.io.Serializable;

3 public class Student implementsSerializable {

5 privateString name;

7 private intage;

9 publicString getName() {

11 returnname;

13 }

15 public voidsetName(String name) {

17 this.name =name;

19 }

21 public intgetAge() {

23 returnage;

25 }

27 public void setAge(intage) {

29 this.age =age;

31 }

33 }

2.定義一個接口,這個接口需要繼承Remote接口,這個接口中的方法必須聲明RemoteException異常。

1 importjava.rmi.Remote;

3 importjava.rmi.RemoteException;

5 importjava.util.List;6 public interface StudentService extendsRemote {

12 List getList() throwsRemoteException;

14 }

3.創建一個類,并實現步驟2中的接口,但還需要繼承UnicastRemoteObject類和顯示寫出無參的構造函數。

1 importjava.rmi.RemoteException;

3 importjava.rmi.server.UnicastRemoteObject;

5 importjava.util.ArrayList;

7 importjava.util.List;

11 public class StudentServiceImpl extends UnicastRemoteObject implements

13 StudentService {

15 public StudentServiceImpl() throwsRemoteException {

17 }

21 public List getList() throwsRemoteException {

23 List list=new ArrayList();

25 Student s1=newStudent();

27 s1.setName("張三");

29 s1.setAge(15);

31 Student s2=newStudent();

33 s2.setName("李四");

35 s2.setAge(20);

37 list.add(s1);

39 list.add(s2);

41 returnlist;

43 }

45 }

4.創建服務并啟動服務

1 importjava.rmi.Naming;2 importjava.rmi.registry.LocateRegistry;

4 public classSetService {

6 public static voidmain(String[] args) {

8 try{

10 StudentService studentService=newStudentServiceImpl();

12 LocateRegistry.createRegistry(5008);//定義端口號

14 Naming.rebind("rmi://127.0.0.1:5008/StudentService", studentService);

16 System.out.println("服務已啟動");

18 } catch(Exception e) {

20 e.printStackTrace();

22 }

24 }

26 }

5. 創建一個客戶程序進行RMI調用。

1 importjava.rmi.Naming;

3 importjava.util.List;

5 public classGetService {

9 public static voidmain(String[] args) {

11 try{

13 StudentService studentService=(StudentService) Naming.lookup("rmi://127.0.0.1:5008/StudentService");

15 List list =studentService.getList();

17 for(Student s : list) {

19 System.out.println("姓名:"+s.getName()+",年齡:"+s.getAge());

21 }

23 } catch(Exception e) {

25 e.printStackTrace();

27 }

29 }

33 }

6.控制臺顯示結果

=============控制臺============

姓名:張三,年齡:15

姓名:李四,年齡:20

===============================

在Spring中配置Rmi服務

將Rmi和Spring結合起來用的話,比上面實現Rmi服務要方便的多。

1.首先我們定義接口,此時定義的接口不需要繼承其他接口,只是一個普通的接口

1 packageservice;

3 importjava.util.List;

5 public interfaceStudentService {

7 ListgetList();

9 }

2.定義一個類,實現這個接口,這個類也只需實現步驟一定義的接口,不需要額外的操作

1 packageservice;

4 importjava.util.ArrayList;

6 importjava.util.List;

9 public class StudentServiceImpl implementsStudentService {

11 public ListgetList() {

13 List list=new ArrayList();

15 Student s1=newStudent();

17 s1.setName("張三");

19 s1.setAge(15);

21 Student s2=newStudent();

23 s2.setName("李四");

25 s2.setAge(20);

27 list.add(s1);

29 list.add(s2);

31 returnlist;

33 }

35 }

3.接一下來在applicationContext.xml配置需要的信息

a.首先定義服務bean

b.定義導出服務

/>

也可以增加p:registryHost屬性設置主機

c.在客戶端的applicationContext.xml中定義得到服務的bean(這里的例子是把導出服務bean和客戶端的bean放在一個applicationContext.xml中的)

/>

d.配置的東西就這么多,是不是比上面的現實要方便的多呀!現在我們來測試一下

1 packageservice;2 importjava.util.List;3 importorg.springframework.context.ApplicationContext;4 importorg.springframework.context.support.ClassPathXmlApplicationContext;5 public classTest {6 public static voidmain(String[] args) {7 ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");8 StudentService studentService=(StudentService) ctx.getBean("getStudentService");9 List list =studentService.getList();10 for(Student s : list) {11 System.out.println("姓名:"+s.getName()+",年齡:"+s.getAge());12 }13 }14 }

=============控制臺============

姓名:張三,年齡:15

姓名:李四,年齡:20

=============================

上面的mian方法運行可能會報錯,應該是spring的jar少了,自己注意添加。

第一次寫博客,有不對的地方請多多指出。

總結

以上是生活随笔為你收集整理的java rmi 是否 必要_Java学习之路-RMI学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。