JNLP介绍
原文地址:http://blog.csdn.net/yq76034150/archive/2007/06/02/1635881.aspx
今天在学习netbeans插件开发时,启动应用使用JWS,例:启动 NetBeans HTML Editor
想起公司的应用也使用了JNLP部署,所以查了一下资料,了解了一下JNLP和JWS的相关知识。
一。jnlp是什么?是java提供的一种让你可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个 java应 用程序.好处就不用说了,如果你的java应用程序以jnlp 的方式发布,如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,这就相当于让java应用程序有了web应用的优点了.
二。jnlp文件的具体说明
Xml代码
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!--codebase 属性指出搜索应用程序资源的顶级URL,下面的icon/jar元素都是以这个URL为基本.-->
3. <<SPAN class=hilite1>jnlp</SPAN> codebase="http://127.0.0.1:8081/webstart">
4. <information>
5. <!-- 在"开始"-"运行"菜单中输入"javaws"或"javaws -viewer"启动Web Start,会看到客户端已经安装的webstart应用程序-->
6. <!--title :应用程序标题 vendor:供应商
7. title/vendor 元素必须,会显示在用"javaws -viewer"命令
8. 打开的应用程序缓存查看器(Java Application Cache Viewer)中-->
9. <title>HelloWorld</title>
10. <vendor>Lively Corporation</vendor>
11. <description>HelloWorld Test Example for WebStart.</description>
12. <!--homepage :存放有关应用程序的相关文档的URL,如help文件等,仅仅是description作用-->
13. <homepage href="http://127.0.0.1:8081/webstart/index.html"/>
14. <!--icon 指定图标会显示在应用程序缓存查看器中,
15. 在查看器中新建webstart快捷方式到桌面时也会显示为快捷方式图标,
16. 只支持GIF/JPEG格式,其它格式无效-->
17. <icon href="./images/logo.jpg"/>
18. <!--splash 在sun的文档中提到会出现在webstart启动时的闪屏中,不过可能由于速度问题,我没有观察到-->
19. <icon kind="splash" href="./images/logo.jpg"/>
20. <!-- 允许离线启动,可以使用javaws -offline命令-->
21. <offline-allowed/> 需要什么来搜一搜吧so.bitsCN.com
22. </information>
23. <resources>
24. <!-- 指定客户端需要安装的j2se版本,下面指定为1.5+,
25. 如果版本是1.4,在链接此<SPAN class=hilite1>jnlp</SPAN>文件时会提示更新j2se版本-->
26. <j2se version="1.5+"/>
27. <!-- 指定要下载到本地的jar文件(注意,所有的文件都需要打包才能够下载),
28. 可以包含一些资源文件,如icons/configuration files,可以使用getResource方法取得-->
29. <jar href="./jar/jws/helloworld.jar"/>
30. </resources>
31. <!--application-desc 必须,指定webstart启动时执行jar文件中的哪个类-->
32. <application-desc main-class="jws.HelloWorld"/>
33. </<SPAN class=hilite1>jnlp</SPAN>>
三。应用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
重新部署即可
实例
用JavaWebStart运行SWT应用
SWT:http://www.eclipse.org/swt
JNLP:http://www.jcp.org/en/jsr/detail?id=56
JAVA-WebStart:http://java.sun.com/products/javawebstart/index.jsp
SWT的优势是速度快,适合做应用程序。
用java webstart启动一个swt应用,是较好的Rich Client方案之一。
SWT以java-webstart形式运行,可参见:
http://www-900.ibm.com/developerWorks/cn/linux/opensource/os-jws/index.shtml
其中关键步骤是对*.jar文件的签名。参见:
http://www.pconline.com.cn/pcedu/empolder/gj/java/0410/480482_4.html
SWT Code:
public class HelloWorld {
private org.eclipse.swt.widgets.Shell sShell = null;
private Label label1 = null;
private Button button = null;
public static void main(String[] args) {
org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
HelloWorld thisClass = new HelloWorld();
thisClass.createSShell() ;
thisClass.sShell.open();
while (!thisClass.sShell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep ();
}
display.dispose();
}
private void createSShell() {
sShell = new org.eclipse.swt.widgets.Shell();
label1 = new Label(sShell, SWT.NONE);
button = new Button(sShell, SWT.NONE);
sShell.setSize(new org.eclipse.swt.graphics.Point(300,122));
sShell.setText("JNLP测试");
label1.setBounds(new org.eclipse.swt.graphics.Rectangle(22,16,260,34));
label1.setText("JNLP Client Run Successful!");
button.setBounds(new org.eclipse.swt.graphics.Rectangle(148,59,132,23));
button.setText("EXIT");
button.addMouseListener(new org.eclipse.swt.events.MouseAdapter() {
public void mouseUp(org.eclipse.swt.events.MouseEvent e) {
sShell.close();
}
});
}
}
主要步骤如下:
1. 将%ECLIPSE_HOME%\plugins\org.eclipse.swt.win32_3.1.0\os\win32\x86目录下的几个dll文件。将其打包为swt-lib-source.jar,并将其复制到临时文件夹。
2. 将%ECLIPSE_HOME%\plugins\org.eclipse.swt.win32_3.1.0\ws\win32目录下的swt.jar复制到临时文件夹。
3. 将Swt应用程序client端的*.class以及resource打包,例如命名为jnlp-demo-source.jar
4. 在临时文件夹生成签名文件:
keytool -genkey -alias icecloud -keypass password -keystore icecloudstore
5. 用签名文件对jar文件签名
jarsigner -keystore mystore -signedjar swt-lib.jar swt-lib-source.jar icecloud
jarsigner -keystore mystore -signedjar swt-win32.jar swt.jar icecloud
jarsigner -keystore mystore -signedjar jnlp-demo.jar jnlp-demo-source.jar icecloud
6. 将生成的jar文件复制到webapp的codebase中,例如直接放在根目录下或者/codebase
7. 制作jnlp文件,参见ibm教程中的例子
<?xml version="1.0" encoding="gbk"?>
<jnlp spec="1.0+" codebase="http://icecloud/jnlp" href="index.jnlp">
<information>
<title>HelloWorld</title>
<vendor>ESBU Group</vendor>
<homepage href="index.html"/>
<description>Hello World test</description>
<description kind="short">Hello world</description>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5"/>
<jar href="jnlp-demo.jar"/>
<nativelib href="swt-lib.jar"/>
</resources>
<resources os="Windows">
<jar href="swt-win32.jar"/>
</resources>
<application-desc main-class="com.zarva.test.jnlp.HelloWorld"/>
</jnlp>
8. ie运行 http://icecloud/jnlp/
说明:
• jnlp严格要求j2se的版本来运行,我本机安装的1.5,开始时候使用参数1.4,ie开始自动从sun下载jre1.4
• nativelib可以对jni的library进行处理。因此,不需要将*.lib放入客户机的System32
• 签名默认六个月有效。目前还没不知道对系统产生的影响和解决方案。
分享到:
相关推荐
具体使用介绍可参考博文:http://blog.csdn.net/netwalk/article/details/17319559 使用androidscreencast.jnlp,可通过鼠标和键盘操作手机,并且可实时将手机屏幕传回电脑端,还可录屏,也可浏览操作手机。桌面...
6. "README" - 一般提供快速入门指南,简要介绍软件的功能、如何运行以及注意事项。 7. "lib" - 这是一个目录,很可能包含了运行Airavata Xbaya GUI所需的各种依赖库,如Java类库和其他外部库。 总结起来,这个...
下面将详细介绍这些概念及其相关知识点。 首先,Java是Oracle公司推出的一种跨平台的编程语言,它的“一次编写,到处运行”特性使得开发者可以创建能在多种操作系统上运行的应用程序。在本例中,`Java多彩动画程序....
### DELL iDRAC7远程管理卡介绍 #### 一、概述 DELL iDRAC(Integrated Dell Remote Access Controller)是戴尔服务器内置的一种高级远程管理解决方案,它为用户提供了一个独立于操作系统之外的管理环境。iDRAC7...
### Java程序中启动浏览器 #### 知识点一:Runtime 类与系统命令交互 在 Java 程序中,可以通过 `java.lang.Runtime` 类来执行操作...此外,还介绍了几种不同的启动浏览器的方法,可以根据具体需求选择最合适的方式。
### Java Web Start与JNLP规范 #### 一、引言 Java Web Start技术允许用户直接从网络上启动和运行应用程序。它通过JNLP(Java Network Launching Protocol)规范来实现这一目标,该规范定义了如何从网络加载并执行...
软件介绍: IPMI View是一款板载IPMI卡管理工具,IPMI卡具有无需依赖于主板、CPU、内存等硬件而独立运行的优势,可以在操作系统运行之前对主机进行Console级别的访问和操作,而且还可以远程挂载ISO、img等多种...
【TopCoder注册及入门介绍】 TopCoder是一个全球知名的在线编程竞赛平台,自2001年成立以来,已与Google、MS、YAHOO、Intel、Motorola和SUN等世界顶级IT公司合作,为参赛者提供了展示编程技能、获得现金奖励以及...
本篇文章将详细介绍topcoder arena及其相关的插件。 【描述】:“topcoder arena,包含ContestAppletProd.jnlp,CodeProcessor.jar,FileEdit.jar,TZTester,运行需要jre环境” topcoder arena 是一个Java应用程序,...
本文将详细介绍如何在JBoss应用服务器上部署Java Web Start应用程序,并利用Java Web Start技术实现客户端图形用户界面(GUI)的自动更新。Java Web Start技术不仅支持Windows环境,同时也适用于Linux、Unix(如...
Java Web Start,也称为Java Network Launch Protocol(JNLP),是Oracle提供的一种技术,用于从Web上启动和自动更新Java应用程序。它允许用户通过一个Web链接启动富客户端Java应用程序,同时确保应用程序始终保持...
本文将详细介绍如何使用 Jenkins Pipeline 插件和 Docker 打造容器化构建环境,以实现高效的自动化构建和部署。下面是相关的知识点: 1. Jenkins Pipeline 插件:Jenkins Pipeline 插件是一种强大的插件,可以让...
3. **打包JNLP文件**:JNLP(Java Network Launch Protocol)文件是Java Web Start应用的核心,它描述了应用程序的元数据,如主类、资源、权限等。博主会指导如何创建并配置JNLP文件,以便Java Web Start能够正确地...
### Java 7新特性中文介绍 #### 一、概述 随着Java 7的发布,业界迎来了一次重大的技术革新。作为一款原本就极其强大的编程语言,Java在Oracle的重组之后,不仅保持了其原有的优势,还增添了许多令人期待的新特性...
- **Java Webstart (JNLP)**:解析了如何通过JNLP文件启动Java Webstart应用程序。 - **批处理文件**:讲解了如何通过批处理文件启动Java应用程序。 - **可执行包装器**:介绍了使用可执行包装器启动Java应用程序的...
这篇文章主要介绍了基于Java Web Start技术的VFP考试系统的设计与实现。该系统应用了Java Web Start技术,包括考试、教师、教务三大模块,使得考试系统更加灵活、方便和准确。 Java Web Start技术概述 Java Web ...
【描述】:虽然描述中给出的链接无法直接查看,但根据一般WebStart的使用场景,我们可以推断,该博文可能详细介绍了如何配置和使用Java Web Start服务。博主可能分享了如何将应用程序打包为JNLP(Java Network ...
2. **在 Master 节点上添加 Slave**:通过 Jenkins Web UI 添加新的 Slave 节点,配置名称、标签、JNLP agent 等信息。 3. **分配任务**:在构建项目配置中选择合适的节点执行构建任务。 #### Jenkins最佳实践 为了...
- **Java Web Start/JNLP支持**:提供了如何在Java Web Start应用程序中使用H2数据库的指南。 - **OSGi支持**:介绍了如何在OSGi环境中使用H2数据库。 - **Java管理扩展**(Java Management Extension, JMX):...