如何使用回调进行会话模式?
How to do a session pattern with callbacks?
我知道如何像这里 How to organize RMI Client-Server architecture 那样在没有回调的情况下执行会话模式。但我不知道如何用回调做一个。我是否需要另一个会话对象供客户端在登录时传递给服务器?如果是,我应该将它保存在服务器端的什么位置:在服务器会话中保存客户端会话的引用,或者在其他地方(如登录服务器)保存所有客户端会话的集合?如果不是,实现客户端回调方法的对象是什么?
也许有人可以像我链接的问题中那样提供代码示例,因为那个很清楚,但我没有找到用于回调的代码示例。
答案不一定是严格的 RMI,但我看到很多关于这个的问题都没有答案,所以我添加了标签。
您需要一个 远程对象 供客户端传递给调用回调的服务器。鉴于您在登录时提供它,它很可能是一个会话对象,但这里没有足够的信息可以确定。这取决于你想要它是什么。
如果您希望它是一个会话对象,即对于会话唯一且不会在会话中存活的对象,您应该确保:
- 客户端在注销时取消导出它,并且
- 当发生注销时,服务器会丢失对该对象的引用,这可以通过将其存储在服务器分配的会话对象中轻松实现。
我知道如何像这里 How to organize RMI Client-Server architecture 那样在没有回调的情况下执行会话模式。但我不知道如何用回调做一个。我是否需要另一个会话对象供客户端在登录时传递给服务器?如果是,我应该将它保存在服务器端的什么位置:在服务器会话中保存客户端会话的引用,或者在其他地方(如登录服务器)保存所有客户端会话的集合?如果不是,实现客户端回调方法的对象是什么?
也许有人可以像我链接的问题中那样提供代码示例,因为那个很清楚,但我没有找到用于回调的代码示例。
答案不一定是严格的 RMI,但我看到很多关于这个的问题都没有答案,所以我添加了标签。
您需要一个 远程对象 供客户端传递给调用回调的服务器。鉴于您在登录时提供它,它很可能是一个会话对象,但这里没有足够的信息可以确定。这取决于你想要它是什么。
如果您希望它是一个会话对象,即对于会话唯一且不会在会话中存活的对象,您应该确保:
- 客户端在注销时取消导出它,并且
- 当发生注销时,服务器会丢失对该对象的引用,这可以通过将其存储在服务器分配的会话对象中轻松实现。