2010-09-14 14 views
6

Quiero configurar mi aplicación webstart/jnlp para que, si no hay conexión a Internet disponible, comience desde la memoria caché. Sin embargo, cuando me desconecto de Internet, siempre recibo una excepción NoRouteToHostException o UnknownHostException, a pesar de la configuración a continuación.Java Webstart no funciona sin conexión (NoRouteToHostException/UnknownHostException)

He configurado las etiquetas/atributos permitidos sin conexión y actualizo correctamente, creo; No puedo encontrar la razón por la cual webstart todavía está tratando de buscar el host. Definitivamente tengo la aplicación en la memoria caché de mi inicio anterior cuando estaba conectado. registro

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp spec="6.0+" codebase="http://cms.mydomain.com/sync/" href="myAppSync.jnlp"> 

<information> 
    <title>My App Sync</title> 
    <vendor>My Company</vendor> 
    <homepage href="http://www.myapp.com/"/> 
    <description>Sync application for My App</description> 
    <icon href="ATTico.png"/>   

    <!-- allow app to run without Internet access --> 
    <offline-allowed/> 

    <shortcut online="true">   
     <desktop/> 
     <!-- create menu item for this app under the major heading 'My App' --> 
     <menu submenu="My App"/> 
    </shortcut> 

</information> 

<security> 
    <all-permissions/> 
</security> 

<update check="timeout" policy="always" /> 

<resources> 
    <java version="1.6*" href="http://java.sun.com/products/autodl/j2se"/> 
    <jar href="lib/myAppSync.jar" /> 
    <jar href="lib/apache-mime4j-0.6.jar" /> 
    <jar href="lib/commons-logging-1.1.1.jar" /> 
    <jar href="lib/commons-codec-1.3.jar" /> 
    <jar href="lib/httpclient-4.0.1.jar" /> 
    <jar href="lib/httpcore-4.0.1.jar" /> 
    <jar href="lib/httpmime-4.0.1.jar" /> 
    <jar href="lib/swingx-1.6.jar" /> 
    <jar href="lib/swingx-beaninfo-1.6.jar" />   
</resources> 

<application-desc main-class="com.myapp.sync.forms.Main"/> 

</jnlp> 

error:

java.net.NoRouteToHostException: No route to host: connect 
at java.net.PlainSocketImpl.socketConnect(Native Method) 
at java.net.PlainSocketImpl.doConnect(Unknown Source) 
at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.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.http.HttpClient.<init>(Unknown Source) 
at sun.net.www.http.HttpClient.New(Unknown Source) 
at sun.net.www.http.HttpClient.New(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) 
at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source) 
at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source) 
at com.sun.javaws.LaunchDownload.downloadJarFiles(Unknown Source) 
at com.sun.javaws.LaunchDownload.downloadEagerorAll(Unknown Source) 
at com.sun.javaws.Launcher.downloadResources(Unknown Source) 
at com.sun.javaws.Launcher.prepareLaunchFile(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$1.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 



java.net.UnknownHostException: cms.mydomain.com 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.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.http.HttpClient.<init>(Unknown Source) 
at sun.net.www.http.HttpClient.New(Unknown Source) 
at sun.net.www.http.HttpClient.New(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) 
at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source) 
at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source) 
at com.sun.javaws.LaunchDownload.downloadJarFiles(Unknown Source) 
at com.sun.javaws.LaunchDownload.downloadEagerorAll(Unknown Source) 
at com.sun.javaws.Launcher.downloadResources(Unknown Source) 
at com.sun.javaws.Launcher.prepareLaunchFile(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$1.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

Respuesta

2

he encontrado una solución llamando javaws de línea de comandos con el parámetro -offline, pero me parece que raro que esto es necesario, preguntándose por qué el sistema no puede Detectar automáticamente que estoy fuera de línea y, por lo tanto, agotar el tiempo de espera en la verificación e iniciar la aplicación desde la memoria caché, tal como se define en mi jnlp.

javaws -offline myApp.jnlp 
0

Esto se puede lograr mediante el uso de <update check="background"/>, pero las actualizaciones ya no se descargan de inmediato cuando esté disponible, se requiere una segunda salida que es molesto.

Esto realmente se siente como un error de Java Web Start, <update check="timeout"/> no debe impedir que la aplicación se inicie si se interrumpe la conexión al servidor.

Cuestiones relacionadas