jnlp文件服务器数据提取,jnlp 项目示例

jnlp项目示例

1-创建一个可执行jar

2-为jar添加签名

3-编写 jnlp 文件

4-发布前三步的文件到服务器

5-测试执行

问题

浏览器输入Url只下载不执行 & 双击.jnlp 文件不执行

简介

JNLP(Java Network Launch Protocol)是一种用来在网络中部署应用程序的一种协议;

在客户端只需要安装 java web start 就可以使用服务器端的软件,它具有自动更新应用程序版本的功能;

通过 java web start 加载.jnlp文件, 从中获取可执行jar包的下载地址,执行方法,以及参数等信息, 然后去下载jar包后执行应用程序.

优点: 如果你的java应用程序以jnlp 的方式发布,如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,这就相当于让java应用程序有了web应用的优了

Jnlp还是一种基于xml的启动java程序的技术。在100town.com您可以将生成的代码存成一个后缀为**.jnlp的文件,将这个文件发布在自己的网站上,当用户访问这个网站时,就可以启动java程序。

jnlp项目示例

1. 创建一个可执行jar

随便创建一个里面有main()方法的jar就行了, 为了演示完整点, 来个简单的frame demo 吧

package cn.cpf;

import javax.swing.*;

import java.awt.*;

/**

* @author by CPF

*/

public class MainFrame extends JFrame {

private static final long serialVersionUID = -4791222140191948495L;

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

MainFrame frame = new MainFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the frame.

*/

public MainFrame() {

setBounds(100, 100, 325, 203);

final JPanel contentPane = new JPanel();

contentPane.setLayout(null);

setContentPane(contentPane);

final JTextField textField = new JTextField();

textField.setBounds(10, 20, 200, 30);

contentPane.add(textField);

textField.setColumns(50);

textField.setText("简单的frame, 非常简单了");

}

}

d1c5f64cbbda

swing-demo-structure.png

最终项目结构是这样的, 然后达成 swing-demo.jar 包, 能不能点击执行无所谓的.

2. 为jar添加签名

没有签名实际上也是可以运行的, 只不过在运行的时候会弹出一些警告, 而且在调用本地资源时可能会出现问题

d1c5f64cbbda

cmd-storekey.png

创建 keystore, 命名为 swing-demo-keys, alias 为 jdc

keytool -genkey -keystore swing-demo-keys -alias jdc

运行之后输入两次密码, 后面的名字, 组织之类的输入不输入无所谓了.

将创建的 keystore 添加到 swing-demo.jar

jarsigner -keystore swing-demo-keys swing-demo.jar jdc

3. 编写 jnlp 文件

具体的配置属性请看下面的文件示例, 里面的注释解释的很详细

编写 jnlp 文件命名为 swing-demo.jnlp

HelloWorld

哈哈哈哈

demo

4. 发布前三步的文件到服务器

再此使用tomcat(其他serve-app也可以), 在tomcat的webapp目录下新建 jnlptest 文件夹, 将swing-demo.jnlp, swing-demo.jar, swing-demo-key 等全部拷贝进去. 如果在.jnlp文件中配置logo, 或者其它jar包的话也全部放进去. 启动tomcat, 反正只要通过url路径能访问到就行.

d1c5f64cbbda

file-structure.png

5. 测试执行

浏览器输入http://127.0.0.1:8080/jnlptest/swing-demo.jnlp, 回车,

或者命令行输入 javaws http://127.0.0.1:8080/jnlptest/swing-demo.jnlp

注意此时可能会弹出安全, 权限什么的, 如果这是个值得信任的.jnlp文件的话就去java控制面板里面去配置信息, 详情见下图配置吧.

d1c5f64cbbda

jnlp-javaws-config.png

即便配置完成之后也会有下面的警告

d1c5f64cbbda

jnlp-warning.png

还有就是如果url对应的jar没有签名的话, 也会弹出各种弹框啦, 至于信不信任自己视情况而定.

最后画面就显示出来了

d1c5f64cbbda

mainframe-demo.png

问题

浏览器输入Url只下载不执行 & 双击.jnlp 文件不执行

首先先说明一个大众都误解的一个错误, 浏览器是不能打开jnlp文件的, 真正打开jnlp的是javaws(java web start), 完整的步骤是浏览器发现自己不能处理jnlp文件, 于是将jnlp抛给系统去处理, 系统自己也不能处理, 最后由系统去调用javaws执行jnlp文件. 详细步骤如下

直接在命令行输入 javaws http://127.0.0.1:8080/jnlptest/swing-demo.jnlp 是最直接的处理方式.

浏览器通过url访问的一般是一个 .jnlp 文件, 浏览器获得文件之后发现自己不能处理 .jnlp 文件, 之后不同的浏览器会有不同的处理方式.

ie: 默认直接交给系统去运行.

chrome: 默认直接下载.

Mocrosoft Egde: 弹出一个选项(运行, 下载, 取消), 运行就是交给系统去运行.

系统获得 .jnlp 文件之后会交给java web start运行.

如果系统无法识别.jnlp文件打开方式的话, 可以通过配置.jnlp文件默认打开程序来解决.(一般来说只要是通过window安装包正确安装jre的话, 都会自动配置.jnlp文件运行方式的.)

java web start 加载.jnlp文件, 从中获取可执行jar包的下载地址,执行方法,以及参数等信息, 然后去下载jar包后执行应用程序.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值