`
cjx186
  • 浏览: 271991 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JNLP and Java Web Start 签名文件

阅读更多

一、什么是 Java Web Start?
    Java Web Start(以下简称JWS)是一个软件技术,它的独特之处在于将您从关心客户机是如何启动的(从 Web 浏览器或是桌面)中解放出来。它包含了 applet 的可移植性、Servlet 和 JavaServer Pages (JSP)的可维护性以及象 XML 和 HTML 这样的标记语言的简易性。它是基于Java 的应用程序,允许从标准的 Web 服务器启动、部署和更新功能完全的 Java 2 客户机应用程序。在第一次启动 JWS 时,用户可以从 Web 下载新的客户机应用程序;之后这些应用程序可以通过 Web 页面的链接或(Windows 中的)桌面图标或“开始”菜单初始化。应用程序在 JWS 下快速初始化,被高速缓存在客户机,并且可以远程的离线启动。
二、用户观点的 JWS
    JWS 不仅允许开发者开发可从 Web 页面启动和执行的应用程序(不只是 applet),还强调了无需任何用户交互就可以为现存的客户机代码提供透明更新的部署方案。
三、部署应用程序
  第一步:开发你希望发布的应用程序
  第二步:把应用程序及所用到的所有资源打成一个或多个jar包
  第三步:如果你的应用程序不会用到任何运行这个应用程序的机器的本地资源,那么,你的应 用程序就可以部署了。
  第四步:如果你的应用程序用到了运行这个应用程序的机器的本地资源,那么,你的应用程序就必须先签名然后才可以发布。
  第五步:如何给应用程序签名:
1:首先确保你已经完全安装了Java2的环境,有keytool工具,它位于J2SE SDk的bin目录下。这一般不会有问题。
2:到Dos状态下,进入你需发布应用程序的jar包所在的目录,运行下面这句话
keytool -genkey -keystore myKeystore -alias jwstest
它将会提示你输入用户名、密码等,不用理它,按照提示随便输入即可,但一定要记住密码。运行结束它将会在当前路径下创建名为myKeystore的文件。
3:如果你想察看一下刚才生成的myKeystore文件的内容,可以使用下面这句话:
keytool -list -keystore myKeystore
显示出来应该类似如下:
Keystore type: jks
Keystore provider: SUN

Your keystore contains 1 entry:

jwstest, Tue Nov 23 19:29:32 PST 2001, keyEntry,
Certificate fingerprint (Test):
C3:A9:CD:F3:D3:AC:4D:3F:3C:5B:AF:9E:CF:0D:46:5C
4:对你需发布应用程序的jar包进行签名,运行下面这句话:
jarsigner -keystore myKeystore yourtest.jar jwstest
其中yourtest.jar是你的jar包名,你需要修改它,别的就不必修改了。运行时会提示你输入密码,就是你刚才在生成myKeystore文件时设定的密码。
  第六步:部署应用程序的jar包:
1:在Tomcat的webapps中新建目录JWSTest
2:在JWSTest下新建目录apps,META-INF,WEB-INF
3:在apps下新建目录images和lib
4:在META-INF中拷入MANIFEST.MF
5:在WEB-INF中拷入web.xml
6:把已经准备好的jar包拷入lib目录下
四.Jsp页面

用于Web访问的页面index.jsp如下:

<%@page contentType="text/html;charset=gb2312"%>
<html>
<title>JWS Test</title>
<head>
<SCRIPT LANGUAGE="Javascript">
    function insertLink(url, name) {
        document.write("<a href=" + url + ">"  + name + "</a><br><br>");
    }
 

    insertLink("http://你的IP:8080/ JWSTest /apps/JWSTest.jnlp"," JWSTest ");
</SCRIPT>
</head>
<body>
</body>
</html>


在jsp中添加检测访问的客户端是否已经安装了JWS的客户端的代码,示例如下:

<%@page contentType="text/html;charset=gb2312"%>
<html>
<title> JWS Test </title>
<head>
<SCRIPT LANGUAGE="Javascript">
      var javawsInstalled = 0;
      isIE = "false";
 

      if (navigator.mimeTypes && navigator.mimeTypes.length) {
         x = navigator.mimeTypes['application/x-java-jnlp-file'];
         if (x) javawsInstalled = 1;
      } else {
         isIE = "true";
      }
 

      function insertLink(url, name) {
       if (javawsInstalled) {
            document.write("<a href=" + url + ">"  + name + "</a><br><br>");
         } else {
            document.write("<a href=" + url + ">"+ name +"</a><br><br>");
         }
      }
 

</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
    on error resume next
    If isIE = "true" Then
      If Not(IsObject(CreateObject("JavaWebStart.IsInstalled"))) Then
         javawsInstalled = 0
      Else
        javawsInstalled = 1
      End If
    End If
</SCRIPT>
<SCRIPT LANGUAGE="Javascript">
    if(javawsInstalled){
     insertLink("http://你的IP:8080/ JWSTest /apps/JWSTest.jnlp"," JWSTest ");
    }else{
//通知用户要先安装JWS的客户端,你可以自己提供下载或是直接链接到Sun的JWS下载。
//分为两种,如果客户端已经安装了Java运行环境,则只要下载javaws-1_0_1_01-win-int.exe即可。
//如果客户端没有安装Java运行环境,则要下载完整的javaws-1_0_1_01-win-int-rt.exe。
    }
</SCRIPT>
</head>
<body>
</body>
</html>


五.JNLP文件
Java Network Launching Protocol (JNLP,java网络加载协议)
JNLP是JWS的核心配置文件,有了它,才能将以上各部分联系起来,真正让JWS运转起来。JNLP文件符合标准的XML语法,实质就是一个XML文件。当然,编写它的最好方式是对已写好的JNLP进行改写。JWSTest.jnlp示例如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for SwingSet2 Demo Application -->
<jnlp
  spec="1.0+"
  codebase="http://你的IP:8080/JWSTest/apps"
  href=" JWSTest.jnlp">
  <information>
    <title> JWS Test </title>
    <vendor>YOUR Name</vendor>
    <homepage href=" JWSTest.html"/>
    <description> JWS Test </description>
    <icon href="images/ JWSTest.jpg"/>
    <offline-allowed/>
  </information>
  <security>
   <all-permissions/>
  </security>
  <resources>
    <j2se version="1.3"/>
    <jar href="lib/ JWSTest.jar"/>
  </resources>
  <application-desc main-class="运行启动的主类"/>
</jnlp>


部分JNLP的关键语法
<jnlp>元素
spec:必须是1.0及以上版本,这里用1.0+,不需修改。
codebase:资源的URL,是JNLP指向各连接的起始处,需自行修改。
Href:JNLP文件相对codebase的存放位置,和JNLP文件的全名,需自行修改。
<infomation>元素
Title:发布的应用程序简单标题,需自行修改。
Vendor:发行商信息,可以写上你的大名,需自行修改。
Homepage:存放有关应用程序的相关文档的URL,如help文件等,可有可无。
Description:对应用程序的描述,可以有多对<description></description>,可有可无。
Icon:用户下载你的应用程序后,在JWS里显示的图标的URL,应是gif或jpeg格式。需自行修改。
Offline-allowed:选择项,允许用户离线运行应用程序,一般都会有,不用修改。
<security>元素
选择项,如果没有指明<security>,默认是不允许应用程序访问用户的本地资源,即应用程序是沙箱运行。
如果设定为<all-permissions/>,则表示允许应用程序访问用户的本地资源。一般都会设定此值。
<resource>元素
<j2se version = 指定jdk版本>
<jar href = 指定需发布的应用程序的jar包存放的位置>
<application-desc>元素
main-class:应用程序运行启动的主类
<argument>:应用程序运行时的参数,可以有多个,每一个参数用一对<argument>参数</argument>。
至此,你已经完全构建了运转JWS的各部件。
六.完整发布和测试

前面已经准备好了需发布的应用程序的jar包,也写好了用来访问的jsp文件和服务器端的核心jnlp文件。

第一步:在JWSTest下新建目录jsp。把index.jsp拷入jsp目录。
第二步:把jnlp文件直接拷入apps目录下。
第三步:在浏览器里输入:http://localhost:8080/JWSTest/jsp/index.jsp 即可访问到jsp页面。页面应出现JWSTest字样。
第四步:点击JWSTest,连接到apps下的JWSTest.jnlp文件,JWS启动,开始下载你发布的应用程序。
第五步:下载完毕,直接运行即可。以后,你也可以直接运行JWS客户端里已下载的应用程序。
七.          常见问题

长期使用JWS还可能遇到一些问题,在这里列出几个经常出现的问题,并给出相应解决方法:

问题一:JWS不能运行,JNLP文件像普通XML文件一样显示在Browser里
解决办法:请修改tomcat里,发布程序的路径中的web.xml。
在其中添加<mime-type>
application/x-java-jnlp-file
</mime-type>
以支持JNLP文件。

问题二:不能下载资源或下载资源失败
解决办法:请卸载JWS的客户端,并将注册表里有关JWS的项目都删除,并确保program Files下的JWS目录已被删除,然后,重装JWS。

问题三:下载资源中有未签名文件
解决办法:
1:确保所有的jar包及其他资源都进行过签名。
2:确保整个资源中,没有中文的命名。好像签名工具不支持中文命名的文件名,所以未签到名。
3:察看已经签名的jar包中,meta-inf路径下的jwstest.sf(jwstest是你在进行签名时-alias后的命名)文件,他详细的列出了所有已签名的文件,以分析签名失败的原因。

 

 

DOS例子 写道
C:\a>keytool -genkey -keystore mykey -alias jwsmytest
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]: Chen
您的组织单位名称是什么?
[Unknown]: RongWare
您的组织名称是什么?
[Unknown]: RW
您所在的城市或区域名称是什么?
[Unknown]: HangZhou
您所在的州或省份名称是什么?
[Unknown]: ZheJian
该单位的两字母国家代码是什么
[Unknown]: CN
CN=Chen, OU=RongWare, O=RW, L=HangZhou, ST=ZheJian, C=CN 正确吗?
[否]: Y

输入<jwsmytest>的主密码
(如果和 keystore 密码相同,按回车):
再次输入新密码:

C:\a>keytool -list -keystore mykey
输入keystore密码:

Keystore 类型: JKS
Keystore 提供者: SUN

您的 keystore 包含 1 输入

jwsmytest, 2009-11-27, PrivateKeyEnt
认证指纹 (MD5): A8:58:00:19:A8:D6:D7:93:1B:8A:CA:32:C4:F4:18:76

C:\a>jarsigner -keystore mykey s.jar jwsmytest
输入密钥库的口令短语:
输入 jwsmytest 的密钥口令:

警告:
签名者证书将在六个月内过期。

C:\a>
分享到:
评论

相关推荐

    JNLP ant webstart sign genkey sample

    标题“JNLP ant webstart sign genkey sample”涉及到的是Java网络启动(Java Web Start,JWS)技术,以及如何使用Ant构建工具来签名JNLP应用。在Java Web Start中,JNLP(Java Network Launch Protocol)是用于启动...

    利用 Java Web Start发布你用java程序

    ### 利用 Java Web Start 发布 Java 程序 #### JWS——Java Web Start 的功能与优势 Java Web Start(简称 JWS)是 Sun Microsystems(现 Oracle)为解决 Java 应用程序部署和更新问题而开发的一项技术。它是 JSR-...

    用java web start来发布jbpm(三)

    3. **打包JNLP文件**:JNLP(Java Network Launch Protocol)文件是Java Web Start应用的核心,它描述了应用程序的元数据,如主类、资源、权限等。博主会指导如何创建并配置JNLP文件,以便Java Web Start能够正确地...

    JNLP

    JNLP是Java Web Start的一部分,允许用户在浏览器或者独立的桌面环境中无缝地下载、安装和运行Java应用程序,而无需进行复杂的安装过程。 **Java Network Launch Protocol (JNLP) 知识点详解:** 1. **JNLP 文件...

    webstart

    WebStart是Oracle公司(原Sun Microsystems)推出的一种基于Java的网络启动技术,它利用Java Network Launch Protocol (JNLP) 文件来启动和管理应用程序。WebStart的主要优点在于提供了一种便捷的方式,让用户通过...

    jnlp详细文档

    JNLP(Java Network Launch Protocol)是Java Web Start的核心组件,是一个XML格式的文件,用于描述应用的元数据、依赖库、主类以及运行时的配置信息。这个"jnlp详细文档"可能是关于如何使用JNLP文件进行Java Web ...

    WebStart解决方案

    【标题】:“WebStart解决方案”是一种技术,它允许用户通过Java Web Start技术从Web浏览器启动并运行基于Java的应用程序,无需进行复杂的安装过程。这项技术是Oracle在Java平台早期引入的,旨在提供一种便捷的方式...

    ( javawebstart部署swing和rcp相关资料.txt )

    为了使Java Web Start能够识别和加载已签名的应用程序,你需要修改JNLP文件,这是描述应用程序元数据的XML文件。主要修改包括: 1. **指定主类**:在`&lt;application-desc&gt;`元素中指定应用的主类。 2. **列出资源**:...

    jws 部署java c/s应用

    &lt;jnlp codebase="http://127.0.0.1:8081/webstart"&gt; 应用程序标题 供应商名称 &lt;!-- 其他元素,如resources、application或applet等 --&gt; &lt;/jnlp&gt; ``` `codebase`属性定义了查找应用程序资源的基础URL,而`...

    Java Web Start Plugin for Eclipse-开源

    2. 在Eclipse内直接配置应用程序的JNLP(Java Network Launch Protocol)文件,这是Java Web Start应用的启动配置文件。 3. 便捷地调试和运行Java Web Start应用程序,检查运行时的错误和异常。 4. 自动化应用程序的...

    jws-1.6.1环境安装包

    这个"jws-1.6.1环境安装包"显然是一个包含JWS 1.6.1版本所需组件的压缩文件,便于用户在本地计算机上快速建立运行Java Web Start应用的环境。 JWS的核心功能在于它允许用户通过浏览器启动和运行Java应用程序,而...

    java程序发布资料收集

    开发者需要配置JNLP(Java Network Launch Protocol)文件,指定应用的JAR、依赖和启动参数。 2. **可执行JAR**:通过工具如Launch4j,可以将JAR封装成可执行的Windows EXE文件,方便用户直接点击运行。 3. **...

    JWS_White_Paper

    - **设计与打包**:开发者可以将Java Web Start应用设计成与普通Java应用相似的结构,通常将其打包为JAR文件,便于网络传输和管理。 - **资源访问**:JWS应用中的资源文件存储在JAR文件内,开发者可通过标准Java API...

    javaFX之HelloWorld部署之为jar签名事宜

    `tt.jar`和`tt.jnlp`可能是特定项目的库或JNLP(Java Web Start)文件,用于通过网络启动JavaFX应用。 总的来说,这个主题涵盖了JavaFX的基本使用、JAR文件的打包以及签名的过程,这些都是开发和部署JavaFX应用的...

Global site tag (gtag.js) - Google Analytics