理解JNLP

1.jnlp简介:Java Network Launch Protocol, defined with an XML schema, specifies how to launch Java Web Start applications.

是java提供的一种让你可以通过浏览器直接执行java的web应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个 java应 用程序.好处就不用说了,如果你的java应用程序以jnlp 的方式发布,如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,这就相当于让java应用程序有了web应用的优点了.

2.应用JNLP部署应用 ,详细内容请参见:http://xml.iteye.com/blog/528178
(1)编写相关应用,打包成一系列jar; 
(2)根据jnlp文件说明修改相应的jnlp内容,修改相应的url和jar,以及对jar文件进行签名; 
(3)部署jnlp文件和jar到相应的web容器; 
(4)编写访问网页,即可使用该应用〔亦可下载jnlp文件使用jws运行应用〕;

3.对jar进行签名

  为什么JAR要被签名?当用户启动一个JNLP文件或使用一个applet时,这个JNLP或applet请求系统提供超过一般的访问。例如,它可能有一个“文件打开”菜单项用来装载一个.csv文件。进行这样的请求,就需要签名的JAR。假如它是匿名的,系统会询问用户是否打算信任JAR的签署者。

  为JAR签名需要两个工具:你要用keytool来创建一个密匙,然后用JARSigner来用此密匙为JAR签名。可以用同一个密匙来为一个公司或一个开发者的所有JAR签名.  

  先判断是否已经签名,例如判断worldwind.jar是否被签名 :jarsigner -verify worldwind.jar

  如果没有签名那就开始签名:

  1、keytool -genkey -keyalg rsa -alias yourname

  2、keytool -export -alias yourname -file yourname.crt

  3、jarsigner worldwind.jar yourname

 

3.jnlp应用管理

运行jnlp文件命令:javaws test.jnlp 

图形化管理界面,输入命令:javaws -viewer,会打开一个图形界面,可以运行或卸载应用。如下图所示。

 

4.剖析一个JNLP文件 ,详细内容请参考:http://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/jnlpFileSyntax.html#jnlp

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
    <information>
        <title>Dynamic Tree Demo</title>
        <vendor>Dynamic Team</vendor>
        <icon href="sometree-icon.jpg"/>
        <offline-allowed/>
    </information>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.6+" href=
           "http://java.sun.com/products/autodl/j2se"/>
        <jar href="DynamicTreeDemo.jar"
            main="true" />

    </resources>
    <application-desc
         name="Dynamic Tree Demo Application"
         main-class="webstartComponentArch.DynamicTreeApplication"
         width="300"
         height="300">
     </application-desc>
     <update check="background"/>
</jnlp>

  

JNLP是一个XML文档,有一个根元素(jnlp)和四个子元素(information,security,resources,application-desc)组成。

(1)jnlp 根元素,它包含: 

一个 spec 属性 ,用于说明规范的版本,可以省略;

一个 href 属性 ,指向 JNLP 文件本身位置的 URL;

一个 codebase 属性, 在 href 中指定的所有相对 URL 都以这个 URL 为基准;

(2)information 子元素,它包含: 

  应用程序和厂商的名字 

  应用程序主页的 URL 

  一个可选的、纯文本的应用程序描述 

  表示该应用程序的图形文件图标的 URL 

(3)security 子元素,可以用于请求不受限制的访问。

(4)resources 子元素,用于指定所有资源,如作为应用程序一部分的 Java 类文件、本机库和系统属性。使用 os、 arch 和 locale 属性,资源

定义可以限定到特定操作系统、体系结构或者位置。它包含六个可能的子元素: 

  jar (指定一个 JAR 文件,该文件是应用程序的类路径的一部分) 

  nativelib (指定包含本机库的 JAR 文件) 

  j2se (指定支持应用程序的 J2SE JRE 版本,以及 JVM 的标准参数) 

  property (定义通过 System.getProperty 和 System.getProperties 方法可使用的系统属性) 

  package (指定使用的包) 

  extension (指定使用的扩展) 

(4)application-desc 子元素表明 JNLP 文件启动的是一个应用程序而不是 applet。 

        如果把该元素替换为:applet-desc,则表时这是一个applet而不是应用程序。如下所示,详细内容请参见:http://en.wikipedia.org/wiki/Java_Web_Start#Java_Network_Launching_Protocol_.28JNLP.29

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://ultrastudio.org/upload" href="">
    <information>
        <title>Launch applet with Web Start</title>
        <vendor>Foo Bar Inc.</vendor>
        <offline-allowed/>
    </information>
    <resources>
        <j2se version="1.5+" href="http://java.sun.com/products/autodl/j2se"/>
        <jar href="Ray-2.3-4ca60e46-0956-3f22-983c-e3ed986dfd03.jar" main="true" />
    </resources>
    <applet-desc
         name="Ray diagram applet" main-class="raydiagramsapplet.Main"
         width="300" height="200">
    </applet-desc>
  <update check="background"/>
</jnlp>

 

 

posted @ 2012-08-28 11:04  阿洒  阅读(1010)  评论(0)    收藏  举报