Java WS应用程序偶尔忽略参数

时间:2010-10-29 07:50:52

标签: java arguments java-web-start

我最近整合了一个JWS应用程序,它从动态创建的JNLP文件中获取它的参数(详细信息可以找到here)。除了应用程序忽略我的系统(linux x86_64)上的参数(在没有加载指定数字的情况下启动)之外,这一切都很好。然而,似乎JWS应用程序完全按照我的同事的win_64机器上的预期。这很有趣,因为我无法在另一个类似的win_64上复制他的成功。

为了让事情更令人兴奋,当我下载JNLP文件并在终端上通过javaws运行时,同样的JWS应用程序工作正常(换句话说,不会忽略参数)。

我比较了java.policy和javaws.policy文件,没有区别。 JNLP文件清楚地给出了所有权限,并且jar文件被签名都很好(这不是问题的根源,否则应用程序无法启动,对吧?)。

问题1:那么这个问题可能取决于什么?

编辑:我刚刚设法从一台新的(在这个特殊意义上)win32机器得到了正确的响应,没有任何明显的java更新。 问题2: 是否有javaws的日志文件,我可以检查发生了什么,或者,我可以将启动详细信息发送到控制台,以便我可以创建我自己的自定义日志?

编辑2:顺便说一句,我忘了提到我也在Oracle forums发布了这个问题,我最初可能会提到这个问题,因为它被礼貌地指出了那里。无论如何,在线程上有关于JNLP文件的更多信息,以防它可能是相关的。

编辑3:我开始认为问题可能源自<jnlp>标记的属性,在生成JNLP文件时。最初jnlp标签看起来像这样:

<jnlp spec="1.0+" codebase="http://mydomain/myapp/" 
    href="my.jnlp">

问题在于代码库中声明的目录中没有my.jnlp,而是通过cgi-bin目录中的Perl脚本动态创建JNLP代码并作为输出返回流(我想)。所以我编辑了脚本以生成带有以下标记的JNLP:

<jnlp spec="1.0+" codebase="http://mydomain/myapp/" 
    href="http://mydomain/cgi-bin/my.jnlp">

这个实验的结果:这次甚至没有GUI启动...... 我在Oracle论坛上找到a relevant thread,建议以下列方式定义href属性:

href="script.jsp?<%=request.getQueryString()%>">

遗憾的是没有解决我的问题。

问题3: 此修改是否也适用于我的情况?在那种情况下怎么样?如果没有任何关于可能导致问题的原因的见解将会受到重视,因为我现在的工作确实陷入僵局

2 个答案:

答案 0 :(得分:1)

经过两周的JNLP文件语法和我的CGI脚本的摔跤,我想我终于找到了问题的症结所在。我在这里注意到这一点(冒着看起来自命不凡来回答我自己的问题的风险)以防其他人遇到同样的问题。

href标签的<jnlp>属性,在我的情况下显然是不必要的,当删除时,应用程序开始在linux和win系统上按预期工作。我不是100%确定这是否是确切的原因但我的理解是,由于jnlp语法是从脚本生成并直接返回给用户而不是文件系统中某处的jnlp文件,href属性是指向错误的地方,可能会导致某种冲突在不同的操作系统中以不同的方式处理。

答案 1 :(得分:0)

确保未缓存JNLP文件。即,每次尝试新的东西时,是否重命名/重新定位了JNLP文件?


关于您的更新,
我想到的唯一一点就是你需要确保你的脚本以正确的mime类型响应:application / x-java-jnlp-file

也就是说,从您的cgi脚本中,您必须提供HTTP标头字段

Content-Type: application/x-java-jnlp-file