Abbiamo deciso di firmare i nostri file JNLP seguendo la guida oracle this. Dal momento che abbiamo JNLP diversi, abbiamo optato per il secondo approccio (firma di un file JAR con un modello JNLP).Continua a ricevere "JNLPSigningException [Impossibile confermare la firma del file di avvio]" all'avvio di un JNLP firmato dal modello
Ecco il codice abbiamo estratto nel modello:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="*" href="*">
<information>
<title>*</title>
<vendor>My vendor</vendor>
<description>My description</description>
<icon href="splash.jpg" kind="splash" width="700" height="400" size="115258"/>
<offline-allowed />
<shortcut>
<menu submenu="My submenu"/>
</shortcut>
</information>
<security>
<all-permissions/>
</security>
<resources locale="en es ja">
<j2se version="1.6+" initial-heap-size="128m" max-heap-size="384m" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="myjar.jar" main="true" download="lazy" part="core" size="*"/>
<jar href="lib/commons-lang-2.6.jar" download="lazy" part="commons" size="297085"/>
...
<jar href="lib/trident-6.0.jar" download="lazy" part="core" size="114496"/>
<property name="jnlp.myProperty" value="*"/>
<property name="log4j.configuration" value="*"/>
</resources>
<application-desc main-class="com.mycom.myapp.MyClass">
</application-desc>
</jnlp>
... ed ecco una delle JNLPs in realtà stiamo utilizzando:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://mylocation.mycom.com/jnlp/myapp/" href="myapp.jnlp">
<information>
<title>My App - Production version</title>
<vendor>My vendor</vendor>
<description>My description</description>
<icon href="splash.jpg" kind="splash" width="700" height="400" size="115258"/>
<offline-allowed />
<shortcut>
<menu submenu="My submenu"/>
</shortcut>
</information>
<security>
<all-permissions/>
</security>
<resources locale="en es ja">
<j2se version="1.6+" initial-heap-size="128m" max-heap-size="384m" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="myjar.jar" main="true" download="lazy" part="core" size="4189501"/>
<jar href="lib/commons-lang-2.6.jar" download="lazy" part="commons" size="297085"/>
...
<jar href="lib/trident-6.0.jar" download="lazy" part="core" size="114496"/>
<property name="jnlp.myProperty" value="http://mylocation.mycom.com/jnlp/myapp/MyApp.properties"/>
<property name="log4j.configuration" value="http://mylocation.mycom.com/jnlp/myapp/log4j.xml"/>
</resources>
<application-desc main-class="com.mycom.myapp.MyClass">
</application-desc>
</jnlp>
avviso che ho usato il jolly (*
) per:
- L'attributo codebase nel tag jnlp
- L'attributo href in tag jnlp
- contenuto all'interno tag title
- dimensioni attributo nel tag vaso
- il valore dei due immobili
ho messo il modello all'interno della cartella appropriata JNLP-INF
(con l'appropriato nome pure) e dopo abbiamo firmato il JAR. Tuttavia, continuiamo a ricevere JNLPSigningException
con il seguente messaggio:
Impossibile convalidare la firma del file di avvio. La versione firmata non corrisponde alla versione scaricata.
Qualcuno ha un'idea di cosa mi manca?
Per coloro che cercano, sembra che un jolly nel valore della proprietà non è supportato, anche con il jnlp. prefisso. Non sono sicuro di come Oracle pianifichi di consentire agli sviluppatori di passare in sicurezza l'applicazione a un parametro dinamico. Mi sta facendo impazzire! https://bugs.openjdk.java.net/browse/JDK-8042664 – JeffG