RMI小例
1.リモートインタフェースの作成およびリモートメソッドの宣言(HelloInterface.java)
2.リモートインタフェースおよびリモートメソッドの実装(UnicastRemoteObjectの継承)Hello.java
3.RMI登録サービスを開始し、リモートオブジェクト(HelloServer.java)を登録する
4.クライアントはリモート・オブジェクトを検索し、リモート・メソッド(HelloClient)を呼び出す
5.実行プログラム:サービスHelloServerを起動する;クライアントHelloClientを実行する呼び出し(1)Dosウィンドウ実行コマンドjavacomを開く.unmi.HelloServer起動サービスHelloServer E:workspaceTestRMIbin>javacom.unmi.HelloServer Hello Server is ready. 実行に成功すると、Hello Server is ready(2)が別のDosウィンドウを開く実行コマンドjavacomが表示されます.unmi.HelloClientはクライアントプログラムE:workspaceTestRMIbin>javacomを実行する.unmi.HelloClient Hello, world! 呼び出しに成功するとHello,worldが見えます!そして、サービスを開始するウィンドウにHello Server is readyが表示されます.Called by HelloClientを印刷
package com.unmi;
import java.rmi.*;
/**
* java.rmi.Remote
*/
public interface HelloInterface extends Remote
{
/**
* java.rmi.RemoteException
*/
public String say() throws RemoteException;
}
2.リモートインタフェースおよびリモートメソッドの実装(UnicastRemoteObjectの継承)Hello.java
package com.unmi;
import java.rmi.*;
import java.rmi.server.*;
/**
* UnicastRemoteObject , HelloInterface
*/
public class Hello extends UnicastRemoteObject implements HelloInterface
{
private String message;
/**
* , , , RemoteException
*/
public Hello(String msg) throws RemoteException
{
message = msg;
}
/**
*
*/
public String say() throws RemoteException
{
System.out.println("Called by HelloClient");
return message;
}
}
3.RMI登録サービスを開始し、リモートオブジェクト(HelloServer.java)を登録する
package com.unmi;
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
public class HelloServer
{
/**
* RMI
*/
public static void main(String[] argv)
{
try
{
// RMI , 1099 (1099 )
// $java_home/bin/rmiregistry 1099
// DOS
// rmiregistry RMIC stub
LocateRegistry.createRegistry(1099);
// , hello
//
HelloInterface hello = new Hello("Hello, world!");
// hello RMI , Hello
Naming.rebind("Hello", hello);
// hello RMI
//Naming.rebind("//192.168.1.105:1099/Hello",hello);
System.out.println("Hello Server is ready.");
}
catch (Exception e)
{
System.out.println("Hello Server failed: " + e);
}
}
}
4.クライアントはリモート・オブジェクトを検索し、リモート・メソッド(HelloClient)を呼び出す
package com.unmi;
import java.rmi.Naming;
public class HelloClient
{
/**
*
*/
public static void main(String[] argv)
{
try
{
HelloInterface hello = (HelloInterface) Naming.lookup("Hello");
// RMI hello
//HelloInterface hello = (HelloInterface)Naming.lookup("//192.168.1.105:1099/Hello");
//
System.out.println(hello.say());
}
catch (Exception e)
{
System.out.println("HelloClient exception: " + e);
}
}
}
5.実行プログラム:サービスHelloServerを起動する;クライアントHelloClientを実行する呼び出し(1)Dosウィンドウ実行コマンドjavacomを開く.unmi.HelloServer起動サービスHelloServer E:workspaceTestRMIbin>javacom.unmi.HelloServer Hello Server is ready. 実行に成功すると、Hello Server is ready(2)が別のDosウィンドウを開く実行コマンドjavacomが表示されます.unmi.HelloClientはクライアントプログラムE:workspaceTestRMIbin>javacomを実行する.unmi.HelloClient Hello, world! 呼び出しに成功するとHello,worldが見えます!そして、サービスを開始するウィンドウにHello Server is readyが表示されます.Called by HelloClientを印刷