オラクルはそれregistry
が
リモート オブジェクトを名前にバインドするために同じホスト上の RMI サーバーによって使用されるブートストラップ ネーム サービス
今、rmiregistry
提供に使用するサーバーがありますJNDI
。
public class ObjectProvider {
public static void main(String[] args) {
System.setProperty("java.rmi.server.codebase", "file:/absolute/path/to/jar/where/person/class/is/my.jar");
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory");
Context context = new InitialContext(env);
context.bind("jordan", new Person("Michael Jordan"));
Person p = (Person) context.lookup("jordan");
System.out.println("jordan = " + p.getName());
}
}
そして Person クラス:
public class Person implements Remote, Serializable {
String name;
public Person(String name) { this.name = name; }
public String getName() { return name; }
}
としてrmiregistry
開始されrmiregistry &
ます。bind
それでも、コードを実行すると、クラスPerson
が見つからないため、実行時に引数を非整列化できないと不平を言います。
クラスファイルが見つからないことは理解しrmiregistry
ていますが、その理由はわかりません。これは、バインドするクラスを見つけることができる場所を伝える正しい方法ですか?