JDK-8207930 : Unable to launch JWS application offline since 8u171
  • Type: Bug
  • Component: deploy
  • Sub-Component: webstart
  • Affected Version: 8u171
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_10
  • CPU: x86_64
  • Submitted: 2018-07-19
  • Updated: 2018-10-02
  • Resolved: 2018-07-20
Related Reports
Duplicate :  
Duplicate :  
Relates :  
Description
ADDITIONAL SYSTEM INFORMATION :
Intel64 Family 6 Model 78 Stepping 3, GenuineIntel
Windows 10 Enterprise (also fails on Windows 7 Enterprise)
Java 8 Update 181 (both 32 and 64 bit exhibit this behavior)


A DESCRIPTION OF THE PROBLEM :
When attempting to launch a Web Start app offline, receive "Application Error" dialog stating "Unable to launch the application."

REGRESSION : Last worked in version 8u162

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Create any Java Web Start app with <offline-allowed/> in jnlp file.  After initial load and run from web server, attempt to run offline by:
A) Disconnecting all network connections and launching from desktop shortcut or Java Cache Viewer; or
B) Select app in Java Cache Viewer and explicitly choose "Run offline".

Please note that exception thrown by Web Start does differ between method A and method B.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
App launches and runs.
ACTUAL -
"Application Error" dialog displays, stating "Unable to launch the application."

Details from "More Information" dialog (when no network connections):
"Error:  fis.dnr.state.mn.us"

"Launch File" tab
--------------------
<?xml version="1.0" encoding="utf-8"?>
<jnlp
    spec="1.0+"
    codebase="https://fis.dnr.state.mn.us/hw/"
    href="hw.jnlp">
    <information>
        <title>Hello World</title>
        <vendor>MN.IT@DNR - FAW - FIS</vendor>
        <homepage href="./"/>
        <description>dumb app to test offline launching</description>
        <offline-allowed/>
        <shortcut>
            <desktop/>
        </shortcut>
    </information>
    <security>
        <all-permissions/>
    </security>
    <resources>
        <j2se version="1.7+"/>
        <jar href="hw.jar" main="true"/>
    </resources>
    <application-desc main-class="HelloWorld"/>
</jnlp>
====================

"Exception" tab
--------------------
java.net.UnknownHostException: fis.dnr.state.mn.us
	at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.connect(Unknown Source)
	at sun.security.ssl.BaseSSLSocketImpl.connect(Unknown Source)
	at sun.net.NetworkClient.doConnect(Unknown Source)
	at sun.net.www.http.HttpClient.openServer(Unknown Source)
	at sun.net.www.http.HttpClient.openServer(Unknown Source)
	at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
	at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessController.doPrivilegedWithCombiner(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.access$200(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessController.doPrivilegedWithCombiner(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
	at com.sun.deploy.net.HttpUtils.followRedirects(Unknown Source)
	at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
	at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source)
	at com.sun.deploy.cache.ResourceProviderImpl.checkUpdateAvailable(Unknown Source)
	at com.sun.deploy.cache.ResourceProviderImpl.isUpdateAvailable(Unknown Source)
	at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
	at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
	at com.sun.deploy.model.ResourceProvider.getResource(Unknown Source)
	at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
	at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
	at com.sun.javaws.Launcher.prepareResources(Unknown Source)
	at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
	at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
	at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
	at com.sun.javaws.Launcher.launch(Unknown Source)
	at com.sun.javaws.Main.launchApp(Unknown Source)
	at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
	at com.sun.javaws.Main.access$000(Unknown Source)
	at com.sun.javaws.Main$1.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
====================

"Console" tab
--------------------
Java Web Start 11.181.2.13 amd64
Using JRE version 1.8.0_181-b13 Java HotSpot(TM) 64-Bit Server VM
User home directory = C:\Users\fishcrew
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
m:   print memory usage
o:   trigger logging
p:   reload proxy configuration
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
0-5: set trace level to <n>
----------------------------------------------------
#### Java Web Start Error:
#### fis.dnr.state.mn.us
====================

javaws_5532_6818047225744539738.trace file contents
--------------------
Log started: Thu, 19 Jul 2018 15:12:32 -0500
Java Web Start 11.181.2.13
Using JRE version
 1.8.0_181-b13 Java HotSpot(TM) 64-Bit Server VM
#### Java Web Start Error:
#### fis.dnr.state.mn.us
====================


---------- BEGIN SOURCE ----------
Actual app doesn't seem to matter as it never gets to execute.  JNLP file is as detailed above under "Launch File" tab.
---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
Only work around found so far is to downgrade to Java 8 Update 161.

FREQUENCY : always



Comments
yes - this is a dupe of the underlying problem in JDK-8195609: DRS - cert based run rule not working when running offline, which is fixed in 8u182. I can reproduce with 8u181 with simple testcase, I cannot reproduce with 8u192 the stacktrace lines: at com.sun.deploy.model.ResourceProvider.getResource(Unknown Source) at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source) show checkSignedResourcesHelper calling getResource(). This call was introduced in 8u171 with JDK-8194682, the fix in 8u192 was to replace that call with getCachedResource().
20-07-2018

Web Start application fails to launch offline with error dialog stating "Unable to launch the application." Issue is reported as a regression starting 8u171 and continues wit 8u181. The issue is similar to JDK-8203272. Writing back to the submitter requesting check with JDK 10.0.2 where it has been likely fixed courtesy JDK-8195609.
20-07-2018