Java-апплет через JNLP: System.Properties не "установлены"

Прошло много лет с тех пор, как я работал на Java (это мое оправдание).

Я пытаюсь запустить Java Swing UI как апплет (ранее это делалось через Web Start).

Я изменил файл jnlp, чтобы отразить изменения, которые, как я знаю, необходимы для апплета (например, использование applet-desc вместо application-desc).

Внутри <resources> В теге jnlp-файла мы устанавливаем системные свойства следующим образом:

<property name="java.security.auth.login.config" value="$$context/app/auth.conf"/>

В методе init основного класса мы пытаемся прочитать некоторые из этих системных свойств и всегда получаем "null" в качестве значения.

  1. У кого-нибудь есть идеи, почему системные свойства не "залипают"?

  2. Возможно связанная странность: у меня есть Java, установленная, чтобы открыть консоль, когда что-то работает. Когда я загружаю страницу этим апплетом, окна консоли открываются ДВАЖДЫ, оба окна показывают детали загрузки jnlp, но только одно окно продолжается с полной загрузкой приложения.

ОБНОВИТЬ:

Вот файл jnlp:

 <?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" >
  <information>
    <title>app</title>
    <offline-allowed/>
  </information>
  <security>
    <all-permissions/>
  </security>
  <resources>
      <j2se version="1.6+" java-vm-args="-Xms128m -Xmx1024m -Xss1m"/>
      <property name="java.naming.factory.initial" value="org.jboss.naming.HttpNamingContextFactory"/>
      <property name="java.naming.factory.url.pkgs" value="org.jboss.naming:org.jnp.interfaces"/>
      <property name="java.naming.provider.url" value="$$context/invoker/JNDIFactory"/>
      <property name="java.security.policy" value="$$context/app/server.policy"/>
      <property name="java.security.auth.login.config" value="$$context/app/auth.conf"/>
      <property name="login.context" value="client-login"/>
      <property name="jndi.port" value="1099"/>
      <property name="service.impl" value="Remote"/>
      <property name="polling" value="true"/>
      <jar href="cglib-2.1.3.jar"/>
      <jar href="com.jdas.apps.binmgmt.gui.jar" main="true"/>
      <jar href="commons-beanutils.jar"/>
      <jar href="commons-collections-2.1.1.jar"/>
      <jar href="commons-javaflow.jar"/>
      <jar href="commons-lang.jar"/>
      <jar href="commons-logging.jar"/>
      <jar href="ecs-1.4.1.jar"/>
      <jar href="hibernate3.jar"/>
      <jar href="itext-1.01.jar"/>
      <jar href="jade-5.2.3_AGRIS_PATCH.jar"/>
      <jar href="jbossall-client.jar"/>
      <jar href="jboss-j2ee.jar"/>
      <jar href="jcalendar-1.1.4-agris.jar"/>
      <jar href="jhall-3.1.3.jar"/>
      <jar href="looks-all-1.1.jar"/>
      <jar href="odmg-3.0.jar"/>
      <jar href="pvjdbc2.jar"/>
      <jar href="swing-layout-1.0.jar"/>
      <extension name="additional" href="unsigned.jnlp"/>
  </resources>
  <applet-desc main-class="com.jdas.apps.binmgmt.gui.main.BinManagementApp" name="binMgmt" width="1024" height="768" >

  </applet-desc>
</jnlp>

2 ответа

Решение

Вам нужно будет подписать файл JNLP, чтобы установить системные свойства (кроме тех свойств, которые имеют особое исключение). Посмотрите на некоторые из этих свойств, которые вы пытаетесь установить!

Чтобы подписать файл JNLP, поместите побайтную копию (лучше всего придерживаться US-ASCII(!)) В JNLP-INF/APPLICATION.JNLP, прежде чем подписывать jar.

Просто потратил 2 дня, пытаясь решить эту проблему, пытаясь подписать банки и другие файлы... и затем я нашел решение, которое кажется очень простым и работает нормально:

Я *поместил jndi.properties-файл со следующим содержимым в мой JRE-home-Director* y (jre7 / lib):

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=jnp://localhost:1099

У меня была эта проблема при обновлении с Java 1.6 до Java 1.7...

Другие вопросы по тегам