收藏 分销(赏)

J2ME程序远程安装及自动升级.doc

上传人:仙人****88 文档编号:7231714 上传时间:2024-12-28 格式:DOC 页数:6 大小:70.50KB 下载积分:10 金币
下载 相关 举报
J2ME程序远程安装及自动升级.doc_第1页
第1页 / 共6页
J2ME程序远程安装及自动升级.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
J2ME程序远程安装和自动升级 目录 J2ME程序自动升级 1 1. JAD和JAR、Manifest.mf 1 2. JAD和程序安装 3 2.1 远程安装 3 2.2 扩展知识:MIME 4 3. 程序自动升级实现 4 1. JAD和JAR、Manifest.mf 一个Java程序包括两个文件:一个JAR文件,一个JAD文件。JAR文件是安装的数据文件,JAD文件是安装的信息文件。 JAD文件里面包含了程序的大小、名称、类型、安装路径、版权等等信息,我们可以通过修改JAD文件,改变Java程序的安装路径。在实际的安装过程中JAR文件是必不可少的,JAD文件要不要都没关系,但是如果没有JAD文件的话,那么你的Java程序就只能装在“应用程序”里面了。 JAR文件是Java的一种文档格式,JAR文件非常类似ZIP文件,也是一个压缩文件。JAR文件与ZIP文件惟一的区别就是在JAR文件的内容中,它包含了一个meta-inf/manifest.mf文件,这个文件是在生成JAR文件的时候自动创建的。需要注意的是,JAR文件不需要进行解压缩,如果把文件解开反而会造成错误。 JAD(Java Application Descriptor)文件是一个外部(相对JAR文件)描述文件,而Manifest.mf是一个内部列表文件。他们对于AMS的运行都起着至关重要的作用。 虽然它们的命名或者说文件类型都比较让人费解,不过,实际上它们也不过是单纯的文本文件,形式上非常相似,都是:“属性名称:属性值”。 这些属性主要包括:  属性名称 属性说明 Manifest.mf JAD MIDlet-Name MIDlet Suite的名称 必需 必需 MIDlet-Version MIDlet Suite的版本号 必需 必需 MIDlet-Vendor MIDlet Suite的作者 必需 必需 MIDlet-n 属于该MIDlet Suite的每一个MIDlet都应独立定义一个 必需 必需 MicroEdition-Profile MIDlet Suite所需简表版本 必需 必需 MicroEdition-Configuration MIDlet Suite所需配置版本 必需 必需 MIDlet-Jar-URL 对应JAR文件的下载地址 - 必需 MIDlet-Jar-Size JAR文件大小,单位:字节 - 必需 MIDlet-Description MIDlet Suite的描述 可选 可选 MIDlet-Icon MIDlet Suite的图标路径 可选 可选 MIDlet-Info-URL MIDlet Suite的信息路径 可选 可选 MIDlet-Data-Size MIDlet Suite用于持久性存储所需的最小字节数 可选 可选 MIDlet-Permission(MIDP2.0) MIDlet Suite需要访问的受限API的许可 可选 可选 MIDlet-Permissions-Opt(MIDP2.0) 定义那些访问受限API非关键的许可 可选 可选 MIDlet-Push(MIDP2.0) Push注册 可选 可选 MIDlet-Install-Notify(MIDP2.0) 定义接收MIDlet Suite安装状态的URL 可选 可选 MIDlet-Delete-Notify(MIDP2.0) 定义接收MIDlet Suite删除报告的URL 可选 可选 MIDlet-Delete-Confirm(MIDP2.0) MIDlet Suite确认删除的提示信息 可选 可选 根据MIDP的规定,代表MIDlet Suite的JAR文件内部要有一个列表文件,且文件名为Manifest.mf。 JAD文件虽然是可选的,但是也很有用武之地,特别是,在OTA模式下,在MIDlet Suite安装到移动设备之前,AMS首先会读取JAD文件的内容,分析MIDlet Suite是否与设备实现兼容,最典型的就是分析配置和简表的版本是否匹配。如果不兼容,那么AMS就会拒绝安装。这样也符合用户的需求。 同时,使用JAD文件的另一个优势是,可以自定义属性,比如说定义一个web服务的请求URL,当URL改变时,我们就不需要改变JAR的内部文件,来适应变更。 MIDlet-1: Query, Query.png, client.QMIDlet …… queryURL: http://localhost:8080/QServlet/query.do 仔细观察上表,对于Manifest.mf文件和JAD文件来说三个属性是必须的:MIDlet-Name,MIDlet-Version和MIDlet-Vendor。三者属性值必须保持一致,否则AMS将不会下载和安装这个MIDlet Suite。而对于MIDlet-n,MicroEdition-Profile和MicroEdition-Configuration属性,实际上并不需要在JAD文件和Manifest.mf文件中重复定义。 另外,当用户安装MIDlet Suite的时候,AMS会鉴别正在安装的MIDlet Suite是被信任的(Trusted)还是非信任的(Untrusted)。根据MIDlet Suite类型的不同,AMS处理在这两个文件中被重复定义的属性也采取了不同的方法: · 当为Trusted时:如果定义的属性在Manifest.mf和JAD文件中都出现,那么它们必须保持一致。 · 当为Untrusted时:如果定义的属性在Manifest.mf和JAD文件中都出现,那么MIDlet在运行时期所取得属性值则以JAD文件中的定义的为准。 属性定义知道了,那么怎么来获取它们的属性值呢?其实很简单,上面所提到的属性值,几乎所有都可以通过javax.microedition.mdilet.MIDlet.getAppProperty()这个方法来获取,唯独MicroEdition-Configuration和MicroEdition-Profile需要是通过java.lang.System.getProperty()来获取的。 最后还有一点值得指出的是:中文问题。把在Manifest.mf和JAD文件中出现的中文字符转换为Unicode的正则表达式可以有效防止乱码。 转换的方法是利用JDK所提供的native2ascii.exe工具。 CMD命令: native2ascii 源文件.txt 目标文件.txt 转换前:MIDlet-1: 中文字典, DicMIDlet 转换后:MIDlet-1: \u4e2d\u6587\u5b57\u5178, DicMIDlet 这并不局限于JavaME,虽然稍微麻烦了一点,但这是一个比较通用和实用的方法。 2. JAD和程序安装 2.1 远程安装 1) JAR是必需的。 2) JAD文件引导安装可以实现认证。只有JAR安装时,由于缺乏证书信息,只能非信任域安装。 3) JAD修改配置参数中JAR的URL为远程URL可以实现在线安装。也就是只有JAD时,配置了JAD路径为远程URL也可实现安装。但是远程JAR的文件大小以及类型需要和JAD中配置一致。 远程实例: JAD参数配置 MIDlet-1: BrowserMainMIDlet,,src.BrowserMainMIDlet MIDlet-Jar-Size: 8574 MIDlet-Jar-URL: http://99.1.101.199/cmbWebBrowser.jar MIDlet-Name: cmbWebBrowser Midlet Suite MIDlet-Permissions: javax.microedition.io.Connector.http,javax.microedition.io.Connector.socket,javax.microedition.io.Connector.file.read,javax.microedition.io.Connector.file.write MIDlet-Vendor: Midlet Suite Vendor MIDlet-Version: 1.0.2 MicroEdition-Configuration: CLDC-1.1 MicroEdition-Profile: MIDP-2.0 红色部分可见JAR路径已经配置为远程路径 在实际测试过程中,需要注意要对IIS中MIME进行配置。在没有进行过相关配置的时候,运行JAD进行安装会报错获取到的文件类型不符合。在确认JAR没有问题以后,查找资料得知,是因为MIME需要进行如下配置: 在iis增加如下两个mime: Jad text/vnd.sun.j2me.app-descriptor Jar application/java-archive 经过JAD配置以及IIS中MIME配置后,运行JAD可以实现远程安装,成功。 2.2 扩展知识:MIME MIME(Multipurpose Internet Mail Extensions,多用途Internet邮件扩展)是创建用于电子邮件交换,网络文档,及企业网和Internet上的其他应用程序中的文件格式的规范。最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型。 由于MIME类型与文档的后缀相关,因此服务器使用文档的后缀来区分不同文件的MIME类型,服务器中必须定义文档后缀和MIME类型之间的对应关系。而客户程序从服务器上接收数据的时候,它只是从服务器接受数据流,并不了解文档的名字,因此服务器必须使用附加信息来告诉客户程序数据的MIME类型。 服务器在发送真正的数据之前,就要先发送标志数据的MIME类型的信息。 简单来说,服务器通过MIME信息高速客户程序发送的文件类型是什么,客户程序从服务器发送来的MIME信息得知接收到的数据流是什么文件类型,然后调用对应的应用程序进行处理。 3. 程序自动升级实现 已经实际测试过,可以实现。 具体方法是 1) 程序: 在主MIDlet启动的时候,访问服务器获取服务器的版本信息;如果服务器版本和当地版本不一致,就向用户提示是否升级;用户选择升级以后,退出当前程序,远程获取jad文件进行安装;安装过程中从jad定义的远程url获取JAR。 2) 安装文件: jad中需要修改参数MIDlet-Jar-URL为远程URL。同时提供一个记录了版本信息的文件。 升级程序代码如: 在主MIDlet中,进入程序时判断版本: public void startApp() { String version_current=this.getJadVersion("MIDlet-Version"); WorkThread wt=new WorkThread("http://99.1.101.199/version.txt",Display.getDisplay(this)); String version_remote=wt.Getresponse(); if(version_current.equals(version_remote)) { UpdateForm uf=new UpdateForm(this,version_current,version_remote); display.setCurrent(uf); } else { QueryForm qf=new QueryForm(this,version_current); display.setCurrent(qf); } } 在有新版本的时候,显示升级界面提示下载。 在升级界面,显示版本信息,并让用户选择是否升级。当用户选择了升级以后,进行远程获取JAD文件并安装升级。如下: String url = "http://99.1.101.199/cmbWebBrowser.jad"; try { midlet.platformRequest(url); } catch (ConnectionNotFoundException ex) { ex.printStackTrace(); } midlet.notifyDestroyed(); 主要为使用platformRequest方法来调用外部应用处理JAD文件,从而实现远程获取JAD文件安装。同时,又由于获取到的JAD中定义了需要使用的JAR文件URL为远程URL,于是又从远程下载JAR,最终实现安装。 程序安装会需要退出当前程序,这也是实现完全安装的唯一方法。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服