1

オラクルはそれ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ていますが、その理由はわかりません。これは、バインドするクラスを見つけることができる場所を伝える正しい方法ですか?

4

1 に答える 1