将 rmi 接口转换为 CORBA .idl



如何在 CORBA 中将我的 rmi 接口转换为 .idl 文件。我目前正在聊天应用程序中工作。所以这是我的界面:

import java.rmi.*;
public interface ChatServer extends Remote{
void register(ChatClient c) throws RemoteException;
void broadcast(String s) throws RemoteException;
}

我尝试这样做,但它说"void"和 ChatClient 是未声明的类型存在错误。我该如何解决这个问题?感谢您的帮助:)

p.s 我在互联网上得到了 rmi 代码,我只需要它作为我的参考,以便我可以将其转换为 CORBA 应用程序。

您可以尝试扩展java.io.Serializable

import java.io.Serializable;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface ChatServer extends Remote, Serializable {
void register(ChatClient c) throws RemoteException;
void broadcast(String s) throws RemoteException;
}
import java.io.Serializable;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface ChatClient extends Remote, Serializable {
void register(ChatServer c) throws RemoteException;
void broadcast(String s) throws RemoteException;
}

所有参数和所有非 void 返回类型都必须Serializable的原因。StringSerializable.

除此之外,这似乎是一个非常糟糕的设计。这些接口旨在指示每个终结点提供的操作。另一方面,Serializable东西是在端点之间传输的数据。通过创建使用这两个帽子的类/对象/接口,它肯定会变得一团糟。

更好的主意是:

import java.io.Serializable;
public class ClientId implements Serializable {
// Data used to identify the client.
}
import java.io.Serializable;
public class ServerId implements Serializable {
// Data used to identify the server.
}
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface ChatServer extends Remote {
void register(ClientId c) throws RemoteException;
void broadcast(String s) throws RemoteException;
}
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface ChatClient extends Remote {
void register(ServerId c) throws RemoteException;
void broadcast(String s) throws RemoteException;
}

最新更新