Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6945158

Java not interpretting Proxy autoconfig file correctly

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: P3 P3
    • 7
    • 6u10
    • deploy
    • x86
    • windows_xp

      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.

            nam Nam Nguyen (Inactive)
            igor Igor Nekrestyanov (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: