`
vking_wang
  • 浏览: 10001 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

什么是JNLP

阅读更多

一、JNLP介绍:

  在java开发的早期,重点被放在了客户端开发。语言中对于applet和安全下载的支持对于万维网(WWW)的发布看上去是个不错的主意。但是现实是java最大的成功在于服务器端,java的强大功能和适应性赢得了服务器端开发者的心。同时,客户端的开发落后了。棘手的开发问题限制了applet的效用,开发者被迫转向基于浏览器的瘦客户端。

  JavaNetwork Launching Protocol (JNLP,java网络加载协议) 承诺改变这个现状。通过JCP(Java Community Process)的JSR-56的开发, JNLP解决了很多先前用java开发针对客户端的功能的问题。一个JNLP客户端是一个应用程序或者说服务,它可以从宿主于网络的资源中加载应用程序。如果你使用JNLP打包一个应用程序,那么一个JNLP客户端能够:

  •   为该应用探测,安装并且使用正确版本的JRE(java运行时环境)
  •   从浏览器或者桌面加载应用程序
  •   当新版本的应用出现时自动下载最新的版本。
  •   为了加速启动速度在本机缓存应用程序需要的类
  •   可以作为applet或者应用程序运行
  •   在必要的情况下下载原始的库
  •   以安全的方式使用诸如文件系统这样的本机资源
  •   自动定位和加载外部依赖资源


二、JNLP文件的具体说明  

 

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

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

 <information>

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

  <!--title:应用程序标题;vendor:供应商。title/vendor元素必须,会显示在用"javaws-viewer"命令打开的应用程序缓存查看器(JavaApplication Cache Viewer)中-->
  <title>HelloWorld</title>
  <vendor>LivelyCorporation</vendor>
  <description>HelloWorldTest 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版本-->
  <j2seversion="1.5+"/>

  <!-- 指定要下载到本地的jar文件(注意,所有的文件都需要打包才能够下载),可以包含一些资源文件,如icons/configurationfiles,可以使用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

  重新部署即可


实例:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="http://127.0.0.1:8080/" spec="1.0+"> 
  <information>
    <title>IMPAX Agility</title>  
    <vendor>AGFA Healthcare</vendor>
    <homepage href="http://www.agfa.com"/> 
    <description>IMPAX Agility</description>
	<icon href="css/AgfaLogo_daylight.png" kind="splash"/>
  </information>
 
  <security>
    <all-permissions/>
  </security>

  <update check="background"/>
   
  <application-desc main-class="com.agfa.agility.netboot.Main">
  <argument>configurator.desktop</argument>
  </application-desc>
 
  <resources>
    <jar href="plugins/com.agfa.agility.netboot.jar" version="1.0.0.v20121226_1004"/>
 
	<property name="cluster.id" value="SHGW2094"/>
 
	<property name="netboot.lenientHostnameVerification" value="true"/>
	<property name="http.server.url" value="http://10.235.59.215:80"/>
	<property name="netboot.application" value="configurator.desktop"/>
	<property name="java.naming.provider.url" value="10.235.59.215:1100"/>
	<property name="netboot.downloadCertificate" value="true"/>
	<property name="netboot.disableCE" value="false"/>
	<property name="https.server.url" value="https://10.235.59.215:443"/>
	<property name="server.url" value="https://10.235.59.215:443"/>
	<property name="netboot.customCache" value="cache.dev"/>
	<property name="netboot.sendErrorReport" value="true"/>

 </resources>

  <resources os="Mac">
    <j2se java-vm-args="-XstartOnFirstThread" version="1.6"/>
  </resources>
  <resources os="Windows">
    <j2se version="1.6+"/>
  </resources>
  <resources os="Linux">
    <j2se version="1.6"/>
  </resources>
</jnlp>





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics