2つのJavaクラスがあり、1つはクライアントで、もう1つはサーバーです。クライアントでは、サーバーにIPアドレスを指定する必要がありますが、クライアントが3番目のマシン(ネームシステム)のIPを認識できるように動的にしたいです。メソッド(DNSなど)を検索し、このメソッドを提供する特定のサーバーのIPアドレスを返します。
編集:
クライアントクラス:
public class Client {
private Client() {}
public static void main(String[] args) {
String host = (args.length < 1) ? null : args[0];
try {
//Registry registry = LocateRegistry.getRegistry(host);
Registry registry = LocateRegistry.getRegistry("192.168.1.9",1091);
Calculator stub = (Calculator) registry.lookup("Hello");
String response = stub.add(4,2);
System.out.println("response: " + response);
} catch (Exception e) {
System.err.println("Client exception: " + e.toString());
e.printStackTrace();
}
}
}
サーバー:
public class Server implements Calculator{
public Server() {}
public String add(int a,int b) {
return "Hello, a+b= "+(a+b);
}
public String sub(int a,int b) {
return "Hello, a-b= "+(a-b);
}
public static void main(String args[]) {
try {
Server obj = new Server();
Calculator stub = (Calculator) UnicastRemoteObject.exportObject(obj, 0);
// Bind the remote object's stub in the registry
Registry registry = LocateRegistry.createRegistry(1091);
registry.bind("Hello", stub);
System.err.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
}
RMIレジストリではこれを行うことはできません。レジストリと同じホストで実行されているプロセスのみがバインドできます。LDAPなどの別のネーミングサービスを使用する必要があります。
ただし、残りの説明はRMIがすでに行っていることです。レジストリで名前を検索すると、対応するリモートオブジェクトとの通信方法を知っているスタブが返されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加