gpt4 book ai didi

java - 远程ejb方法参数隔离

转载 作者:行者123 更新时间:2023-11-30 11:02:56 27 4
gpt4 key购买 nike

我有一个带对象的远程 ejb。它使用 setter 方法修改该对象中的数据。在客户端中,我使用 getter 方法打印了该值,并观察到该值发生了变化。

但是文档here说参数是隔离的。谁能解释一下?

@Remote
public class RemoteServiceBean {

public Student parameterIsolationTest(final Student student) {

student.setName("modified");

return student;
}
}

public class MyClient {

public static void main(String arg...) {

....
Student student = new Student();
student.setName("Krishna");
remoteService.parameterIsolationTest(student);
System.out.println(student.getName()); // prints modified
}
}

最佳答案

服务器端的 bean 与服务器 JVM 中存在的 Java 对象一起运行。客户端有不同的 JVM,因此有不同的对象集。当您执行远程 EJB 调用时,这些对象需要以某种方式“传输”到客户端并返回。问题是这种“传输”仅在 EJB 调用本身期间发生。因此,如果您的客户端调用 EJB 上的 setter,另一个对象将被发送到服务器,但如果客户端随后修改该对象(没有在 EJB bean 上调用任何内容),则客户端的对象将不会传输到服务器 -服务器将不知道客户端更改了对象。

如果我理解您的情况,您是在 EJB 上调用 setter,然后是同一属性的 getter。 Setter 和 getter 都是 EJB 的方法,因此这将包括 EJB 调用,在这种情况下,您从客户端所做的更改将传播到服务器。

关于java - 远程ejb方法参数隔离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30598890/

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