使用<extension>?</extension> </property>时,Java WebStart:<property ... =“”>被忽略

时间:2009-04-22 11:06:40

标签: java java-web-start jnlp

我在使用Java 6 u 13(此时的最新版本)现代化Java WebStart应用程序时遇到了问题

我们希望使用新机制来拥有多个主配置文件,每个配置文件都有自己的配置,然后“包含”另一个自动生成的jnlp文件,以确保jar列表准确无误。经过相当多的讨论之后,我已经完成了它的工作,除了在调用Main时程序无法使用主文件中定义的属性。

主JNLP看起来像(匿名):

<jnlp>
  <information>
    <title>...</title>
    <vendor>...</vendor>
    <description>...</description>
    <description kind="short">...</description>
    <homepage href="http://....jnlp"/>
    <icon href="http://....gif"/>
    <!--          <offline-allowed/> -->
  </information>
  <security>
    <all-permissions/>
  </security>
  <resources>
    <j2se version="1.6+"/>
    <extension href="http://...extension.jnlp" />

    <property name="server.name" value="SERVER"/>
  </resources>
  <application-desc main-class="Main"/>
</jnlp>

和extension.jnlp看起来像:

<!-- Generated automatically.  Do not edit! -->
<jnlp>
  <information>
    <title>extension built 2009-04-22 12:39:58 CEST</title>
    <vendor>...</vendor>
  </information>
  <security><all-permissions/></security>
  <resources>
    <jar href="A.jar" />
    <jar href="B.jar" />
    <jar href="logback-classic-0.9.14.jar" />
    <jar href="logback-core-0.9.14.jar" />
    <jar href="slf4j-api-1.5.6.jar" />
  </resources>
  <component-desc />
</jnlp>

我也试过把proprty放在extension.jnlp中。没有帮助。根据Java插件控制台中的日志重用JVM而不重新启动JVM。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

我正在努力解决同样的问题 当我将<property>元素移动到扩展名jnlp时,可以使用System.getProperty()将其用于应用程序。

但它对我来说不是一个解决方案,因为我希望扩展jnlp包含在mastet jnlp中定义的所有jar和属性。

看来,

  

对于不受信任的应用程序,JNLP文件中设置的系统属性只有在被认为是安全的时才由Java Web Start设置。

如果想要将自己的属性传递给VM,则其名称必须以javaws.jnlp.开头。这些属性被认为是安全的。 <property>元素必须包含value属性,例如

<property name="jnlp.my.property" value="a value" />

链接:

  1. http://docs.oracle.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html#resources
  2. http://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/settingArgsProperties.html

答案 1 :(得分:0)

从实验中我发现扩展文件中定义的属性比主jnlp文件中的属性要严格得多,那些不符合规则的属性会被静默丢弃。