2011-11-24 10 views
7

Es válido especificar código base de la siguiente manera:JNLP con base de código local - ¿cómo actualizar?

<jnlp spec="6.0+" 
    codebase="file:/c:/MyApp/" 
    href="myapp.jnlp"> 

Al importar esto con JWS se crea acceso directo del escritorio y la aplicación está funcionando.

Sin embargo, una cosa es muy diferente de la base de código remota. Cuando actualizo esos archivos mientras la aplicación se está ejecutando, básicamente deja de funcionar inundado con ClassNotFoundExceptions. Parece que JWS no copió los archivos jar, o los copió inmediatamente, ya que se actualizan de algún modo sobrescribiendo los utilizados por el proceso en ejecución.

¿Cómo puedo hacer que funcione como si los archivos fueran remotos? Es decir, copie los archivos en la memoria caché y solo verifique las actualizaciones en el inicio.

EDIT: No he encontrado una manera de hacerlo y decidí ir con un reemplazo homebrew. En el camino encontré varios errores e hice algunas observaciones que resumí al http://squirrel.pl/blog/2011/11/24/java-web-start-bugs-offline-edition/. Publicarlo aquí en caso de que pueda ser útil para alguien.

+0

¿Qué problema estás tratando de resolver con la base de código local? –

+0

Eso es además del punto: Confiar en las actualizaciones lentas y frágiles basadas en la web, y aprovechar nuestro sistema existente para inyectar todo tipo de archivos, instalaciones, actualizaciones, etc., para seleccionar las computadoras. –

+1

"actualizaciones frágiles basadas en web". Solo asegúrese de que si se actualiza un archivo obtiene una nueva URL y actualice el archivo JNLP en consecuencia. –

Respuesta

-4

En nuestra aplicación, el código base es:

<jnlp codebase="http://xxxx.xxx.xxx/jars"> 

y, a su archivo jar debe poner en your_webapp_root_directory/frascos. Para probar, puede ingresar una url en su navegador: http://xxxx.xxx.xxx/jars/xxxx.jar, si puede descargar el archivo xxxx.jar, funciona.

+0

Lo siento, pero pregunté específicamente sobre la base de código local. No creo que hayas leído la pregunta en absoluto. –

0

Para que su aplicación sea actualizable automáticamente, debe usar la etiqueta <update>.

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

Y también si lo desea, su aplicación puede ejecutarse en su uso sin conexión <offline-allowed/>.
También para dar todos los permisos de seguridad, necesita agregar la etiqueta <security>.
Agregue las siguientes etiquetas a su archivo JNLP.

<information> 
     <offline-allowed/> 
    </information> 

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

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

    <resources> 
     <jar href="your-signed.jar" main="false" download="eager"/> 
    </resources> 
Cuestiones relacionadas