将 rmi 接口转换为 CORBA .idl
Posted
技术标签:
【中文标题】将 rmi 接口转换为 CORBA .idl【英文标题】:Convert rmi interface to CORBA .idl 【发布时间】:2018-12-17 03:17:05 【问题描述】:如何在 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 应用程序。
【问题讨论】:
ChatClient
类或接口是什么?顺便说一句,CORBA 是一种死技术,那么,你为什么对它感兴趣?
它是一个与ChatServer相同的接口,它的类型相同,所以我没有包括它。对于 CORBA,学校的东西,我的老师希望我们将在互联网上看到的 RMI 代码转换为 CORBA 应用程序。
【参考方案1】:
您可以尝试扩展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
的原因。 String
是 Serializable
。
除此之外,这似乎是一个非常糟糕的设计。这些接口旨在表示每个端点提供的操作。另一方面,Serializable
stuff 是端点之间传输的数据。通过创建同时使用这两种帽子的类/对象/接口,它肯定会变得一团糟。
一个更好的主意是:
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;
【讨论】:
这对我的程序来说是一个很好的提示,不幸的是,我想将我的界面转换为 CORBA .idl 文件,而不是在 RMI 界面中。所以它没有回答我的问题:D.以上是关于将 rmi 接口转换为 CORBA .idl的主要内容,如果未能解决你的问题,请参考以下文章