Java WebStart: <свойство ...> игнорируется при использовании <extension>? - PullRequest
2 голосов
/ 22 апреля 2009

У меня проблема с модернизацией приложения Java WebStart под Java 6 u 13 (самая последняя на данный момент)

Мы хотим использовать новый механизм, чтобы иметь несколько основных файлов конфигурации, каждый из которых имеет свою собственную конфигурацию, которая затем «включает» другой файл 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 в расширение .jnlp. Не помогло. JVM используется повторно и не перезапускается в соответствии с журналом в консоли подключаемых модулей Java.

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 14 сентября 2012

Я боролся с той же проблемой.
Когда я переместил элемент <property> в расширение jnlp, он стал доступен для приложения, используя System.getProperty().

Но это не решение для меня, так как я хотел иметь расширение jnlp со всеми банками и свойствами, определенными в мастете jnlp.

Похоже, что

Для ненадежных приложений системные свойства, заданные в файле JNLP, будут устанавливаться Java Web Start только в том случае, если они считаются безопасными.

Если кто-то хочет передать свои свойства виртуальной машине, их имена должны начинаться с 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
0 голосов
/ 02 июня 2010

Из экспериментов я обнаружил, что свойства, определенные в файлах расширений, подчиняются гораздо более строгим правилам, чем свойства в основном файле jnlp, а свойства, не соответствующие правилам, молча отбрасываются.

...