假设我有远程接口(interface) A:
@Remote
public interface A {
public Response doSomething();
}
和实现:
@Stateless
public class B implements A {
public BeeResponse doSomething() {...}
}
地点:
- BeeResponse 扩展了 Response。
- Response 位于 EJB-API jar 中,BeeResponse 位于实现 jar 中。
- Response 和 BeeResponse 具有不同的serialVersionUID。
我的假设是来自 B 的响应的解码将会失败,我是否正确?
最佳答案
我在 OpenEJB 中测试了这个运行,它的行为似乎正如我所预测的那样,客户端不理解来自 Bean 的响应,因为客户端系统中缺少 BeeResponse 类。
它一直有效,直到客户端开始反序列化响应为止。然而,串行版本 UID 在这里没有任何影响,因为客户端甚至无法创建该类。
现在这一切都说得通了,但我有点“希望”有某种魔法可以让它发挥作用:-)
关于java - 从远程 EJB 方法返回返回类型的父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2591245/