Võ Văn Hải's blog

Chỉ có một điều tuyệt đối đó là mọi thứ đều tương đối…

Liệt kê tất cả các rmi object đã đăng ký trong 1 rmi registry

Liệt kê tất cả các rmi object đã đăng ký trong 1 rmi registry

Trong quá trình làm việc với RMI, đôi khi chúng ta cần biết tất cả các dịch vụ RMI nằm ở trên 1 máy nào đó để ohuc5 vụ công việc của mình. Chương trình sau cho phép chúng ta làm được điều đó.

1. Đầu tiên ta tạo 1 Frame để hiển thị các services, file

package listingReg;

import java.awt.GridLayout;

import javax.swing.BorderFactory;

import javax.swing.DefaultListModel;

import javax.swing.JFrame;

import javax.swing.JList;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

public class listAvailableServices_FRM extends JFrame

{

private static final long serialVersionUID = 1L;

private DefaultListModel dlmList;

private JList lstServices;

private String hostAddress;

public listAvailableServices_FRM(){

dlmList=new DefaultListModel();

lstServices=new JList(dlmList);

JPanel pLeft= new JPanel(new GridLayout(1,1));

pLeft.setBorder(BorderFactory.createTitledBorder(“Available services”));

pLeft.add(new JScrollPane(lstServices));

add(pLeft);

hostAddress=JOptionPane.showInputDialog(null,“H?y g? vào IP Address hoặc tên máy của máy dịch vụ”);

try{

if(!hostAddress.equals(“”)){

Thread t=new Thread(new ListingServicesRunnable(this,hostAddress));

t.start();

}//end if ipAdd

}catch(Exception ex){

}

setSize(300,400);

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public void addItemToList(String item){

dlmList.addElement(item);

}

}

2. Ta tạo 1 tiến trình cho việc tìm kiếm các services của 1 máy từ xa, file ListingServicesRunnable.java

package products;

import java.rmi.RemoteException;

import java.rmi.registry.LocateRegistry;

import java.rmi.registry.Registry;

public class ListingServicesRunnable implements Runnable{

private listAvailableServices_FRM frm;

private String []availableSVR=null;

private String hostADD;

public ListingServicesRunnable(listAvailableServices_FRM frm, String hostADD) {

this.frm=frm;

this.hostADD=hostADD;

}

public void run(){

Registry reg;

try {

reg = LocateRegistry.getRegistry(hostADD);

availableSVR=reg.list();

Thread.sleep(5);

} catch (RemoteException e) {

e.printStackTrace();

}

catch (InterruptedException e) {

e.printStackTrace();

}

for(int i=0;i<availableSVR.length;i++){

frm.addItemToList(availableSVR[i]);

}

}

}

3. Tạo lớp để thực thi ứng dụng

package listingReg;

public class Testing {

public static void main(String[] args) {

listAvailableServices_FRM frm=new listAvailableServices_FRM();

frm.setVisible(true);

}

}

4. Thực thị:

Khi chương trình thực thi sẽ hỏi chúng ta địa chỉ của máy cần tìm kiếm, ví dụ như hình

d
Chương trình sẽ tự động đến địa chỉ này và liệt kê về tất cả các rmi object trên máy đó. Như hình

d

<

One Response to “Liệt kê tất cả các rmi object đã đăng ký trong 1 rmi registry”

  1. Tii Le said

    Thầy ơi cho em hỏi, cách nào để lấy list ip và port connect đến rmiregistry.Em muốn theo dõi tất cả các máy đang kết nối tới server

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: