JNLP(Java Network Launching Protocol )是java提供的一种可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个java应用程序。
Java桌面应用程序以JNLP 的方式发布,如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,这就相当于让java应用程序有了web应用的优点。

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"命令
打开的应用程序缓存查看器(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
重新部署即可。

http://baike.baidu.com/link?url=wt-uXbvZdkzVSZRDXEBEAo5ZcFuOmleD2DnNrZ2aIcC08_3RS3YCAuzR6AwDuLu6wlVYa9pBixDSysT0RIw5hq

1.Java Web Start简介 
Java Web Start是帮助客户机端应用程序开发的一个新技术,该技术的独特之处在于将你关心客户机是如何启动(从Web浏览器或是桌面)中解放出来。并且,该技术提供了一个使Web服务器能独立发布和更新客户机代码的集合部署方案。 
Java Web Start是一个软件技术,它包含了applet的可移植性、Servlet和Java Server Pages(JSP)的可维护性以及象XML和HTML这样的标记语言的简易性。它是基于Java的应用程序,允许从标准的Web服务器启动、部署和更新功能完成的Java 2客户机应用程序。 
Java Web Start自身是一个Java应用程序,所以该软件是平台独立的,并且支持Java2平台的任何客户机系统都支持该软件。当客户机应用程序启动时,Java Web Start自动执行更新,在从原来的高速缓存装入应用程序的同时,从Web下载罪行的版本。Java Web Start还提供了一个Java应用程序管理器(Java Application Manager)实用程序,即提供了多种选项,如清除下载的应用程序的高速缓存、指定多种JRE的使用,设置HTTP代理、还允许最终用户组织他们的Java应用程序。 
Java Web Start站点: 
http://java.sun.com/javase/technologies/desktop/javawebstart/index.jsp 
JNPL规范:http://jcp.org/en/jsr/detail?id=056

2.JNLP简介 
JNLP(全称Java Network Launch Protocol)意为Java网络装载协议。JNLP是一为Java Web Start应用程序提供基本的元素和描述的XML文件。JNLP是Java Web Start的核心。 
JNLP应用程序能使应用程序像标准的JAVA Applet一样通过WEB浏览器访问,并且在客户机主机上JNLP可以限制为一个安全的“沙箱(sandbox)”.不像Applets,JNLP应用程序不运行的客户的浏览器内部;相反,WEB浏览器只作为应用程序的一个起点或安装工具。 
JAVA桌面应用程序以JNLP 的方式发布,如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,这就相当于让java应用程序有了web应用的优点。

3.实例应用 
1.搭建Web服务器 
a)Tomcat正常运行。 
b)找到TomcatHOME/conf下的web.xml文件,在其中添加application/x-java-jnlp-file以便支持JNLP文件;如下图所示:

2.部署应用程序 
a)开发应用程序。 
b)将应用程序以及资源文件打成一个或多个Jar包。 
c)如果应用程序用到了运行这个应用程序的本地资源,那么你的应用程序就必须先签名然后才可以发布;如果不需要用到本地资源,到这一步就可以发布应用程序。 
d)怎样给应用程序签名: 
i.首先确保你已经安全安装了J2se的环境,还有keytool工具,它位于J2SE SDK的bin目录下;如下图所示:

ii.到DOS状态下,进入你需要发布应用程的jar包所在的目录,运行下面这句话keytool –genkey –keystore myKeystore –alias jwstest 它将会提示你输入用户名、密码等,不用理睬它,按照提示随便输入即可,但一定要记住密码。运行结束它将会在当前路径下创建名为myKeystore的文件。如下图所示:

iii.如果你想察看一下刚才生成的myKeystore文件的内容,可以输入这局话keytool –list -keystore myKeystore,再输入密码: 
显示结果如下图所示:

iv.对你需要发布应用程序的jar包进行签名,运行这句话:Jarsigner –keystore myKeystore yourtest.jar jwstest,其中yourtest.jar是你的jar包名,你需要修改它,别的就不必修改了。运行时会提示你输入密码,就是你刚才生成myKeystore文件时设定的密码。如下图所示:

e)部署应用程序,将已经经过签名的jar包拷入web工程的目录下(注意:不能拷贝到WEB-INF目录下)。

3.JNLP文件介绍 
a)编写Java Web Start的核心配置文件JNLP。JNLP文件符合标准的XML语法,也就是说JNLP就是一个XML文件。编写的最好方式还是修改已有的JNLP文件。

 
<?xml version="1.0" encoding="UTF-8"?>
<!-- jnlp spec必须是1.0以上版本,次数用的是1.0+;
codebase 属性指出搜索应用程序资源的顶级URL。
href 属性设置是为了让应用程序并入 Java Web Start 应用程序管理器-->
<jnlp spec="1.0+" codebase="http://localhost:8081/NetJavaProject" href="jwspalette.jnlp">
<!-- information 标记(如 title、vendor 等)用于提供来自 Java Web Start 应用程序管理器的关于应用程序的附加信息。 homepage ref 属性是专门用于指向 Web URL 从而用户可以去提供了关于应用程序的更多的信息的 Web 页面。最有趣的 information 标记是 offline-allowed 属性;该属性决定了客户机 Java 应用程序是否能离线启动。当离线运行客户机 Java 应用程序时,Java Web Start 将继续判定来自 Web 服务器的最新的文件;在多数情况下,这个方案将引起快速的超时(因为位置被指定要离线启动),并且应用程序从本地高速缓存启动 -->
<information>
<!--title :应用程序标题 vendor:供应商;title/vendor元素必须,会显示在”javaws -viewer”命令打开的应用程序缓存查看器(Java Application Cache Viewer)中 -->
<title>NetJava Application </title>
<vendor>NetJava</vendor>
<!—description:对应用程序的描述,可以有多对<description> </description>,可有可无的 -->
<description>NetJava Application </description>
<!--offline-allowed:选择项,允许离线启动,可以使用javaws –offine命令 -->
<offline-allowed/>
</information>
<!-- resource 标记考虑到 JNLP 文件指定应用程序使用哪些 JAR 文件和如何下载 JAR 文件;即,是急切的还是不紧不慢的。这个特性在当用户要下载大量的文件而对用户来说不是所有的文件都是客户机执行所需要的时是非常有帮助的。缺省的,多数资源是急切的下载的,在这样情况下,JAR 文件和资源在应用程序启动前被下载。不紧不慢的下载的资源只有当 Java 虚拟机(JVM)触发从应用程序载入资源或文件时才被下载。不紧不慢的下载资源的一个示例是客户机的帮助文件;考虑到了客户机的更快的启动和执行,只有在用户实际上向客户机请求帮助文件时,才会下载这些文件。然而,一旦用户请求了一个帮助文件,在请求过程中适当的 JAR 就会被下载,并伴有一个通知用户大致的下载时间的窗口 -->
<resources>
<!—指定客户端需要安装的j2se版本,下面指定为1.6+,如果版本是1.4,在连接此JNLP文件时会提示更新J2se版本 -->
<j2se version="1.6+"/>
<!—指定要下载到本地的jar文件(注意:所有的文件都需要打包才能够下载),可以包含一些资源文件,如icons/configuration files,但是都必须使用类的getResource()方法获取 -->
<jar href="palette.jar"/>
</resources>
<!--指定操作系统以及jdk版本-->
<resources os="Windows">
<j2se version="1.6+"/>
</resources>
<!—Application-desc必须,指定Web Start启动时执行jar文件中的哪个类 -->
<application-desc main-class="cn.netjava.palette.Palette"/>
<!-- security 属性。缺省的,任何从 Java Web Start 客户机启动的 Java 应用程序在一个安全的、受限制的环境执行,该环境中不允许进行本地文件访问、与其它计算机的网络连接等等。然而,对于要对客户机和网络可以完全访问的特性丰富的客户机来说, all-permissions 值是用于给予客户机完全访问的权限的。为具有对本地机的完全访问,Java 应用程序所使用和装入的所有 JAR 文件和资源必须被数字签名 -->
<security>
<all-permissions/>
</security>
</jnlp>

4.JSP页面 
编写用于访问的页面如下:(index.jsp)

5.完成发布和测试 
首先WEB将项目打包成war的包;再将war包拷贝到Tomcat目录下的webapps目录中 
,并启动Tomcat。测试的访问路径是http://localhost:8080/NetJavaProject/index.jsp 。这样我们就能将Swing Application项目发布到互联网上了。当然还有很多的细节问题,期待你们将细节修改好……

JNLP参考资料: 
http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/contents.html 
http://java.sun.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html

http://convolute.iteye.com/blog/564904

JNLP文件怎么打开:

首先要确定你已经装好了jre
改好了环境变量
然后,开始——运行——cmd
javaws D:\××××\××××\××××.jnlp
如果你的jre装的没有问题,那你的屏幕上就应该出现了java程序,并开始下载啦

JNLP(Java Web Start )(转)的更多相关文章

  1. Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用

    问题:Jenkins 2.16.3默认没有Launch agent via Java Web Start,如下图所示,而这种启动方式在Windows上是最方便的. 如何设置才能让出来呢? 打开&quo ...

  2. Jenkins的配置从节点中默认没有Launch agent via Java Web Start,该如何配置使用

    Jenkins的配置从节点中默认没有Launch agent via Java Web Start,如下图所示,而这种启动方式在Windows上是最方便的. 如何设置才能让出来呢? 1:打开" ...

  3. Jenkins 默认没有Launch agent via Java Web Start,该如何配置

    打开"系统管理"——"Configure Global Security" TCP port JNLP agents 配置成"随机",点击& ...

  4. Jenkins节点配置页面,启动方法没有"Launch agent via Java Web Start"解决方法?

    Jenkins的配置从节点中默认没有Launch agent via JavaWeb Start,解决办法: 步骤: 1:打开"系统管理"——"Configure Glo ...

  5. Jenkins新建节点,启动方式没有“通过Java Web启动代理”选项怎么办?

    在Jenkins中,打开“系统管理”→“管理节点”→“新建节点”页面时,“启动方式”选项没有“通过Java Web启动代理”,怎么办? 打开“系统管理”,进入“全局安全配置”页面. 1. “JNLP代 ...

  6. Jenkins 节点配置中没有Launch agent via Java Web Start 选项

    Jenkins节点配置的启动方式中没有Launch agent via Java Web Start,如下图 怎样能设置出来呢? 1:打开"系统管理"——"Configu ...

  7. Jenkins新建节点找不到通过Java web启动代理?

    参考博客:Jenkins新建节点,启动方式没有“通过Java Web启动代理”选项怎么办? 在Jenkins中,打开“系统管理”→“管理节点”→“新建节点”页面时,“启动方式”选项没有“通过Java ...

  8. 高效 Java Web 开发框架 JessMA v3.5.1

    JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...

  9. 高效 Java Web 开发框架 JessMA v3.4.1

    JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...

随机推荐

  1. POJ 3684 Priest John&#39;s Busiest Day 2-SAT+输出路径

    强连通算法推断是否满足2-sat,然后反向建图,拓扑排序+染色. 一种选择是从 起点開始,还有一种是终点-持续时间那个点 開始. 若2个婚礼的某2种时间线段相交,则有矛盾,建边. easy出错的地方就 ...

  2. Python re正则表达式

    参考: 博客园<Python正則表達式指南> 博客园<Python之re模块> 在此感谢博主的无私奉献,本文主要介绍python中re模块的几个简单使用方法.具体的使用方法请參 ...

  3. Android架构分析之LOG模块

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android版本:2.3.7_r1 Linux内核版本:android-goldfish-2.6.29 Andro ...

  4. "Cannot find entry symbol nable-stdcll-fixup; defaulting to 00401000" 解决方案

    在使用Qt 4.7.3, Qt 4.7.2 ,Qt 4.7.1(mingw 4.6.2 )的时候都会有一个问题无法编译通过,即用Qt Creator 编译的时候会发生一个错误 "Cannot ...

  5. 实现能够直接粘QQ贴截图的bug管理功能

    对于一个功能强大的协作平台来说,todo管理和bug管理是不可缺少的功能.Todo和bug往往不是通过一些简单的文字就能实现的,有时候须要配以图片的说名,之前用过的项目管理平台都是以附件的形式上传图片 ...

  6. MFC 将文件拖进对话框获得文件信息

    非常多软件都支持直接将文件拖进去进行处理的功能,详细一点如暴风影音,将视频或者音频文件拖进去就会自己主动開始播放,那么这个功能在MFC上面怎么实现的呢?事实上非常easy,过程例如以下: 第一步:将对 ...

  7. Ubuntu通过使用PyCharm 执行调试 Odoo 8.0 可能的问题

    实现步骤,请移步http://shine-it.net/index.php?topic=16603.0 或 http://www.mindissoftware.com/2014/09/11/Run-O ...

  8. Directx11学习笔记【三】 第一个D3D11程序

    在先前的解决方案中新建一个新的Win32项目FirstD3D11Demo.在写代码之前,我们必须先添加dx11所需要的库.为了链接dx库,右键项目选择属性->vc++目录,在包含目录中添加你所安 ...

  9. 玩转Web之Json(一)-----easy ui+ajax + json 中关于Json的解析问题

    在easy ui中使用Ajax+Json实现前后的数据交互时,当后台数据传输到客户端是需对Json数据进行解析,这里将对Json数据解析做简单总结. (一) 对于服务器返回的数据若没有做类型说明,需要 ...

  10. C标签之forEach

    <c:forEach>标签用于通用数据循环,它有下面属性 属 性 描 述 是否必须 缺省值 items 进行循环的项目 否 无 begin 開始条件 否 0 end 结束条件 否 集合中的 ...