厄介な問題を抱えていますが、まずコンテキストを説明させてください。
このプロジェクトは単純なプロジェクトなので、RMI に慣れることができます。このプロジェクトは、株式市場サーバーと、サーバーから資金に関するデータを取得するクライアントです。
プロジェクトを 3 つの Java プロジェクトに分割しました。サーバー (MockStockMarket と Fund を持つ)、クライアント (GUI クラスとサーバーと対話するクラス: BannerController を持つ)、およびクライアントとサーバーの両方が必要とするインターフェース (IMStockMarket と IFund) を持つプロジェクト。
bannerController が StockMarket と通信して、bannercontroller が資金を取得できるようにします。これは getFunds() : ArrayList を使用して行われます。
ご覧のとおり、StockMarket は Remote で、Fund は Serializable である必要があります。
問題は、何らかの理由で次のコードを使用する場合です。
IStockMarket market = new MockStockMarket();
Naming.rebind("rmi://localhost/StockMarket", market);
IStockMarket (意図したとおり) と IFund (意図したとおりではない) の両方がリモートになります。これは私が望むものではありません。
記録のために: Fund は Serializable を拡張する IFund を実装し (リモートは何もない)、MockStockMarket は UnicastRemoteObject を拡張し、Remote を拡張する IStockMarket を実装します。
両方のインターフェイスを公開する Web サーバーのスクリーンショットを次に示します: http://imageshack.us/m/194/4755/rboothinterfacespublis.png。
ソース コード: https://rapidshare.com/files/2085773800/stockmarket.zip