JDK-8188252 : RMI is restricted to reusable sockets as of Java 9
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.rmi
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Won't Fix
  • OS: generic
  • CPU: generic
  • Submitted: 2017-09-29
  • Updated: 2018-05-30
  • Resolved: 2018-05-30
Related Reports
Relates :  
Relates :  
Description
FULL PRODUCT VERSION :
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)


ADDITIONAL OS VERSION INFORMATION :
The problem is not restricted to a particular OS version

A DESCRIPTION OF THE PROBLEM :
As part of the change

http://hg.openjdk.java.net/jdk9/dev/jdk/rev/ae10dd067bcd

which removes the HTTP proxy implementation, the marker interface RMISocketInfo and it's treatment in the implementation of the method TCPConnection.isReusable() has been removed. As a consequence, support for non-reusable sockets has been removed as well. This breaks our implementation of a custom socket factory - which basically tunnels RMI over HTTP. 



REGRESSION.  Last worked in version 8u144


REPRODUCIBILITY :
This bug can be reproduced always.

CUSTOMER SUBMITTED WORKAROUND :
As a workaround we could use bytecode instrumentation to change the behavior of  TCPConnection.isReusable(). It would however be a way better solution to add the marker interface back.


Comments
The proxy functionality has been removed and the internal support for it as well and will not be replaced.
30-05-2018

The sun.rmi packages are part of the implementation and not part of the public supported API. All of the sun.rmi classes are encapsulated and not exported in the JDK 9 implementation.
05-10-2017