[b]一.JNLP简介[/b]
JNLP是Java Network Launch Protocol的简写,是一种用来在网络中部署应用程序的一种协议;在客户端只需要安装java web start就可以使用服务器端的软件,它具有自动更新应用程序版本的功能;它是java提供的一种让你可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个 java应 用程序.好处就不用说了,如果你的java应用程序以jnlp 的方式发布,如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,这就相当于让java应用程序有了web应用的优了
Jnlp还是一种基于xml的启动java程序的技术。在100town.com您可以将生成的代码存成一个后缀为**.jnlp的文件,将这个文件发布在自己的网站上,当用户访问这个网站时,就可以启动java程序。
[b]二。jnlp文件的具体说明[/b]

<?xml version="1.0" encoding="UTF-8"?> 


<!--codebase 属性指出搜索应用程序资源的顶级URL,下面的icon/jar元素都是以这个URL为基本.--> 


<jnlp codebase="http://127.0.0.1:8081/webstart"> blog.bitsCN.com网管博客等你来搏 


 <information> 


 <!-- 在"开始"-"运行"菜单中输入"javaws"或"javaws -viewer"启动Web Start,会看到客户端已经安装的webstart应用程序--> 


 <!--title :应用程序标题 vendor:供应商 


 title/vendor 元素必须,会显示在用"javaws -viewer"命令



打开的应用程序缓存查看器(Java Application Cache Viewer)中--> <title>HelloWorld</title>

<vendor>Lively Corporation</vendor> 


 <description>HelloWorld Test Example for WebStart.</description> 


 <!--homepage :存放有关应用程序的相关文档的URL,如help文件等,仅仅是description作用--> 


 <homepage href="http://127.0.0.1:8081/webstart/index.html"/> 



 <!--icon 指定图标会显示在应用程序缓存查看器中,



在查看器中新建webstart快捷方式到桌面时也会显示为快捷方式图标,

只支持GIF/JPEG格式,其它格式无效-->

<icon href="./images/logo.jpg"/> 



 <!--splash 在sun的文档中提到会出现在webstart启动时的闪屏中,不过可能由于速度问题,我没有观察到--> 



 <icon kind="splash" href="./images/logo.jpg"/> 


 <!-- 允许离线启动,可以使用javaws -offline命令--> 


 <offline-allowed/> 


 </information> 


 <resources> 


 <!-- 指定客户端需要安装的j2se版本,下面指定为1.5+, 


 如果版本是1.4,在链接此jnlp文件时会提示更新j2se版本--> 


 <j2se version="1.5+"/> 


 <!-- 指定要下载到本地的jar文件(注意,所有的文件都需要打包才能够下载), 


 可以包含一些资源文件,如icons/configuration files,可以使用getResource方法取得--> 


 <jar href="./jar/jws/helloworld.jar"/> 


 </resources> 


 <!--application-desc 必须,指定webstart启动时执行jar文件中的哪个类--> 


 <application-desc main-class="jws.HelloWorld"/> 


</jnlp>


三。应用JNLP部署应用
(1)编写相关应用,打包成一系列jar;
(2)根据jnlp文件说明修改相应的jnlp内容,修改相应的url和jar;
(3)部署jnlp文件和jar到相应的web容器;
(4)编写访问网页,即可使用该应用〔亦可下载jnlp文件使用jws运行应用〕;
四。补充
如果jar需要访问本地文件资源,需要为你的jar文件签名
先在命令行用keytool产生一个keystore文件.
keytool -genkey -keystore you.keystore –alias youApp
命令行用jarsigner签名,当然这时候需要生成keystore时的密码
jarsigner -keystore you.keystore appTest.jar youApp

重新部署即可第二种部署方法和解释

[b]三. 部署实例[/b]

下面我们就来部署一个简单的程序;要在服务器部署应用程序,一个最主要的就是编写一个部署文件,它是一种xml格式的文件,以jnlp为后缀;而你的应用程序就必须打包成jar文件格式;假设你你现在有一个HelloJNLP.jar的文件,我们下面就来编写它的部署文件; 新建文件HelloJNLP.jnlp文件,然后使用你喜欢的文件编辑器打开该文件。
下面开始来编写该文件首先在文件中写如xml的版本和使用的编码,这行是可选的,不过在实际部署中最好还是写上这行; 如下:

<?xml version="1.0" encoding="UTF-8"?>


然后以<jnlp>标记开始,在这里你要把你应用程序的地址写好,这个地址可以以本地文件目录,也可以是一个网络url,如下:

<jnlp spec="1.0+" codebase="http://192.9.200.156:8080/jnlp" href="http://192.9.200.156:8080/jnlp/Hello.jnlp"><!-- codebase 也可以是file:///形式 -->


在<information>中你可以写入在应用程序下载是显示的一些资料,如标题,描述,图标,程序的存放目录等<information>

<title>Hello</title> 

 <vendor>HelloJNLP</vendor> 

 <homepage href=""/> 

 <icon href="HelloJNLP.jpg"/> 

 </information>还有一个可选的<offline-allowed/>标记,它允许application在断网的情况下也能运行;在<security>中你可以配置程序运行时的安全咨询,它可以是<j2ee-application-client-permissions/> 

<all-permissions/> 这个标记也可以不写;



然后在<resources>中你可以配置jre的版本,程序相对codebase的路径

<resources> 

 <j2se version="1.5+"/> 

 <jar href="HelloJNLP.jar"/> 

 </resources>


假如你在打包jar文件的时候没有指定主类,那么你必须使用以下方法指定一个主类

<application-desc main-class="HelloJNLP"/>



下面一个完整的jnlp文件是:

<?xml version="1.0" encoding="UTF-8"?> 

<!-- file Hello.jnlp --> 

<jnlp spec="1.0+" 

codebase="http://192.9.200.156:8080/jnlp" 

href="http://192.9.200.156:8080/jnlp/Hello.jnlp"> 

 <information> 

 <title>Hello</title> 

 <vendor>Tech Tips Sample</vendor> 

 <homepage href=""/> 

 <icon href="HelloJNLP.jpg"/> 

 </information> 

<!-- 

 <offline-allowed/> 

 <security> 

 <j2ee-application-client-permissions/> 

 </security> 

 --> 

 <resources> 

 <j2se version="1.5+"/> 

 <jar href="HelloJNLP.jar"/> 

 </resources> 

 <application-desc main-class="HelloJNLP"/> 

</jnlp>


[b]四. tomcat 部署[/b]
我们下面将它部署到tomcat下,首先你需要在%CATALINA_HOME%conf/web.xml中添加一个

mime-mapping:<mime-mapping> 

 <extension>jnlp</extension> 

 <mime-type>application/x-java-jnlp-file</mime-type> 

 </mime-mapping>



然后在%CATALINA_HOME%\webapps下建个jnlp的文件夹,把HelloJNLP.jnlp和HelloJNLP.jar文件copy过去,然后在里面建个WEB-INF目录;然后你就可以通过http://localhost:8080/jnlp/HelloJNLP.jnlp来运行程序了。
文件打包可以通过jdk中的jar,假如要将当前目录下所以文件打包到HelloJNLP.jar中,你可以在dos下输入:jar -cvf HelloJNLP.jar *.class 。 你还可以通过keytool、jarsigner来为你的jar文件签名创建签字

keytool -genkey -keystore myKeys -alias jdc为jar文件签字
jarsigner -keystore myKeys jarName.jar jdc