通过JNLP的Java Applet:System.Properties没有“设置”

时间:2011-05-04 17:22:46

标签: java applet jnlp next-generation-plugin

我在Java工作已有好几年了(这是我的借口)。

我正在尝试将Java Swing UI作为Applet启动(之前通过Web Start完成)。

我修改了jnlp文件以反映我知道applet所需的更改(例如使用applet-desc而不是application-desc)。

在jnlp文件的<resources>标记内,我们设置了如下系统属性:

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

在主类的init方法中,我们尝试读取其中一些系统属性,并始终将“null”作为值。

  1. 有没有人知道为什么系统属性没有“坚持”?

  2. 可能有相关的陌生感:我设置Java以便在运行时打开控制台。当我用这个小程序加载页面时,控制台窗口打开TWICE,两个窗口显示加载jnlp的详细信息,但只有一个窗口继续完整的应用程序加载。

  3. 更新:

    这是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 个答案:

答案 0 :(得分:4)

您需要对JNLP文件进行签名才能设置系统属性(具有特殊exemption的属性除外)。看看你想要设置的一些属性!

要签署JNLP文件,请在签署jar之前在JNLP-INF / APPLICATION.JNLP中放置一个逐字节的副本(最好坚持使用US-ASCII(!))。

答案 1 :(得分:2)

花了2天试图解决这个问题,尝试签署罐子和其他文件......然后我发现解决方案似乎非常简单并且工作正常:

I * 在我的JRE-home-director * y(jre7 / lib)中放入一个带有以下内容的jndi.properties文件:

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时,我遇到了这个问题...