jnlp(Java网络加载协议)(转…

2023-10-22 23:39
文章标签 java 加载 协议 网络 jnlp

本文主要是介绍jnlp(Java网络加载协议)(转…,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址:jnlp(Java网络加载协议)(转载) 作者:huangzhiyuan1226

jnlp(Java网络加载协议)原来很简单

Java Network Launching Protocol (JNLP,java网络加载协议)。

jnlp是什么?是java提供的一种让你可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个java应用程序.好处就不用说了,如果你的java应用程序以jnlp 的方式发布,如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,这就相当于让java应用程序有了web应用的优点了.

如何使用jnlp:
1.把你的应用打包成一个可执行的jar文件,放在可以访问的web目录下,如appTest.jar.
用ant脚本可以这样,当然也可以手工用jar工具打包.
        <jar destfile="${desc.dir}/${youApp.jarName}" update="true" compress="true">
   <manifest>
      <attribute name="Main-Class" value=""com.youApp.MainClass"/>
   </manifest>
  
   <fileset dir="${class.dir}">
    ...
   </fileset>

        </jar>

2.编写一个xml文件test.jnlp 内容如下
<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="http://localhost/yousite/" name="SeatingChartBuilder"
   href="http://localhost/yousite/test.jnlp">
   <information>
        <title>Seating Chart Builder</title>
        <vendor>Etix.com, Inc.</vendor>
        <offline-allowed/>
 <description>An Application To Seating Chart Builder!</description>
   </information>
   <application-desc main-class="com.youApp.MainClass"/><!--这里是你的应用的入口程序名-->
   <security>
      <all-permissions/>
   </security>
   <resources>
        <j2se version="1.4+"/>
        <jar href="appTest.jar" /><!-- 这里是你的打包的应用-->
    </resources>
</jnlp>

3.必须为你的jar文件签名
先在命令行用keytool产生一个keystore文件.
keytool -genkey -keystore you.keystore –alias youApp

命令行用jarsigner签名,当然这时候需要生成keystore时的密码
jarsigner -keystore you.keystore appTest.jar youApp

ok现在将appTest.jar文件放在你的web的/yousite目录下用地址
http://localhost/yousite/test.jnlp 就可以启动你的应用程序了,
启动时会弹出对话框让你确认签名,点是就可以了.

在这里看看sun的demo吧:http://java.sun.com/products/javawebstart/demos.html
参考 http://www.yeegle.com/articleview/33954.aspx


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zmxj/archive/2005/02/22/297649.aspx

 

 

实例
用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.     将�LIPSE_HOME%pluginsorg.eclipse.swt.win32_3.1.0oswin32x86目录下的几个dll文件。将其打包为swt-lib-source.jar,并将其复制到临时文件夹。
2.     将�LIPSE_HOME%pluginsorg.eclipse.swt.win32_3.1.0wswin32目录下的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
• 签名默认六个月有效。目前还没不知道对系统产生的影响和解决方案。

这篇关于jnlp(Java网络加载协议)(转…的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/264309

相关文章

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I