首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为回调的RMI IIOP客户端对象

作为回调的RMI IIOP客户端对象
EN

Stack Overflow用户
提问于 2011-06-16 10:29:12
回答 2查看 496关注 0票数 0

我正在尝试构建rmi-iiop应用程序(非常简单的聊天)。我需要服务器能够与客户端通信,所以我的想法是创建连接用户的界面:

代码语言:javascript
复制
public interface UserInterface extends Remote { 
    public void receiveMessage(String message) throws RemoteException;
}

然后在客户端使用服务器可以执行的方法创建User类(‘receiveMessage’):

代码语言:javascript
复制
public class User extends PortableRemoteObject implements UserInterface {

    protected User() throws RemoteException {
        super();
    }

    @Override
    public void receiveMessage(String message) throws RemoteException {
        client.addMessageToGUI();
    }
}

我使用生成_Chat_Tie.class _ChatInterface_Stub.class _User_Tie.class _UserInterface_Stub.classrmic -iiop Chat User

在将所有文件放在服务器端和客户端并运行应用程序后,我得到以下错误:java.rmi.StubNotFoundException: Stub class not found: User_Stub; nested exception is:

我猜这里的不同之处在于Chat类是在服务器上创建的,然后客户端通过接口使用它(这很好用),但user类必须在客户端创建,所以客户端在一定程度上是作为服务器工作的。

我的问题类似于Java RMI - Making the client a server,但针对的是rmi-ioop实现。

所以换句话说--我怎样才能将本地对象引用发送到服务器,这样它就可以在服务器上执行操作了?

谢谢!莱昂蒂

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-23 07:20:22

我遗漏的是客户端的"Tie“类(_User_Tie.class)。通常它不是必需的,但如果对象是在客户端创建的,我也需要提供它。

希望将来能为其他人节省一些时间:)

票数 0
EN

Stack Overflow用户

发布于 2011-06-16 11:02:08

您可以创建服务器接口,如下所示:

代码语言:javascript
复制
public interface ChatServer extends Remote {
  public void registerUser(UserInterface user) throws RemoteException;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6366512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档