将 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的原因。 StringSerializable

除此之外,这似乎是一个非常糟糕的设计。这些接口旨在表示每个端点提供的操作。另一方面,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的主要内容,如果未能解决你的问题,请参考以下文章

CORBA 和 RMI 的区别

CORBA IDL 与 RMI 的优缺点? [复制]

从 corba 转换为 slice

CORBA IDL 哈希图

CORBA IDL 到 C++ - 字符与无符号字符?

Java IDL与javaRMI