Java-апплет через JNLP: System.Properties не «установлены» - PullRequest
3 голосов
/ 04 мая 2011

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

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

Я изменил файл 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, но только одно окно продолжается с полной загрузкой приложения.

UPDATE:

Вот файл 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 ]

4 голосов
/ 04 мая 2011

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

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

2 голосов
/ 18 марта 2014

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

I * поместите 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 на Java1,7 ...

...