2011-06-16 59 views
0

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

public interface UserInterface extends Remote { 
    public void receiveMessage(String message) throws RemoteException; 
} 

然后在客户端创建一个方法服务器用户类可以执行(“receiveMessage”):

public class User extends PortableRemoteObject implements UserInterface { 

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

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

我用rmic -iiop Chat User产生_Chat_Tie.class _ChatInterface_Stub.class _User_Tie.class _UserInterface_Stub.class

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

我猜这里的区别在于,聊天类是在服务器上创建的,然后客户端使用它使用接口(它工作正常),但用户类必须在客户端创建,因此客户端部分作为服务器工作。

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

所以说句话 - 我如何发送本地对象引用到服务器,以便它可以对它执行操作?

谢谢! Leonty

+0

东西可以称为“POA”(可移植对象适配器),这是CORBA标准的一部分有我想要实现呢? – Leonti 2011-06-16 03:56:01

+0

从Java 5.0开始,您不再需要'rmic'。 – 2011-06-22 23:48:19

回答

0

什么,我缺少的是在客户端(_User_Tie.class) “铁” 级。通常不需要,但是当客户端创建对象时 - 我需要提供它。

希望这样可以节省一些时间,有人在未来的其他:)

0

你创建了一个服务器接口:

public interface ChatServer extends Remote { 
    public void registerUser(UserInterface user) throws RemoteException; 
} 
+0

这正是它在服务器端完成的方式。 但是,当尝试创建我想要传递给服务器的用户对象时,问题出在客户端上。 – Leonti 2011-06-16 03:51:20