9

最終的にクライアントを実行する JNLP を実行するために JavaScript を使用しています。

JavaScript の実行を介してパラメーターを JNLP に渡そうとしていますが、クライアント内で JNLP を介してそれらのパラメーターを取得しています。

JavaScript は、たとえば次の URL を実行しています。

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

これで、私の JNLP は次の<application-desc name tag方法でパラメーターを取得しようとします。

<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>

しかし、うまくいきませんでした。

この方法では、クライアント コードでこれらのパラメーターを取得できませんでした。

login=getParamsFromJnlp("login")
..

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

JNLP は APACHE2.2 内にあります

何が問題なのですか?

4

2 に答える 2

10

アプリケーションの引数に http パラメータを挿入できるようにするには、要求に応じて .jnlp ファイルを動的に「構築」する必要があります。

java-web-start が動作する方法は、.jnlp を数回ダウンロードすることですが、初回以外は、jnlp 要素の codebase および href 属性で指定された URL からファイルをダウンロードします。

したがって、引数要素を要素に動的に追加するだけでは十分ではなく、codebase/href 属性にも追加する必要があります。

<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>
于 2012-12-05T12:34:33.683 に答える
1

JSP の応答タイプが「application/x-java-jnlp-file」であるかどうかは確かですか?

そうでない場合は、JSP の先頭に記載して確認してください。

<% response.setContentType("application/x-java-jnlp-file"); %>
于 2012-12-05T11:07:01.600 に答える