理解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>

浙公网安备 33010602011771号