代码之家  ›  专栏  ›  技术社区  ›  posdef

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

  •  1
  • posdef  · 技术社区  · 14 年前

    我最近组装了一个JWS应用程序,它从一个动态创建的JNLP文件中获取它的参数(可以找到详细信息 here ). 这一切都很好,只是应用程序忽略了我的系统(linux x86_64)上的参数(在不加载指定数字的情况下启动)。然而,JWS应用程序似乎与我的一位同事的win_64机器上的预期完全一致。这很有意思,因为我无法在另一场类似的胜利中复制他的成功。

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

    问题1: 那么,这个问题有什么依据呢?

    我只是设法从一个新的(在这个特别的意义上)win32机器获得正确的响应,没有任何明显的java更新。 问题2:

    编辑2: 顺便说一下,我忘了提到我也在 Oracle forums

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

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

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

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

    这个实验的结果是:这次连GUI都没有启动。。。 a relevant thread 在Oracle论坛上,建议定义 href

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

    不幸的是这并不能解决我的问题。

    问题3:

    2 回复  |  直到 14 年前
        1
  •  1
  •   posdef    14 年前

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

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

        2
  •  0
  •   aioobe    14 年前

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


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

    也就是说,在cgi脚本中,必须提供HTTP头字段

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