🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
2 messages
2 total messages Started by Ronald Kuczek Wed, 16 Oct 2013 14:26
JRE 7u45 problem z przekazywaniem parametrów przez JNLP
#153917
Author: Ronald Kuczek
Date: Wed, 16 Oct 2013 14:26
65 lines
3263 bytes
Cześć,

Walczę z tym od rana i tak jakby pomysły mi się kończą.
Dla uproszczenia, mamy prostą aplikację:

public class JTestFrame extends JFrame {
	JLabel toShow = new JLabel("var:" + 
System.getProperty("mojaaplikacja.testproperty"));
	public JTestFrame() {
		setContentPane(toShow);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		pack();
		setVisible(true);
	}
	public static void main(String[] args) {
		new JTestFrame();
	}

Którą pakujemy do jar-a i uruchamiamy przez JNLP.
Do wczoraj, tj. do wersji jre 7u40 bez problemu uruchamiała się takim kodem:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://10.0.10.230/webstart/app/" 
href="jnlpproblem.jnlp">
    <information>
       <title>MyApp JNLP</title>
       <vendor>MyAppFirma</vendor>
       <homepage href="http://www.kuczek.pl"/>
       <description>MyAppFrame JNLP</description>
       <offline-allowed/>
    </information>
  <security>
       <all-permissions/>
    </security>
    <resources>
       <j2se version="1.7" initial-heap-size="256M" max-heap-size="512M" 
  java-vm-args="-Xss16m"/>
      <jar href="jars/jnlpproblem/jnlpproblems.jar" main="true" 
download="eager"/>
      <property name="mojaaplikacja.testproperty" value="to jest wartosc 
testowej property" />
    </resources>
    <application-desc main-class="pl.testclient.jnlpproblems.JTestFrame">
    </application-desc>
</jnlp>


Po przekazaniu wartości mojaaplikacja.testproperty na testowym frame 
była wyświetlana. Niestety, bez zmiany literki w kodzie, po uruchomieniu 
tego samego zestawu do aplikacji przekazywany jest null.
Czyli -w jre7u45 nie są przekazywane parametry z jnlp <property>.
Dodam, że wygenerowany jar jest podpisywany certyfikatem self-signed ale 
dotychczas nie stanowiło to problemu. Walczył ktoś z tym ?
Jedyne rozwiązanie jakie na razie podpowiadali na jednym z forów było 
podpisanie jnlp (tj. umieszczenie go w pliku jar pod 
JNLP-INF/APPLICATION.JNLP) kompletnie mnie nie urządza, bo musiałbym dla 
każdego klienta generować osobnego jar-a z plikiem jnlp i specyficznymi 
dla niego ustawieniami dotychczas przekazywanymi przez <property> w 
jnlp. Jakieś pomysły ?

Pozdrawiam
Rony

Pozdrawiam
Rony
Re: JRE 7u45 problem z przekazywaniem parametrów przez JNLP
#153918
Author: Ronald Kuczek
Date: Wed, 16 Oct 2013 14:52
22 lines
1998 bytes
[...]
W międzyczasie natrafiłem na rozwiązanie, może komuś też się przyda. 
Szkoda tylko, że Oracle nie wspomniał nic w opisie zmian do wersji.
Okazuje się, że od wersji JRE 7U45 nie są przekazywane parametry, które 
są uznawane jako "insecure". Znalazłem trzy proponowane rozwiązania:

1. Podpisać plik jnlp (JNLP-INF/APPLICATION.JNLP) albo 
(JNLP-INF/APPLICATION_TEMPLATE.JNLP). Rozwiązanie niepraktyczne dla 
kogoś, kto (tak jak ja) musi dopasowywać wartości dynamicznie.

2. Używać "bezpiecznych" properties, czyli zmienić w pliku jnlp swoje 
nazwy właściwości dodając im prefix "jnlp." a następnie dopasować kod 
swojej aplikacji tak, by odpowiednio te parametry czytać/ustawiać.


3. Użyć "bezpiecznych" properties - w pliku jnlp zmienić swoje parametry 
nadając im prefix "jnlp.mojaaplikacja." a następnie przy starcie czytać 
wszystkie properties zaczynające się od "jnlp.mojaaplikacja" i ustawiać 
odpowiednie wartości.

Pozdrawiam
Rony
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads