Java应用程序的设计
我有一个关于java RMI应用程序的具体设计的问题。我刚开始学习如何与rmi合作。我有一个小应用程序:一个小型证券交易所应用程序。所以有股票交易类,每个人都有仓库类。depot类具有市场参考。market类有一个创建仓库的函数(它返回一个新仓库)。我希望以这种方式设计应用程序,远程客户端可以获得他自己的仓库的引用,并且所有客户端共享股票市场类(因此运行时只有一个对象)
我需要设计一个扩展“远程”接口的接口。这个接口描述了客户端可以调用的函数。但是股票交易所和仓库的课程呢?他们是否需要实现或扩展一个类来实现rmi
在我的界面中有一个函数,它打开一个新的仓库并返回一个仓库对象。但当我调用该函数时,有一个例外:
线程“main”java中出现异常。lang.ClassCastException:com。太阳代理$Proxy1无法投射到仓库
# 1 楼答案
使用RMI远程对象时,不能将其转换为混凝土类仓库。你必须转换到远程接口
# 2 楼答案
您需要两个接口,
StockExchange
和Depot
。每个接口都应该扩展Remote
。但只有实现StockExchange
的类的实例才会绑定到RMI注册表中。客户端将首先使用RMI注册表中的StockExchange
名称查找它。从中,他们将调用一个合适的远程方法来获取对自己的Depot
的引用