jnlp例子

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

<?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

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

三. 部署实例

    下面我们就来部署一个简单的程序;要在服务器部署应用程序,一个最主要的就是编写一个部署文件,它是一种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>

四. tomcat 部署
    我们下面将它部署到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

http://bljstone.iteye.com/blog/1326230


猜你喜欢

转载自blog.csdn.net/shen020453/article/details/79198181
今日推荐