RMIサービスとクライアントを正常に作成しました。メソッドなどを呼び出すことができます。しかし今、私は次のことを試してみたかったのです。LinkedListのような標準のJavaオブジェクトをサービスでホストしたかったのです。また、LinkedListを使用する既存のコードを「ふり」したかったのです。私が欲しいのは、実際にはサービスによって管理されているLinkedListを取得することですが、通常のLinkedListと同じようにローカルでアクセスできます。その上、.add()が呼び出された場合、サーバーに「Addcalled」と書き込むなど、最小限のロギングを実行したいと思います。
これは本番用ではなく、動作を理解するのに役立ちます。
これまで私はたくさんのことを試しました。最も有望なのは、LinkedListを拡張し、Remoteを実装するクラスを作成したことです。このクラスは、次のようにコンストラクターのレジストリに自分自身を登録しようとします。
try {
UnicastRemoteObject.exportObject((Remote)this);
Naming.rebind("theList", (Remote)this);
}
catch (Exception e) {
System.out.println("fail");
System.out.println(e.getMessage());
}
LinkedListを拡張する必要があるため、これを行う必要があります。したがって、UnicastRemoteObjectを拡張できません。
サーバー側でこれを実行しようとすると、次の出力が得られます。
不合格 ホストへの接続が拒否されました:192.168.178.27; ネストされた例外は次のとおりです。 java.net.ConnectException:接続が拒否されました
そしてクライアント側では:
java.lang.ClassCastException:MyList_Stubをjava.util.LinkedListにキャストできません $ Proxy0.createList(不明なソース) RemoteProgram.main(RemoteProgram.java:27)で
前もって感謝します!