JDK-6945158 : Java not interpretting Proxy autoconfig file correctly
  • Type: Bug
  • Component: deploy
  • Sub-Component: webstart
  • Affected Version: 6u10
  • Priority: P3
  • Status: Closed
  • Resolution: Cannot Reproduce
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2010-04-19
  • Updated: 2011-10-11
  • Resolved: 2011-10-11
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7
7Resolved
Description
FULL PRODUCT VERSION :
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)

ADDITIONAL OS VERSION INFORMATION :
Windows XP SP3

A DESCRIPTION OF THE PROBLEM :
We are in the process of installing a new proxy server and are setting our workstations to use a PAC file to determine when they should use the proxy and when they should go direct. When having JAVA set to use either browser settings for Proxy or pointing to a URL for the proxy PAC file, the java application fails. It says that the standard pac file functions such as isPlainHostName(host) and dnsDomainIs(host, domain) are undefined and fails to load the PAC file.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Use proxy autoconfig file

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
For this application, it should bypass the proxy
ACTUAL -
Application is giving "an unhandled exception occurred: 1" error and failing.

ERROR MESSAGES/STACK TRACES THAT OCCUR :
awt.toolkit -> sun.awt.windows.WToolkit
codebase -> http://onbwebsvr3.onbcorp.com/eVision/Check
defaultlocale -> en_US
deployment.browser.path -> C:\Program Files\Internet Explorer\IEXPLORE.EXE
deployment.browser.vm.iexplorer -> true
deployment.browser.vm.mozilla -> true
deployment.cache.enabled -> true
deployment.cache.jarcompression -> 0
deployment.cache.max.size -> -1
deployment.capture.mime.types -> false
deployment.console.startup.mode -> SHOW
deployment.control.panel.log -> false
deployment.javapi.cache.update -> false
deployment.javapi.lifecycle.exception -> false
deployment.javapi.log.filename ->
deployment.javapi.runtime.type -> 0
deployment.javapi.trace.filename ->
deployment.javaws.associations -> ASK_USER
deployment.javaws.autodownload -> ALWAYS
deployment.javaws.cache.update -> false
deployment.javaws.home.jnlp.url -> http://java.sun.com/products/javawebstart
deployment.javaws.installURL -> http://java.sun.com/products/autodl/j2se
deployment.javaws.logFileName ->
deployment.javaws.muffin.max -> 256
deployment.javaws.shortcut -> ASK_IF_HINTED
deployment.javaws.splash.index -> C:\Documents and Settings\RKREMER\Application Data\Sun\Java\Deployment\cache\6.0\splash\splash.xml
deployment.javaws.ssv.enabled -> true
deployment.javaws.traceFileName ->
deployment.javaws.uninstall.shortcut -> false
deployment.javaws.update.timeout -> 1500
deployment.jpi.mode.new -> true
deployment.log -> false
deployment.max.output.file.size -> 10
deployment.max.output.files -> 5
deployment.mime.types.use.default -> true
deployment.proxy.auto.config.url -> http://10.100.0.211:8080/accelerated_pac_base.pac
deployment.proxy.bypass.local -> false
deployment.proxy.override.hosts ->
deployment.proxy.same -> false
deployment.proxy.type -> 3
deployment.repository.askdownloaddialog.show -> true
deployment.repository.enabled -> true
deployment.security.SSLv2Hello -> false
deployment.security.SSLv3 -> true
deployment.security.TLSv1 -> true
deployment.security.askgrantdialog.notinca -> true
deployment.security.askgrantdialog.show -> true
deployment.security.authenticator -> true
deployment.security.browser.keystore.use -> true
deployment.security.clientauth.keystore.auto -> true
deployment.security.expired.warning -> true
deployment.security.https.warning.show -> false
deployment.security.jsse.hostmismatch.warning -> false
deployment.security.notinca.warning -> true
deployment.security.pretrust.list -> true
deployment.security.sandbox.awtwarningwindow -> true
deployment.security.sandbox.jnlp.enhanced -> true
deployment.security.trusted.policy ->
deployment.security.validation.crl -> false
deployment.security.validation.ocsp -> false
deployment.system.security.cacerts -> C:\Program Files\Java\jre6\lib\security\cacerts
deployment.system.security.jssecacerts -> C:\Program Files\Java\jre6\lib\security\jssecacerts
deployment.system.security.oldcacerts -> C:\Program Files\Java\jre6\lib\security\cacerts
deployment.system.security.oldjssecacerts -> C:\Program Files\Java\jre6\lib\security\jssecacerts
deployment.system.security.trusted.certs -> C:\Program Files\Java\jre6\lib\security\trusted.certs
deployment.system.security.trusted.clientauthcerts -> C:\Program Files\Java\jre6\lib\security\trusted.clientcerts
deployment.system.security.trusted.jssecerts -> C:\Program Files\Java\jre6\lib\security\trusted.jssecerts
deployment.system.security.trusted.publishers -> C:\Program Files\Java\jre6\lib\security\trusted.publishers
deployment.system.tray.icon -> true
deployment.trace -> false
deployment.update.mime.types -> true
deployment.user.cachedir -> C:\Documents and Settings\RKREMER\Application Data\Sun\Java\Deployment\cache
deployment.user.extdir -> C:\Documents and Settings\RKREMER\Application Data\Sun\Java\Deployment\ext
deployment.user.logdir -> C:\Documents and Settings\RKREMER\Application Data\Sun\Java\Deployment\log
deployment.user.security.policy -> file://C:/Documents%20and%20Settings/RKREMER/Application%20Data/Sun/Java/Deployment/security/java.policy
deployment.user.security.saved.credentials -> C:\Documents and Settings\RKREMER\Application Data\Sun\Java\Deployment\security\auth.dat
deployment.user.security.trusted.cacerts -> C:\Documents and Settings\RKREMER\Application Data\Sun\Java\Deployment\security\trusted.cacerts
deployment.user.security.trusted.certs -> C:\Documents and Settings\RKREMER\Application Data\Sun\Java\Deployment\security\trusted.certs
deployment.user.security.trusted.clientauthcerts -> C:\Documents and Settings\RKREMER\Application Data\Sun\Java\Deployment\security\trusted.clientcerts
deployment.user.security.trusted.jssecacerts -> C:\Documents and Settings\RKREMER\Application Data\Sun\Java\Deployment\security\trusted.jssecacerts
deployment.user.security.trusted.jssecerts -> C:\Documents and Settings\RKREMER\Application Data\Sun\Java\Deployment\security\trusted.jssecerts
deployment.user.security.trusted.publishers -> C:\Documents and Settings\RKREMER\Application Data\Sun\Java\Deployment\security\trusted.publishers
deployment.user.tmp -> C:\Documents and Settings\RKREMER\Application Data\Sun\Java\Deployment\tmp
deployment.version -> 6.0
file.encoding -> Cp1252
file.encoding.pkg -> sun.io
file.separator -> http.auth.serializeRequests -> true
https.protocols -> TLSv1,SSLv3
java.awt.graphicsenv -> sun.awt.Win32GraphicsEnvironment
java.awt.printerjob -> sun.awt.windows.WPrinterJob
java.class.path -> C:\Program Files\Java\jre6\lib\deploy.jar
java.class.version -> 50.0
java.endorsed.dirs -> C:\Program Files\Java\jre6\lib\endorsed
java.ext.dirs -> C:\Program Files\Java\jre6\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
java.home -> C:\Program Files\Java\jre6
java.io.tmpdir -> C:\DOCUME~1\RKREMER\LOCALS~1\Tempjava.library.path -> C:\Program Files\Java\jre6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Java\jre6\bin;C:\Program Files\Internet Explorer;;C:\Perl\site\bin;C:\Perl\bin;C:\Program Files\VASCO\VACMAN Middleware 3\Bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\PROGRA~1\IBM\CLIENT~1;C:\PROGRA~1\IBM\CLIENT~1\Shared;C:\PROGRA~1\IBM\CLIENT~1\Emulator;;C:\Program Files\Novell\ZENworks\;C:\WINDOWS\system32\nls;C:\WINDOWS\system32\nls\english;C:\Program Files\Utimaco\SafeGuard Easy\;\6.0\ConflictSolver;%C:\WINDOWS%\system32\nls;%C:\WINDOWS%\system32\nls\ENGLISH;C:\Program Files\Novell\ZENworks;c:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Nmap;C:\Program Files\Nmap;C:\;Z:.;Y:.;X:.;C:\WINDOWS\system32\nls;C:\WINDOWS\system32\nls\ENGLISH;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Nmap;C:\;Z:.;Y:.;X:.;;"C:\Program Files\Java\jre6\bin"
java.protocol.handler.pkgs -> com.sun.javaws.net.protocol|com.sun.deploy.net.protocol
java.quick.starter -> true
java.rmi.server.RMIClassLoaderSpi -> com.sun.jnlp.JNLPRMIClassLoaderSpi
java.runtime.name -> Java(TM) SE Runtime Environment
java.runtime.version -> 1.6.0_11-b03
java.security.policy -> file:C:\Program Files\Java\jre6\lib\security\javaws.policy
java.specification.name -> Java Platform API Specification
java.specification.vendor -> Sun Microsystems Inc.
java.specification.version -> 1.6
java.vendor -> Sun Microsystems Inc.
java.vendor.url -> http://java.sun.com/
java.vendor.url.bug -> http://java.sun.com/cgi-bin/bugreport.cgi
java.version -> 1.6.0_11
java.vm.info -> mixed mode, sharing
java.vm.name -> Java HotSpot(TM) Client VM
java.vm.specification.name -> Java Virtual Machine Specification
java.vm.specification.vendor -> Sun Microsystems Inc.
java.vm.specification.version -> 1.0
java.vm.vendor -> Sun Microsystems Inc.
java.vm.version -> 11.0-b16
javaplugin.proxy.config.type -> auto
javawebstart.version -> javaws-1.6.0_11
jnlpx.home -> C:\Program Files\Java\jre6\bin
jnlpx.jvm -> C:\Program Files\Java\jre6\bin\javaw.exe
jnlpx.remove -> false
jnlpx.splashport -> 4987
line.separator ->

