我遇到了一个讨厌的问题,但首先让我解释一下上下文。
该项目只是一个简单的项目,所以我熟悉 RMI。该项目是一个股票市场服务器和一个从服务器中提取资金数据的客户端。
我已将项目分为 3 个 java 项目。服务器(具有 MockStockMarket 和 Fund)、客户端(具有 GUI 类和一个与服务器对话的类:BannerController)以及具有客户端和服务器都需要的接口(IStockMarket 和 IFund)的项目。
我希望我的bannerController 与StockMarket 对话,以便bannercontroller 获得资金。这是使用 getFunds() 完成的:ArrayList。
如您所见,StockMarket 应该是 Remote,而 Fund 应该是 Serializable。
问题是,由于某种原因,当我使用以下代码时:
IStockMarket market = new MockStockMarket();
Naming.rebind("rmi://localhost/StockMarket", market);
IStockMarket(如预期)和 I Fund(未如预期)都变得远程。这不是我想要的。
记录一下:Fund 实现了 IFund,它扩展了 Serializable(所以没有远程),MockStockMarket 扩展了 UnicastRemoteObject 并实现了 IStockMarket,它扩展了 Remote。
这是发布这两个界面的 Web 服务器的屏幕截图:http: //imageshack.us/m/194/4755/rmiothinterfacespublis.png。
源代码: https ://rapidshare.com/files/2085773800/stockmarket.zip