Java 从服务器获取文件的动态JNLP

Java 从服务器获取文件的动态JNLP,java,java-web-start,jnlp,Java,Java Web Start,Jnlp,我想为用户提供一个带有定制启动标签的动态JNLP 经过许多麻烦之后,它几乎开始工作了 用户登录站点,下载为用户定制的JNLP。JavaWebStart使用下载的定制JNLP文件启动 但是,用户第一次启动应用程序时,Java Web Start就使用嵌入在.JNLP文件中的href属性从服务器获取主JNLP文件。这不包含用户的自定义标记,因此会出现问题 有没有办法告诉JNLP使用本地JNLP文件而不是从服务器获取它 这是我的应用程序_TEMPLATE.jnlp: 这个示例文件托管在我的Web服务器

我想为用户提供一个带有定制启动标签的动态JNLP

经过许多麻烦之后,它几乎开始工作了

用户登录站点,下载为用户定制的JNLP。JavaWebStart使用下载的定制JNLP文件启动

但是,用户第一次启动应用程序时,Java Web Start就使用嵌入在.JNLP文件中的href属性从服务器获取主JNLP文件。这不包含用户的自定义标记,因此会出现问题

有没有办法告诉JNLP使用本地JNLP文件而不是从服务器获取它

这是我的应用程序_TEMPLATE.jnlp:

这个示例文件托管在我的Web服务器上,在测试期间,它是localhost。用户下载一个定制的JNLP,并用foo替换*


我尝试从标记中完全删除href属性。这几乎成功了,但应用程序每次都会提示重新安装,我的桌面图标会被删除并重新添加。

您如何确定用户?您可能会发现这是一个会话问题或类似的问题,JNLP href指向的是一个未定论的.JNLP响应。
您可能希望更改确定谁在使用下载的方式,或者允许您的app.jnlp URL使用一个参数来确认当前用户是谁?

您必须更加具体。这到底是怎么回事?你为什么不使用PHP或其他什么的动态网页?@Robin,我需要向最终用户发送一个JNLP,它需要包含该用户的许可证密钥,这样他就不需要在JNLP启动的Java Swing应用程序中手动输入它。我理解,但我仍然不理解你在做什么,b为什么不使用一个简单的PHP或JSP,它永远不会向web浏览器显示主JNLP文件。您到底在做什么?经过身份验证的用户登录到网站,并希望运行Swing应用程序。单击站点上的按钮,该按钮将为已签名的应用程序下载动态JNLP。当用户希望在没有任何自定义参数的情况下启动应用程序时,可以使用主JNLP文件,因此它是可公开服务的。你是说我应该从标记中省略href属性吗?是的,缓存问题的一般解决方案是不允许通过使URL不同来缓存它。我编辑了这个问题,问题不是缓存,而是javaws急切地从服务器获取不同的JNLP,并使用它。感谢更新,我认为我的答案仍然有效——如果href指向该用户的JNLP的特定URL,那么这将不再是一个问题。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Discriptor 1.5//EN" "http://java.sun.com/dtd/JNLP-1.5.dtd">
<jnlp
        spec="6.0+"
        codebase="http://localhost/jnlp"
        version="1234"
        href="http://localhost/jnlp/app.jnlp">
    <information>
        <title>JNLPHelper</title>
        <vendor>Yoyodyne, Inc.</vendor>
        <offline-allowed/>
        <shortcut online="true" install="false">
            <desktop/>
            <menu submenu="Yoyodyne, Inc."/>
        </shortcut>
        <association extensions="jnlphelper" mime-type="application-x/jnlphelper"/>
    </information>
    <security>
        <all-permissions/>
    </security>
    <update check="timeout" policy="always"/>
    <resources>
        <java initial-heap-size="32M" max-heap-size="256M" version="1.6+"/>
        <!--<j2se version="1.6+" java-vm-args="-esa -Xnoclassgc"/>-->
        <jar href="JNLPHelper.jar"/>
    </resources>

    <application-desc main-class="com.prosc.msi.jnlp.JNLPHelper">
        <argument>*</argument>
    </application-desc>
</jnlp>