May be we should revert fix made in JDK6 and be less aggressive here.
What we can do:
a) use ".jnlp" extension as hint to launch using javaws.
Moreover, it it is .jnlp then we can request it to be loaded to the cache and check mime type, if it is not JNLP then we can backup to browser.
This will still have negatively impact but only for URLs with JNLP extension that are not really JNLP files.
b) Check cache. If this URL is in the deployment cache and it is indeed JNLP then we should launch directly
c) May be introduce new method to launch JNLP app using one of services
It should be simple to implement both a) and b) above, and that should be enough.
If the url ends in .jnlp, or is in the cache, continue with the code at the top of BasicServiceImpl.showDocumentHelper(),
If neither, skip the check for accellerated jnlp launch, and proceed with the normal case at the bottom of BasicServiceImpl.showDocumentHelper().
If the file is in the cache, the check for the mime type in isJnlpUrl will not cause a web request.