Java言語RMI(Remote Method Invocation)を使った開発手順紹介

1.サーバー側(server)インターフェイスを定義する
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface RmiTestInterface extends Remote{
public String getTest() throws RemoteException;
}

2.インターフェイスを実現する
import java.rmi.RemoteException;
public class RmiTestImpl implements RmiTestInterface {
public RmiTestImpl() throws RemoteException {
//super();
// TODO Auto-generated constructor stub
//UnicastRemoteObject.exportObject(this);
}
/**
*
*/
public String getTest() throws RemoteException {
// TODO Auto-generated method stub
return “Hello,arkgame.com";
}
}

3.mainメソッドを定義する
機能:実現されたRMIインターフェイスを登録、ポート開放など
public static void main(String []args) throws AlreadyBoundException, RemoteException{
RmiTestImpl t=new RmiTestImpl();
RmiTestInterface tt=(RmiTestInterface)UnicastRemoteObject.exportObject(t,0);
// Bind the remote object’s stub in the registry
Registry registry = LocateRegistry.createRegistry(2001);
registry.rebind(“test", tt);
System.out.println(“サーバーは起動している");
}

4.jarの作成
RmiTestInterfaceをパッケージしてjarファイルを生成する、クライアント(client)側のプロジェクトにインポート

5.サーバーのコンソールから出力:
サーバーは起動している

6.クライアント(client)のmainプログラム:
public static void main(String []args){
try {
Registry registry = LocateRegistry.getRegistry(“localhost",2001);
RmiTestInterface t= (RmiTestInterface) registry.lookup(“test");
System.out.println(“client:"+t.getTest());
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

7.クライアントmainメソッドを実行して、コンソールから出力
Hello,arkgame.com

Development

Posted by arkgame