赛迪网 > IT技术 Java > Java大图列表
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Java Web Start简单入门步骤

发布时间:2008.03.05 04:44     来源:赛迪网    作者:gui_jq

JWS主要应用在发布应用程序上,主要写好了jnlp文件,用户通过http访问到,应用程序会自动安装在本地机器,今后升级等工作JWS将自动完成。可以说是发布软件的一种新方式。(当然,前提对方必须有jvm)

实施步骤

编写好一个测试文件,并且打成hello.jar包


//File HelloJNLP.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

public class HelloJNLP extends JFrame implements ActionListener {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public HelloJNLP() {
        super("Hello JNLP");
        String loadedFrom = this.getClass().getClassLoader().toString();
        JLabel jl = new JLabel("loaded by " + loadedFrom);
        JEditorPane jtp = new JEditorPane("text/plain", "版本1.1.2");
        JButton bb = new JButton("write native file");
        getContentPane().add(jl, BorderLayout.NORTH);
        getContentPane().add(jtp, BorderLayout.CENTER);
        getContentPane().add(bb, BorderLayout.SOUTH);
        bb.addActionListener(this);
        bb.setActionCommand("wnf");
    }

    public static void main(String[] args) {
        JFrame f = new HelloJNLP();
        f.setBounds(100, 100, 325, 250);
        f.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        f.setVisible(true);
        f.addWindowListener(new WindowAdapter() {
            public void windowClosed(WindowEvent e) {
                System.out.println("Shutting down...");
                System.exit(0);
            }
        });
    }

    public void actionPerformed(ActionEvent arg0) {
        //System.out.println(arg0.getActionCommand());
        try {
            FileOutputStream fos = new FileOutputStream("abcfile");
            try {
                fos.write(0xffff);
                fos.close();
                System.out.println("write file ok");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
        try {
            Socket sock = new Socket(InetAddress.getByName("www.cctv.com"), 80);
            sock.close();
            System.out.println("socket create ok");
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
}

 

此应用在点JButton 的时候测试写本地文件系统和使用本地网络资源。(编译和打包过程省略)

接着,也是我折腾了一天的事情,如何把此jar进行证书认证,使得此应用安装到用户那可以操作本地资源。原来我使用jdk的keytool工具生成证书,但是只可用半年,后来考虑去官方申请一个,居然要800$/年。最后考虑用openssl自己做,但是过程相当复杂,而且没法很好的控制流程,主要是对openssl命令不太熟悉用途。折腾了一天,终于发现原来java自己就可以生成使用限期自定义的证实。哎...

生成一个新的keystore
keytool -genkey -keystore myKeystore -alias myself

生成一个私证书
keytool -selfcert -alias myself -keystore myKeystore -validity 365

注意-validity 365为证书使用期限,为1年,可以自己定义更大。

对jar进行签名
jarsigner -keystore myKeystore hello.jar myself

这样签名工作就完成了。最后写个jnlp描述文件hello.jnlp

 


< ?xml version="1.0" encoding="UTF-8"?>
< !-- file Hello.jnlp -->
< jnlp codebase="http://192.168.1.6:81/jnlp/"
href="http://192.168.1.6:81/jnlp/hello.jnlp">
        < information>
    < title>Hello< /title>
    < vendor>Tech Tips Sample May 2001< /vendor>
    < icon href="/jnlp/qq.jpg"/>
  < /information>
  < resources>
    < j2se version="1.3+"/>
    < jar href="/jnlp/hello.jar"/>
  < /resources>
  < security> 
   < all-permissions> 
  < /security>
  < application-desc main-class="HelloJNLP"/>
< /jnlp>

 

我这里把jar和jnlp都放在192.168.1.6的主机上面,并且通过81port进行访问。你可以更加自己的需要修改上面的相关信息。

测试一下。http://192.168.1.6:81/jnlp/hello.jnlp用ie打开,马上会弹出一个你是否接受的筐,并且说明这个个人或者公司是不可信的(就因为不是权威机构申请的证书,哎),点接受后就可以正常运行jar中的程序,可以正常使用本地功能。
           (责任编辑:包春林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 入门:int 和 String 互相转换的多种方法 (03-03) · J2EE综合:谈谈Java Web开发的学习路径 (03-03)
· 高级:使用异步Servlet扩展AJAX应用程序 (03-03) · Java入门--讨论String中三种加法的区别 (03-03)
· Java语言深入--Java中日期的使用方法 (03-03) · 进阶--对Java/JSP中文乱码问题解决心得 (03-03)
· Java入门:Java多线程程序设计详细解析 (03-03) · eclispe下开发struts完整解决乱码问题 (03-03)
· 框架:当前流行的J2EE WEB应用架构分析 (03-03) · 走出abstract class与interface的困惑 (03-03)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· CIO浅谈电子商务应用 09年B2B市场将达21300亿
· RFID与条码技术将在中国零售行业中长期共存
· 五条黄金准则能够让CIO巧妙加薪 CIO焦虑调查
· 网上书店解决方案 深圳边检指挥中心ITSM项目
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统