gpt4 book ai didi

java - 将 rmi 接口(interface)转换为 CORBA .idl

转载 作者:行者123 更新时间:2023-12-02 10:27:42 29 4
gpt4 key购买 nike

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

import java.rmi.*;

public interface ChatServer extends Remote{
void register(ChatClient c) throws RemoteException;
void broadcast(String s) throws RemoteException;
}

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

最佳答案

您可以尝试扩展java.io.Serialized:

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 返回类型都必须是可序列化的。 String可序列化

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

更好的想法是:

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;
}

关于java - 将 rmi 接口(interface)转换为 CORBA .idl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53808554/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com