gpt4 book ai didi

java - RMI:远程对象的字段是否被序列化并发送到客户端?

转载 作者:行者123 更新时间:2023-12-01 21:22:58 27 4
gpt4 key购买 nike

我有以下代码:

public class Foo implements SomeRemote {
private String verySecretString;
public void doSomething(){...}
}

据我了解,foo 将以某种方式被序列化并从 RMI 服务器发送到 RMI 客户端。那么,客户端是否可以访问verySecretString

最佳答案

这不是它的工作原理,您应该公开一个远程接口(interface)而不是一个类,然后在客户端级别操作该接口(interface),这样客户端就不知道实现细节。

所以在这里你应该有类似的东西:

public interface MyService extends Remote {
void doSomething() throws RemoteException;
}

这只是您在客户端级别所知道的。在服务器级别,您将实现 Foo,类似于:

public class Foo implements MyService {
private String verySecretString;
public void doSomething(){...}
}

响应更新:

如果您不希望序列化字段值,只需将关键字 transient 添加到其声明中,如下所示:

private transient String verySecretString;

关于java - RMI:远程对象的字段是否被序列化并发送到客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38834297/

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