web-dev-qa-db-fra.com

Avec Java 7 Update 45, les propriétés système ne sont plus définies à partir de la balise JNLP "Property"

Nous exécutons l'application à partir du JNLP ci-joint. Sur la console Java, nous avons sorti les propriétés du système avec D. Les propriétés de nos fichiers JNLP ne sont plus définies. C'est la première version de Java avec laquelle nous rencontrons ce type de problèmes. Tout fonctionnait bien jusqu’à la 7 Update 40 incluse.

Tous les pots sont signés, mais leurs manifestes ne contiennent aucun attribut de sécurité.

<?xml version="1.0" encoding="UTF-8"?>

<jnlp spec="1.0+" codebase="http://10.0.10.230/webstart/app" href="desktop.jnlp">
<information>
<title>MyApp Desktop</title>
<vendor>MyApp GmbH</vendor>
<homepage href="http://www.myres-edv.de"/>
<description>MyApp Desktop</description>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+" initial-heap-size="512M" max-heap-size="1024M" javaws-vm-args="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8200"/> 
 <property name="org.omg.CORBA.ORBInitialHost" value="10.0.10.230"/>             
 <property name="org.omg.CORBA.ORBServerHost" value="10.0.10.230" />
 <property name="Sun.net.spi.nameservice.provider.1" value="dns,Sun" />
 <property name="MyApp.baktswritedos" value="true"/>
 <property name="MyApp.nocomm" value="true"/>
 <property name="MyApp.la.erfassungdos" value="true"/>
 <property name="com.Sun.corba.ee.transport.ORBTCPConnectTimeouts" value="500:30000:40:30000" />
 <property name="deployment.trace.level" value="all" /> 
 <jar href="myresjar/ejb/myres/myres_ejb_client.jar" main="true" download="eager"/>
 <jar href="myresjar/ejb/myres/myres_ejb.jar" download="eager"/>
 <extension name="jars" href="commonejbjars.jnlp"/>
 <extension name="jars" href="jr.jnlp"/>
 <extension name="jars" href="commonjars.jnlp"/>
 <extension name="jars" href="commonjh.jnlp"/>
 <nativelib href="myresjar/ejb/myres/myres_dll.jar"/>
</resources>
<resources os="Windows">
    <nativelib href="myresjar/myres/native-dlls.jar" download="eager"/>
</resources>
<application-desc main-class="de.myapp.gui.desktop.mainframe.DesktopMainFrame">
   <argument>-serverIP=10.0.0.230</argument> 
   <argument>-initNewDayAction=true</argument> 
</application-desc>
</jnlp>    
25
user2885888

Nous avons eu un peu mal par le même problème. Nous avons fini par inclure le fichier JNLP dans le fichier jar signé, mais cela nous a posé des problèmes de construction délicats, car nous avions déjà créé un jeu de fichiers JAR et utilisé plusieurs fichiers JNLP pour prendre en charge différents environnements (assurance qualité, production, démonstration). , etc.), en transmettant les détails de l’environnement à l’application via une propriété système. Nous avons essayé d'utiliser un fichier modèle JNLP comme indiqué ici, http://docs.Oracle.com/javase/7/docs/technotes/guides/jweb/security/signedJNLP.html , mais nous avons conservé obtenir des erreurs liées à la vérification du fichier JNLP et abandonné en raison de contraintes de temps. Il est possible que nous fassions quelque chose de mal, mais les messages d'erreur n'indiquaient pas du tout quelle partie du fichier JNLP ne correspondait pas au modèle. De plus, le lien ci-dessus contient cette note peu utile qui dit: "Les éléments ou attributs susceptibles de compromettre la sécurité seront exclus de cette fonctionnalité." Je n'ai trouvé aucun exemple documenté de tels éléments ou attributs.

4
PRS

Avait le même problème et résolu en signant le fichier jnlp. Votre fichier JAR principal doit contenir une copie du fichier jnlp renommé APPLICATION.JNLP et placée dans le dossier JNLP-INF (le nom du dossier et le fichier jnlp doivent être en majuscule).

2
user2886002

J'ai défini comme:

<jnlp>
...
    <application-desc main-class="Main">
        <argument>param1=value1</argument>
    </application-desc>
</jnlp>

Ps. Sachez simplement que si vous transmettez des valeurs à l'aide d'une balise, vous transmettez des paramètres d'application et non un paramètre de machine virtuelle Java. Votre application doit intercepter ce paramètre dans votre méthode main (String args [])

2
Sergey Nebezb

Je viens de passer 2 jours à essayer de résoudre ce problème, à essayer de signer des fichiers jar et autres fichiers ... et puis j'ai trouvé la solution qui semble très simple et qui fonctionne bien:

J'ai * mis un fichier jndi.properties avec le contenu suivant dans mon répertoire JRE-home-director * y (jre7/lib):

Java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
Java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
Java.naming.provider.url=jnp://localhost:1099

J'ai eu ce problème lors de la mise à jour de Java 1.6 à Java 1.7 (51) ...

0
frasch333