JDK-8038984 : Proxy Auto Configuration Script fails
  • Type: Bug
  • Component: deploy
  • Sub-Component: webstart
  • Affected Version: 8
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_7
  • CPU: x86_64
  • Submitted: 2014-03-31
  • Updated: 2014-04-03
  • Resolved: 2014-04-03
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode, sharing)
Java(TM) Web Start 11.0.2.132-fcs

ADDITIONAL OS VERSION INFORMATION :
Windows 7 64 bit
Microsoft Windows [Version 6.1.7601]

A DESCRIPTION OF THE PROBLEM :
When using a PAC-Script for Proxy-Auto-Configuration Parsing the Scipt fails with the following Exception:
javax.script.ScriptException: TypeError: com.sun.deploy.net.proxy.SunAutoProxyHandler@c972aa has no such function "dnsResolve" in <eval> at line number 34
	at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:564)
	at jdk.nashorn.api.scripting.NashornScriptEngine.invokeImpl(NashornScriptEngine.java:514)
	at jdk.nashorn.api.scripting.NashornScriptEngine.invokeFunction(NashornScriptEngine.java:229)
	at com.sun.deploy.net.proxy.SunAutoProxyHandler.getProxyInfo(Unknown Source)
	at com.sun.deploy.net.proxy.DynamicProxyManager.getProxyList(Unknown Source)
	at com.sun.deploy.net.proxy.DeployProxySelector.select(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1097)
	at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:987)
	at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:985)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessController.doPrivileged(AccessController.java:713)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:984)
	at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:931)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1511)
	at sun.net.www.protocol.http.HttpURLConnection.access$200(HttpURLConnection.java:90)
	at sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1431)
	at sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1429)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessController.doPrivileged(AccessController.java:713)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1428)
	at gui.communication.HttpCommunicator.doGetRequest(HttpCommunicator.java:58)
	at gui.communication.ZASConnection.login(ZASConnection.java:123)
	at gui.communication.ZASCommunication.<init>(ZASCommunication.java:43)
	at gui.mainpanels.Administration.main(Administration.java:191)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at com.sun.javaws.Launcher.executeApplication(Unknown Source)
	at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
	at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
	at com.sun.javaws.Launcher.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:744)
Caused by: <eval>:34 TypeError: com.sun.deploy.net.proxy.SunAutoProxyHandler@c972aa has no such function "dnsResolve"
	at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:56)
	at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:212)
	at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:184)
	at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:171)
	at jdk.nashorn.internal.runtime.linker.NashornBottomLinker.linkBean(NashornBottomLinker.java:118)
	at jdk.nashorn.internal.runtime.linker.NashornBottomLinker.getGuardedInvocation(NashornBottomLinker.java:73)
	at jdk.internal.dynalink.support.CompositeGuardingDynamicLinker.getGuardedInvocation(CompositeGuardingDynamicLinker.java:124)
	at jdk.internal.dynalink.support.LinkerServicesImpl.getGuardedInvocation(LinkerServicesImpl.java:144)
	at jdk.internal.dynalink.DynamicLinker.relink(DynamicLinker.java:232)
	at jdk.nashorn.internal.scripts.Script$\^eval\_.dnsResolve(<eval>:34)
	at jdk.nashorn.internal.scripts.Script$\^eval\_.DnsResolve(<eval>:188)
	at jdk.nashorn.internal.scripts.Script$\^eval\_$2.ImplementFindProxyForURL(<eval>:188)
	at jdk.nashorn.internal.scripts.Script$\^eval\_.FindProxyForURL(<eval>:188)
	at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:502)
	at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:206)
	at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:378)
	at jdk.nashorn.api.scripting.ScriptObjectMirror.callMember(ScriptObjectMirror.java:179)
	at jdk.nashorn.api.scripting.NashornScriptEngine.invokeImpl(NashornScriptEngine.java:508)
	... 31 more

and PROXY=DIRECT is used.
The Exception occurs always when using RMI and sometimes when using "normal" HTTP-Conenctions

REGRESSION.  Last worked in version 7u51

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
- Configure Java Web Start to use a Proxy Auto Detection Script.
- Start an application using RMI using Java Web Start.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
No Exception, Proxy is used according to script
ACTUAL -
Exception, PROXY=DIRECT

ERROR MESSAGES/STACK TRACES THAT OCCUR :
see above

REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
Main-class:

package test;

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

import javax.swing.JOptionPane;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		Registry reg = LocateRegistry.getRegistry("rmihost",1099);
		String[] entries = reg.list();
		JOptionPane.showMessageDialog(null,entries[0]);
	}

}
_____________________________________
jnlp-file:
<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="file://localhost/H:/WebstartTest/signed"> 
  <information> 
	  <title>WebstartTest</title>
	  <vendor>just me</vendor>
  </information>
	<security>
      <all-permissions/> 
  </security>

  <resources> 
    <j2se version="1.8+" href="http://java.sun.com/products/autodl/j2se" max-heap-size="64m"/>
	<jar href="WebstartTest-1.0.0-SNAPSHOT.jar" main="true" download="eager"/>
  </resources>
<application-desc main-class="test.Main"/>
</jnlp>

---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
Use manual Proxy-Configuration