RMIインターフェイスの読み込み

classloader java rmi
RMIインターフェイスの読み込み

RMIがインターフェースクラスをロードする方法に関する質問があります。

ここに私のセットアップがあります:

rmiサーバーが実行する操作を定義するインターフェース。

一般

public interface Computable extends Remote{
    public AnalyticalServiceOutput compute(Request request) throws RemoteException;
}

サーバ

Computable> stub = (Computable) UnicastRemoteObject.exportObject(this, 0);
Registry registry = LocateRegistry.createRegistry(2000);
registry.rebind("myservice", stub);

クライアント

Registry registry = LocateRegistry.getRegistry(host, port);
Computable c = (Computable) registry.lookup("myservice");
AnalyticalServiceOutput> output = c.compute(request);

展開のために、クライアントとサーバーのクラスパスに共通のjarを配置します。

クライアントとサーバーをEclipseで実行すると、完全に正常に機能しました。 意気揚々と感じて、クライアントとサーバーの両方をLinuxボックスに移動しました。 しかし、今、compute(request)を呼び出すと、クライアントは、共通で定義されているクラスの1つが利用できないと文句を言います(ClassNotFoundException)。

何が起こっているのかについてのアイデア。

乾杯

  0  0


ベストアンサー

クラス「AnalyticalServiceOutput」は、Serializableインターフェイスを実装するか、Remoteを拡張する必要があります。 クライアントとサーバーが異なるマシン上にある場合、結果は有線で送信する必要があり、これはシリアル化可能なクラスまたはリモートオブジェクト(プロキシスタブが転送される)でのみ実行できます。

0


タイトルとURLをコピーしました