2012-12-05 9 views
8

Sto usando JavaScript per eseguire JNLP che alla fine eseguirà il mio client.Passare parametri din tramite JNLP

Sto cercando di passare i parametri tramite l'esecuzione JavaScript a JNLP e di avere questi parametri tramite JNLP all'interno del mio client.

La JavaScript sta eseguendo questo URL per esempio:

http://localhost:8080/MyJnlp.jnlp?login=14hhh765p&pass=ggyyktff 

Ora il mio JNLP cercherà di ottenere i parametri nel <application-desc name tag questo modo:

<application-desc name="..." main-class="com.main.execute" > 
     <argument>-nosplash</argument> 
     <argument>-q</argument> 
    <argument><%=request.getParameter("login")%></argument> 
    <argument><%=request.getParameter("pass")%></argument> 
</application-desc> 

Ma non ha funzionato.

non ho potuto recuperare quei parametri nel mio codice cliente in questo modo:

login=getParamsFromJnlp("login") 
.. 

public String getParamsFromJnlp(String key) { 
    return System.getProperty(key); 
} 

Il JNLP è dentro Apache2.2

Qualche idea di cosa c'è che non va?

+0

I parametri saranno passati come argomenti nel metodo principale. Non so molto su apache 2.2, ma come si accede agli argomenti "-nosplash" e "-q"? –

+0

Funzionano bene. il fatto è che voglio prendere i parametri dalla stringa di query che esegue il JNLP e inviarli agli argomenti della riga di comando nel mio client – rayman

+0

potresti aver bisogno di impostare l'attributo codebase: controlla se la mia risposta qui si applica: http: // stackoverflow. it/questions/12861447/dynamically-create-response-in-jsf/12863398 # 12863398 –

risposta

9

Per poter inserire i parametri HTTP nella discussione della vostra applicazione, il file .jnlp ha bisogno di essere 'costruito' dynamicly su richiesta, perché non è fino ad allora si sa che http-parametri che sarà usato.

Il modo in cui java-web-start funziona è che scaricherà il file .jnlp diverse volte, ma a parte la prima volta scaricherà il file dall'URL specificato negli attributi codebase e href dell'elemento jnlp.

Quindi non è sufficiente per aggiungere l'argomento-elemento dynamicly nell'elemento, è inoltre necessario aggiungere al codice di base/href attributi

<jnlp spec="1.0+" 
     codebase=<%=request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ request.getContextPath() + "/" %> 
     href="jnlpfile.jnlp&#063;username=<%=request.getParameter("username")%>&clienttoken=<%=request.getParameter("clienttoken")%>"> 

    ... 
    <application-desc main-class="test.MainClass"> 
     <argument><%=request.getParameter("username")%></argument> 
    </application-desc> 
</jnlp> 
+0

E posso farlo senza aver bisogno di alcuna pagina jsp? – rayman

+0

Ho provato e ho ottenuto un'eccezione: BadFieldException [Il campo codebase ha un valore non valido: <% = request.getScheme(), <% = request.getScheme()] – rayman

+0

No, scusa se ho dimenticato che questo richiede ancora jsp. l'unico modo so come fare quello che vuoi fare generando jnlp in modo dinamico usando jsp, php o altri equivalenti –

1

Sei sicuro che il tipo di risposta del JSP sia "application/x-java-jnlp-file"?

In caso contrario, si prega di menzionarlo nella parte superiore del JSP e controllare.

<% response.setContentType("application/x-java-jnlp-file"); %> 
+0

Penso di non averlo capito. dove si svolge il JSP in questo scenario? Sto eseguendo questo tramite: main-class = "com.main.execute e arrivo direttamente a questa classe .. – rayman

+0

E su quale risposta stai parlando? – rayman