/* RMI リモートメソッドのインターフェース */
import java.rmi.*;
public interface RMIExecInterface extends Remote{
public String remotoMethod() throws RemoteException;
}
import java.rmi.*;
import java.rmi.server.*;
import java.net.*;
import java.util.*;
public class RMIServer extends UnicastRemoteObject implements RMIExecInterface{
/* コンストラクタはスーパークラスを呼び出すだけ */
public RMIServer() throws RemoteException{
super();
}
/* このメソッドがクライアントから呼ばれます。*/
public String remotoMethod() throws RemoteException{
return "ただいま、" + (new Date()).toString() + "です ";
}
/* サーバーメイン */
public static void main(String args[]){
try {
/* オブジェクト作成 */
RMIServer server = new RMIServer();
/* RMIレジストリにリモートオブジェクトをバインド */
Naming.rebind("RMI_Test", server);
}catch(RemoteException e){
System.out.println(e);
}catch (MalformedURLException e){
System.out.println(e);
}
}
}
/* RMI リモート クライアントプログラム */
import java.rmi.*;
public class RMIClient{
public static void main(String args[]) {
try {
/* リモート参照の取得 */
/* 127.0.0.1 はサーバーのアドレス(127.0.0.1は自分のマシンをさす) */
/* RMI_Testはサーバーのbindもしくはrebindメソッドで登録した名前 */
RMIExecInterface server = (RMIExecInterface)Naming.lookup("rmi://127.0.0.1/RMI_Test");
//リモートメソッドの呼び出し
String msg = server.remotoMethod();
System.out.println("Server said : " + msg);
}
catch (Exception e) {
System.out.println(e);
}
}
}
|