对于Java RMI,即使客户端和服务器都在同一个JVM中运行,作为参数传递给Remote对象的对象也必须实现Serializable
吗?
答案 0 :(得分:1)
基本上是的。即使客户端和服务器位于同一个JVM中,通过存根进行远程调用仍会对参数进行编组,使用RMI协议(JRMP)发送请求,在服务器端解组,反之亦然,返回值。如果客户端和服务器碰巧在同一台机器上,则不会发生短路。
从某种意义上说,它有助于验证您的设计。如果存在短路,则在将客户端移动到其他JVM时可能会遇到可串行化问题或意外的对象共享。
你可以自己短路RMI,如果你有客户端make" remote"直接调用服务器实现对象而不是存根。这些调用当然是常规方法调用。要避免此问题,您必须确保客户端只能使用存根,而不是实际的实现对象。
答案 1 :(得分:0)
是。没有短路。这将违反RMI规范。