os.arch -> x86
os.name -> Windows XP
os.version -> 5.1
path.separator -> ;
sun.arch.data.model -> 32
sun.boot.class.path -> C:\Program Files\Java\jre6\lib\resources.jar;C:\Program Files\Java\jre6\lib\rt.jar;C:\Program Files\Java\jre6\lib\sunrsasign.jar;C:\Program Files\Java\jre6\lib\jsse.jar;C:\Program Files\Java\jre6\lib\jce.jar;C:\Program Files\Java\jre6\lib\charsets.jar;C:\Program Files\Java\jre6\classes;C:\Program Files\Java\jre6\lib\javaws.jar;C:\Program Files\Java\jre6\lib\deploy.jar
sun.boot.library.path -> C:\Program Files\Java\jre6\bin
sun.cpu.endian -> little
sun.cpu.isalist -> pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
sun.desktop -> windows
sun.io.unicode.encoding -> UnicodeLittle
sun.java.launcher -> SUN_STANDARD
sun.jnu.encoding -> Cp1252
sun.management.compiler -> HotSpot Client Compiler
sun.os.patch.level -> Service Pack 3
trustProxy -> true
user.country -> US
user.dir -> C:\Documents and Settings\RKREMER\Desktop
user.home -> C:\Documents and Settings\RKREMER
user.language -> en
user.name -> RKREMER
user.timezone -> America/Chicago
user.variant ->
1: #deployment.properties
2: #Thu Jul 16 09:37:31 CDT 2009
3: deployment.security.jsse.hostmismatch.warning=false
4: deployment.proxy.auto.config.url=http\://10.100.0.211\:8080/accelerated_pac_base.pac
5: deployment.javaws.splash.index=C\:\\Documents and Settings\\RKREMER\\Application Data\\Sun\\Java\\Deployment\\cache\\6.0\\splash\\splash.xml
6: deployment.version=6.0
7: deployment.console.startup.mode=SHOW
8: deployment.browser.path=C\:\\Program Files\\Internet Explorer\\IEXPLORE.EXE
9: #Java Web Start jre's
10: #Thu Jul 16 09:37:31 CDT 2009
11: deployment.javaws.jre.1.registered=true
12: deployment.javaws.jre.1.osname=Windows
13: deployment.javaws.jre.0.platform=1.6
14: deployment.javaws.jre.0.registered=true
15: deployment.javaws.jre.1.enabled=true
16: deployment.javaws.jre.1.location=http\://java.sun.com/products/autodl/j2se
17: deployment.javaws.jre.0.osname=Windows
18: deployment.javaws.jre.0.path=C\:\\Program Files\\Java\\jre6\\bin\\javaw.exe
19: deployment.javaws.jre.0.product=1.6.0_11
20: deployment.javaws.jre.1.osarch=x86
21: deployment.javaws.jre.1.path=C\:\\Program Files\\Java\\jre1.6.0_07\\bin\\javaw.exe
22: deployment.javaws.jre.1.platform=1.6
23: deployment.javaws.jre.0.osarch=x86
24: deployment.javaws.jre.1.product=1.6.0_07
25: deployment.javaws.jre.0.location=http\://java.sun.com/products/autodl/j2se
26: deployment.javaws.jre.0.enabled=true
deployment.proxy.type: = null
No Proxy config set in Java WebStart
Checking registry for Browser Settings
ReferenceError: "isPlainHostName" is not defined. (<cmd>#15)
Warning:  error in the HTTP response processing loop
java.lang.NullPointerException
	at com.afsimage.lib.net.DefaultRequestor3.finishTransaction(Unknown Source)
	at com.afsimage.lib.net.PartialRequestorImpl.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)


REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
function FindProxyForURL(url, host) {
	//Bypass these domains
	if ( isPlainHostName(host) ) { return "DIRECT"; }
	if (dnsDomainIs(host, ".domain.com")) { return "DIRECT"; }
	if (dnsDomainIs(host, ".domain2.com")) { return "DIRECT"; }
	if (dnsDomainIs(host, ".domain3.com")) { return "DIRECT"; }
	if (dnsDomainIs(host, ".domain4.com")) { return "DIRECT"; }

	//URLs within these networks go Direct
	if (isInNet(host, "10.0.0.0", "255.0.0.0")) { return "DIRECT";}
	if (isInNet(host, "192.168.0.0", "255.255.0.0")) { return "DIRECT";}
	if (isInNet(host, "172.16.0.0", "255.240.0.0"))	{ return "DIRECT";}

	//Set proxy for Streaming Protocols
	if( url.substring(0, 5) == "rtsp:" )
               return "PROXY 10.100.0.211:554";
        if( url.substring(0, 5) == "mms:" )
              return "PROXY 10.100.0.211:1755";

	//Set proxy for everything else
	return "PROXY 10.100.0.211:8080; DIRECT";
}

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

CUSTOMER SUBMITTED WORKAROUND :
use 'if (host=="host.domain.com") { return "DIRECT"; }' to specify which servers that the java application needs to use and go direct. If I put this at the top of the PAC file before any of the functions, it seems to work OK. But this is definitely not a good solution since I won't know what URLs need to go direct and which should use a proxy until they break.

Comments
EVALUATION Can not reproduce in house. No details are provided by submitter
11-10-2011