从JSP传递参数到JNLP

时间:2016-06-09 19:25:42

标签: java arguments parameter-passing java-web-start jnlp

我正在使用Java Web Start启动的应用程序替换applet。到目前为止,在我在Netbeans中开发的演示版本中,我能够生成launch.jnlp并将参数设置为所需的值:

<application-desc main-class="myPkg.MyClass">
    <argument>action=someAction</argument>
    <argument>objId=1234abc</argument>
    <argument>userName=user1</argument>       
</application-desc>

但是这个JWS启动的应用程序在现实生活中必须做的是根据由启动它的Web应用程序的用户选择和相关的值来设置JNLP中的参数。

我之前已经意识到这个问题,但在大多数情况下已经过了几年,因为这些问题得到了回答,我不确定答案是否仍然适用,因为浏览器供应商已经通过Java安全锁定。这些天是通过HTTP请求参数发送参数值的方法,即

[codebase]/launch.jnlp?action=someAction&objId=1234abc&userName=user1

2 个答案:

答案 0 :(得分:0)

您可以将参数传递给通过JWS启动的applet,就像在浏览器中启动applet一样,例如在JNLP。但是,您必须构建包含这些服务器端AFAIK的JNLP;将URL-Args直接传递给javaws是不可能的(URL只会让浏览器下载jnlp并将其扔到javaws的脚下,然后再次从服务器获取它可能再次,所以一定要建立

<jnlp codebase="http://@JAVA_WEB_START_IP@" href =&#34; /launch.jnlp?action=someAction&objId=1234abc&userName=user1 &#34;

以便它与您调用jnlp&#34; cgi&#34;

的参数相匹配

所以你需要一个名为launch.jnlp的cgi,将参数放入jnlp模板

1)在href为url参数

2)在applet-desc

 <applet-desc main-class="com.xyz.class" 
  width="850" height="650" name="Applet Name">
   <param name="action" value="someAction"/>
   <param name="objId" value="1234abc"/>
   <param name="userName" value="user1"/>
 </applet-desc>

至少这是我意识到的可能性,对我有用。

修改

如果你使用的是application-desc,那么同样适用,而不是<param你必须相应地填充<argument s,除了href ......

答案 1 :(得分:0)

虽然我的实现仍在进行中,但我确实想说到目前为止为我工作的是在servlet中动态创建JNLP,将其写入与HTTPResponse对象关联的流中...