[ https://issues.apache.org/jira/browse/BEAM-2701?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Luke Cwik resolved BEAM-2701. ----------------------------- Resolution: Fixed Fix Version/s: 2.2.0 > use a custom implementation of java.io.ObjectInputStream > -------------------------------------------------------- > > Key: BEAM-2701 > URL: https://issues.apache.org/jira/browse/BEAM-2701 > Project: Beam > Issue Type: Bug > Components: sdk-java-core > Reporter: Romain Manni-Bucau > Assignee: Romain Manni-Bucau > Fix For: 2.2.0 > > > java.io.ObjectInputStream should override resolve[Proxy]Class using the TCCL > to support any classloader and not fallback into some JVM pitfall using > another classloader (default). This will enable beam to use any classloader > instead of requiring to run in the JVM using java serialization. > {code} > @Override > protected Class<?> resolveClass(final ObjectStreamClass classDesc) throws > IOException, ClassNotFoundException { > final String n = classDesc.getName(); > final ClassLoader classloader = getClassloader(); > try { > return Class.forName(n, false, classloader); > } catch (ClassNotFoundException e) { > if (n.equals("boolean")) { > return boolean.class; > } > if (n.equals("byte")) { > return byte.class; > } > if (n.equals("char")) { > return char.class; > } > if (n.equals("short")) { > return short.class; > } > if (n.equals("int")) { > return int.class; > } > if (n.equals("long")) { > return long.class; > } > if (n.equals("float")) { > return float.class; > } > if (n.equals("double")) { > return double.class; > } > //Last try - Let runtime try and find it. > return Class.forName(n, false, null); > } > } > @Override > protected Class resolveProxyClass(final String[] interfaces) throws > IOException, ClassNotFoundException { > final Class[] cinterfaces = new Class[interfaces.length]; > for (int i = 0; i < interfaces.length; i++) { > cinterfaces[i] = getClassloader().loadClass(interfaces[i]); > } > try { > return Proxy.getProxyClass(getClassloader(), cinterfaces); > } catch (IllegalArgumentException e) { > throw new ClassNotFoundException(null, e); > } > } > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)