`
happy20070302
  • 浏览: 97662 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java web start(1)

    博客分类:
  • j2se
阅读更多

引用网址:http://sonichui.spaces.live.com/Blog/cns!E9BA55A754ADC96B!734.entry










编程平台:Ecplise3.4


关于JWS:

Sun的JWS技术可以用于以下方面:

1.可以很方便地部署客户端JAVA软件(包括Applet)

2.保证软件的版本保持最新

3.有安全需求,JWS程序默认运行在受限的沙箱(Sandbox)



开发步骤:

1.编写好要在客户端运行的软件。

2.编写.jnlp文件,它是JWS的核心,要正确部署应用程序,必须确保.jnlp编写正确不误。

3.编写调用页面,以方便用户通过浏览器运行软件。

4.服务器部署。

下面分步骤详细讲解:

准备工作:
先建立新的wed应用,如图:



假设名称为JWSTest,应用服务器为Tomcat5.5,并配置无误。

客户端应用程序:
近来我在开发JMF应用程序,这里我用一个媒体播放器来做实验,要运行其他应用程序,自己编写就行,不论是有网络连接的还是没网络连接的应用程序都可以,不过有网络连接的或者其他要调用客户端本地资源的程序就要涉及到.jar文件签名的问题,我下面这个程序要签名才可以正常运行,因为要调用本地类库,而关于部署Applet小程序应用,还有地方不理解,理解后在写。签名下面会讲解,先看源代码。

MediaPlayerTest.java

import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.MediaLocator;
import javax.media.Manager;
import javax.media.bean.playerbean.MediaPlayer;
import javax.media.rtp.ReceiveStreamListener;
import javax.media.rtp.event.ReceiveStreamEvent;

/**
* @author 陈辉鸿
*/
public class MediaPlayerTest extends Frame {

    MediaPlayer player=null;

    public static void main(String[] args) {

        new MediaPlayerTest();

    }


    public MediaPlayerTest(){
        setSize(400,400);
        setTitle("MediaPlayerTest");
        this.addWindowListener(new
                WindowAdapter(){
                    public void windowClosing(WindowEvent e){
                        if(player!=null){
                            player.close();
                        }
                        System.exit(0);
                    }
                });
            Menu menu=new Menu("打开");
            MenuItem openItem=new MenuItem("打开");
            openItem.addActionListener(new
                java.awt.event.ActionListener(){
                    public void actionPerformed(java.awt.event.ActionEvent e){
                        openFile();
                    }
                });
            menu.add(openItem);
            MenuBar menuBar=new MenuBar();
            menuBar.add(menu);
            this.setMenuBar(menuBar);
            setVisible(true);
    }
    @SuppressWarnings("deprecation")
    protected void openFile(){
        FileDialog fd=new FileDialog(this, "选择文件", FileDialog.LOAD);
        fd.setVisible(true);
        String fileDirectory=fd.getDirectory();
        String fileName=fd.getFile();
        if(fileName==null) return;
        String mediaPath="file:///"+fileDirectory+fileName;
            if(player!=null){
                player.close();
                player=null;
            }
            player=new MediaPlayer();
            player.setMediaLocation(mediaPath);
            player.setCachingControlVisible(true);
            player.setPlaybackLoop(true);
            this.add(player);
            pack();
            player.start();
    }

}


文件目录如下:

├─\src
│      MediaPlayerTest.java
├─\build
│  └─\classes
└─\WebContent
    │  JMFPlayer.jnlp
    │  index.html
    │  indexwithjretest.html
    │  JMFPlayer.jar
    ├─\WEB-INF
    │  │  web.xml
    │  └─\lib
    │          jnlp-servlet.jar
    └─\META-INF
            MANIFEST.MF

假设在目录\src下,用下面的命令把MediaPlayerTest.java编译好:

javac MediaPlayerTest.java

打包成.jar文件,说明一下命令中的*是为把相关类都打包入JMFPlayer.jar文件,不然会产生NoClass-DefFoundError

jar cvf JMFPlayer.jar MediaPlayerTest*.class

产生密码,会出现如图选项,照着回答就是,不过要记住主密码,签名要用到:

keytool -genkey -alias secure



对JMFPlayer.jar文件进行签名:

jsigner JMFPlayer.jar secure

上面完成无误后,应用程序的编写算基本完成。

Jnlp文件:
先把jnlp-servlet.jar类库导入到\WebContent\WEB-INF\lib目录下,从jdk1.4开始,jws已经集成到开发包里面,在%JAVA_HOME%\sample\jnlp\servlet目录下可以找到这个jar。导入后修改wed.xml文件如下,这样就可以免去修改Tomcat的wed.xml配置文件以支持jnlp文件类型,更方便开发。

wed.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>JWSTest</display-name>
    <servlet>
         <servlet-name>JnlpDownloadServlet</servlet-name>
         <servlet-class>jnlp.sample.servlet.JnlpDownloadServlet</servlet-class>
         <load-on-startup>-1</load-on-startup>
    </servlet>
    <servlet-mapping>
         <servlet-name>JnlpDownloadServlet</servlet-name>
         <url-pattern>*.jnlp</url-pattern>
    </servlet-mapping>
    <mime-mapping>
         <extension>jnlp</extension>
         <mime-type>application/x-java-jnlp-file</mime-type>
    </mime-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
</web-app>


在\Wed-Content目录下新建一个JMFPlayer.jnlp文件:



内容如下,本质上.jnlp文件就是一个Xml文件,要严格遵守xml语法。

JMFPlayer.jnlp
TS: 2008-1-2 10:48:54
<?xml spec="1.0+" version="1.0" encoding="utf-8"?>
<jnlp codebase=$$codebase href="JMFPlayer.jnlp">
<information>
         <title>JMFPlayer</title>
         <vendor>JWS example of JMFPlayer</vendor>
         <description>Example of JWS</description>
         <description kind="short">JWS example</description>
         <offline-allowed/>
</information>
<resources>
      <j2se version="1.5+"/>
      <jar href="JMFPlayer.jar"/>
</resources>
<application-desc main-class="MediaPlayerTest"/>
</jnlp>


1.TS:标签用于检测客户端的程序版本是否最新,它是通过对比客户端的程序的修改日期和这个日期来判断的,所以上面的软件发布时间要自己手动来更改。

2.codebase=$$codebase表示对文件地址进行软解码,要用到jnlp-servlet.jar类库才能正常运行。

3.<information>...</information>信息标记,包括运行程序名,出版商,描述。其中<offline-allowed/>标记表示是否允许客户端离线运行程序,而无须每次都重新下载,要关闭离线运行功能为<offline-allowed=false/>

4.<resources>...</resources>资源应用标记,里面的<jar href="这里写你打包好的jar文件">就是你要运行的程序,<jese version="1.5+"/>表示java运行平台的要求,这里为jdk1.5或更高。

5<application-desc main-class="MediaPlayerTest"/>表示你打包好的jar文件的程序入口。

调用页面:
主页如下,里面含有脚本用于检测客户是否已经安装有JWS运行环境,并检测运行的浏览器是IE还是Nescape,如果已经安装有jdk1.4或更高就已经集成JWS运行环境。

index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
     <HEAD>
         <TITLE>Index testing JRE level</TITLE>
     </HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
var javawsInstalled = 0;
var javaws12Installed = 0;
var javaws142Installed=0;
isIE = "false";
if (navigator.mimeTypes && navigator.mimeTypes.length) {
    x = navigator.mimeTypes['application/x-java-jnlp-file'];
    if (x) {
       javawsInstalled = 1;
       javaws12Installed=1;
       javaws142Installed=1;
    }
}
else {
    isIE = "true";
}
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
on error resume next
If isIE = "true" Then
   If Not(IsObject(CreateObject("JavaWebStart.isInstalled"))) Then
      javawsInstalled = 0
   Else
      javawsInstalled = 1
   End If
   If Not(IsObject(CreateObject("JavaWebStart.isInstalled.2"))) Then
      javaws12Installed = 0
   Else
      javaws12Installed = 1
   End If
   If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.4.2.0"))) Then
      javaws142Installed = 0
   Else
      javaws142Installed = 1
   End If
End If
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
if (javawsInstalled || (navigator.userAgent.indexOf("Gecko") !=-1)) {
     document.write("<a href=JMFPlayer.jnlp>点击这里利用JWS运行软件</a>");
} else {
     document.write("WebStart is not Installed, Click ");
     document.write("<a href=http://java.sun.com/javase/downloads/index.jsp>here</a> ");
     document.write("to download and install JRE 1.5.0 and try to run the app again.");
}
</SCRIPT>
</BODY>
</HTML>




一切完成后,就可以进行测试,选择index.html按右键选择Run on Server:



运行画面:





分享到:
评论

相关推荐

    perl516-perl-Locale-Maketext-1.22-19.el6.centos.alt.noarch.rpm

    perl516-perl-Locale-Maketext-1.22-19.el6.centos.alt.noarch.rpm

    MATLAB仿真平台下的含碳捕集与垃圾焚烧虚拟电厂的协同优化调度策略研究:电转气技术下的能源利用与需求响应管理,MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧电厂优化调度 关键词:碳捕集 电厂

    MATLAB仿真平台下的含碳捕集与垃圾焚烧虚拟电厂的协同优化调度策略研究:电转气技术下的能源利用与需求响应管理,MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧电厂优化调度 关键词:碳捕集 电厂 需求响应 优化调度 电转气协同调度 参考文档:《计及电转气协同的含碳捕集与垃圾焚烧电厂优化调度》完全复现 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一个计及电转气协同的含碳捕集与垃圾焚烧电厂优化调度问题,基本调度框架是碳捕集电厂–电转气–燃气机组协同利用框架,碳捕集的 CO2 可作为电转气原料, 生成的天然气则供应给燃气机组; 并通过联合调度将碳捕集能耗和烟气处理能耗进行负荷转移以平抑可再生能源波动,使得风电 光伏实现间接可调度而被灵活利用,代码采用的是非智能算法求解,因为本文问题复杂智能算法难以求解,故使用的是yalmip+cplex求解器完成求解 这段代码是一个关于电转气协同的含碳捕集与垃圾焚烧电厂优化调度的程序。下面我将对程序进行详细分析。 首先,程序开始时进行了一些初始化的操作,包括清空命令窗口、清除变量和关闭所有图形窗口。 然后,定义了一系列的参数,这

    温州市乡镇边界,shp格式

    shp格式,可直接导入arcgis使用

    snappy-1.1.0-3.el7.x64-86.rpm.tar.gz

    1、文件内容:snappy-1.1.0-3.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/snappy-1.1.0-3.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    perl516-perl-libs-5.16.3-19.el6.centos.alt.x86_64.rpm

    perl516-perl-libs-5.16.3-19.el6.centos.alt.x86_64.rpm

    si-units-0.6.5-1.el7.x64-86.rpm.tar.gz

    1、文件内容:si-units-0.6.5-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/si-units-0.6.5-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    svrcore-devel-4.1.3-2.el7.x64-86.rpm.tar.gz

    1、文件内容:svrcore-devel-4.1.3-2.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/svrcore-devel-4.1.3-2.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    宠物管理系统(源码+数据库+论文+ppt)java开发ssm框架javaweb,可做计算机毕业设计或课程设计

    宠物管理系统(源码+数据库+论文+ppt)java开发ssm框架javaweb,可做计算机毕业设计或课程设计 【功能需求】 整个网上宠物管理系统的设计与实现,主要实现的功能有以下几点: (1)前台用户:首页、宠物用品、宠物商店、宠物领养、宠物挂失、论坛信息、宠物资讯、个人中心、后台管理、购物车、客服咨询 (2)管理员:首页、个人中心、宠物分类管理、商品分类管理、宠物用品管理、宠物商店管理、宠物领养管理、用户管理、宠物寄存管理、用户领养管理、宠物挂失管理、论坛管理、管理员管理、系统管理、订单管理等功能; 【环境需要】 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.数据库:MySql 5.7/8.0等版本均可; 【购买须知】 本源码项目经过严格的调试,项目已确保无误,可直接用于课程实训或毕业设计提交。里面都有配套的运行环境软件,讲解视频,部署视频教程,一应俱全,可以自己按照教程导入运行。附有论文参考,使学习者能够快速掌握系统设计和实现的核心技术。

    一个功能强大的图表生成工具,支持多种图表类型和数据可视化

    ## 功能特点 1. 数据导入 - 支持Excel文件 - 支持CSV文件 - 数据预览 - 自动识别列 2. 图表类型 - 折线图 - 柱状图 - 饼图 - 散点图 - 箱线图 - 热力图 3. 图表设置 - 自定义标题 - 主题选择 - 轴标签设置 - 样式调整 4. 其他功能 - 实时预览 - 高清导出 - 多种格式 - 简单操作

    perl516-perl-DBI-1.630-4.el6.centos.alt.x86_64.rpm

    perl516-perl-DBI-1.630-4.el6.centos.alt.x86_64.rpm

    strace-4.24-7.el7-9.x64-86.rpm.tar.gz

    1、文件内容:strace-4.24-7.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/strace-4.24-7.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    sos-3.9-5.el7.centos.12.x64-86.rpm.tar.gz

    1、文件内容:sos-3.9-5.el7.centos.12.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/sos-3.9-5.el7.centos.12.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    srp-daemon-22.4-6.el7-9.x64-86.rpm.tar.gz

    1、文件内容:srp_daemon-22.4-6.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/srp_daemon-22.4-6.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    supermin5-devel-5.1.19-1.el7.x64-86.rpm.tar.gz

    1、文件内容:supermin5-devel-5.1.19-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/supermin5-devel-5.1.19-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    国土变更小飞机工具分享

    找到image文件扫一扫获取授权

    一个将 Ollama 与 Flask 框架结合的 Python 源码

    一个将 Ollama 与 Flask 框架结合的 Python 源码,创建一个 Web 服务,用户可以通过浏览器或其他工具向该服务发送请求,调用 Ollama 模型生成文本。

    perl516-perl-DateTime-1.06-3.el6.centos.alt.x86_64.rpm

    perl516-perl-DateTime-1.06-3.el6.centos.alt.x86_64.rpm

    Python IDE PyCharm的多平台安装指南和技术应用入门

    内容概要:本文档详细介绍了如何在不同操作系统(Windows、macOS 和 Linux)上安装 PyCharm这一集成开发环境(IDE)。文档不仅讲解了具体的下载渠道以及步骤指引——涵盖社区版和专业版的选择,而且还引导用户进行首次配置,包括外观定制、键盘布局选定以及必要的组件启用,并指出在首次使用的各个阶段可能会遇到的关键事项,像是授权激活。此外,也提到了在启动过程中,针对不同平台的一些特定注意事项,例如在 Mac 中的安全性和隐私设置、Linux 下基于命令行的解压缩与启动方法。 适合人群:初次接触 Python 编程或有意向使用 PyCharm 提高生产力的程序员,尤其是对 PyCharm 不太熟悉的技术新手。 使用场景及目标:为希望使用 PyCharm 开发 Python程序的学生或专业人士提供详尽的操作指南,使其能够顺利完成安装,并熟悉 IDE 的基本特性及高级特性的初步认识,从而快速着手实际项目的开发。 阅读建议:用户可以按自己的操作系统直接跳转相关章节,逐步依照文档步骤来进行安装与配置。同时关注每段文字末提到的独特提醒项以保证顺利地使用 IDE 进行编码工作。对于计划长期使用 PyCharm 的用户来说,还可以探索更多高级插件以满足自身开发需求。

    perl516-perl-DateTime-TimeZone-1.63-5.el6.centos.alt.noarch.rpm

    perl516-perl-DateTime-TimeZone-1.63-5.el6.centos.alt.noarch.rpm

    爆火付费进群流量源码 吃瓜玩法变现

    全新前端UI界面,多种前端交互特效让页面不再单调,进群页面群成员数,群成员头像名称,每次刷新页面随机更新不重复,最下面评论和点赞也是如此随机刷新不重复 进群页面简介,群聊名称,群内展示,常见问题后台一键开关方便控制,付费进群系统后台自定义你的内容,底部显示你所设置的进群金额,也可以修改付费获取某些资源,搭建者自己集思广益,搭建的知识工具里面的内容才是内核,运营起来才是王道

Global site tag (gtag.js) - Google Analytics