我想为用户提供带有自定义启动<argument>
标记的动态JNLP。
用户登录站点,下载为用户定制的JNLP。 Java Web Start使用下载的自定义JNLP文件启动。
但是,第一个用户启动应用程序时,Java Web Start通过使用.jnlp文件中嵌入的href
属性从服务器获取“主”JNLP文件。这不包含用户的自定义<argument>
标记,并且事情会中断。
有没有办法告诉JNLP使用本地JNLP文件而不是从服务器获取它?
这是我的APPLICATION_TEMPLATE.jnlp
:
<?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>
此示例文件托管在我的网络服务器上,在测试期间localhost
。用户下载<argument>foo</argument>
替换<argument>*</argument>
的自定义JNLP。
我尝试完全从href
标记中删除<jnlp>
属性。这几乎可以工作,但应用程序每次都会提示重新安装,我的桌面图标将被删除并重新添加。
答案 0 :(得分:0)
您是如何确定用户的?您可能会发现它是一个会话问题或类似的问题,其中JNLP href指向的是未经证实的.jnlp响应。 您可能想要更改您使用下载的方式或允许您的app.jnlp URL采用确认当前用户是谁的参数?