动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.JAgileSearch 1.0 alpha Done.
.用Eclipse进行可视化Java界面设计.
.基于Java的IDEA加密算法探讨.
.Hibernate 3 Annotations 进阶.
.软件测试认识中的误区.
.如何限制用户目录和硬盘使用空间.
.Java新手入门学习——Eclipse快捷.
.J2EE 组件开发:会话EJB.
.Java的网络功能与编程 一.
.Java基础知识——JNI入门介绍(上.
.谨慎使用单精度/双精度这两数值类.
.如何避免程序中的死锁.
.Java语言深入:对 java.lang 的研.
..NET程序中对连接池的管理方法.
.常见Java开发工具的特点比较(1).
.Java性能的优化.
.Java有能力抵挡LAMP的进攻吗?.
.Jive源代码研究.
.教您如何成为 EJB 专家详解系列连.
.Java Socket编程(三).

Push信息自动启动JAVA移动程序

发表日期:2008-1-5 |


摘  要
有些时候,对于一个企业级移动应用程序,从服务器将信息推向移动设备,并且自动激活一个已安装的移动应用程序使其进行必要的处理是非常重要的。由短信服务(SMS)作为推信息的协议,使用push注册机制可以让使用Mobile Information Device Profile 2.0的Java微小版本应用程序拥有这一特征。

版权声明:任何获得Matrix授权的网站,转载时请务必保留以下作者信息和链接
作者:Srijeeb Roy ;magic003(作者的blog:http://blog.matrix.org.cn/page/magic003)
原文:http://www.matrix.org.cn/resource/article/44/44449_Push+JAVA+Mobile.Html
要害字:Push;JAVA;mobile

移动技术日渐流行。Java微小版本,或者叫Java ME(Sun的J2ME平台的新名字),是最流行的开发移动应用程序的技术之一。使用Java ME,我们可以在使用JVM或KVM的手持设备上运行多种无线应用程序。

Connected Limited Device Configuration (CLDC)被包含在Java ME中,它是面向那些只拥有有限资源,使用KVM的设备。同样,Mobile Information Device Profile(MIDP)也被包含在Java ME中,这是一个为了在手机上运行应用程序的基于CLDC的profile。运行在移动设备中的应用程序模块叫做MIDlet,是一个MIDP应用程序。一个MIDlet主要是一组有序运行的类,并且它们由运行在移动设备中的应用程序治理软件(AMS)所控制。

MIDP的最新版本(2.0)引入了很多新的特征来帮助开发者建立健壮的企业级应用程序。其中一个比较重要的特征就是push注册机制。在Java ME应用程序中,我们有时候需要从服务器推数据,并在设备上自动启动一个移动应用程序,而不需要由用户明确的启动设备。设想一种情形,当一个针对他/她的名字的工作条款被建立时,用户必须能自动得到通知,并且必须尽快地对此工作条款做出反应。Java ME的push注册机制能够很轻易地将信息推向一个Java ME应用程序,并自动启动该程序。在这篇文章中,我将向你展示如何将push注册机制特征添加到你的移动应用程序中。

Push注册机制的行为可以被描述为如下三个步骤:

1.MIDlet在移动设备中注册一个连同协议名称的端口,假如任何信息到达指定的端口,并且使用相同的协议,那么AMS就将它转交给MIDlet。注册使用Java ME应用程序描述符(JAD)文件静态的完成。程序也能使用应用程序内置的API执行动态注册。

2. 从服务器,信息被发送到特定的移动设备,使用MIDlet应用程序注册监听的协议和端口。

3. 在信息被传递到移动设备后,AMS调用注册了监听此端口和协议的MIDlet应用程序。一旦信息被转交到MIDlet,那么处理信息就是此应用程序的责任了。典型的,根据信息的信息的内容,一个应用程序会选择打开一个屏幕,并答应用户与服务器进行一些事务。

在这篇文章的例子中,为了从服务器推信息,我们将使用一个GSM(移动通信全球系统)调制解调器。图1较高层次地描述了我们将在此文中实现的场景。

Push信息自动启动JAVA移动程序(图一)
图1. 从服务器push SMS消息到移动设备的高层场景

在jad文件中,每一个push注册条目都包含如下信息:MIDlet-Push-<n>: <ConnectionURL>, <MIDletClassName>, <AllowedSender>。

MIDlet-Push-<n>:push注册属性名称。MIDlet套件中可以包含多条push注册。<n>的数值从1开始,并且对于附加的条目必须使用连续的序数。第一个发现的缺失条目将中止列表。任何剩余的条目都会被忽略。
ConnectionURL:被Connector.open()使用的连接字符串。
MIDletClassName:负责连接的MIDlet。指定的MIDlet必须使用MIDlet-<n>记录在描述文件或jar文件的manifest中登记过。
AllowedSender:一个指定的过滤器,        它将限制哪些发送者能够能正当启动请求的MIDlet。

MIDP 2.0 规范定义了数据报和socket带内连接的语法。当其他规范为其他连接类型定义push 语义时,它们必须既定义过滤器域期望的语法,又定义连接URL字符串的期望格式。

在jad文件中,一个push注册的典型例子,使用socket连接,类似于如下:
MIDlet-Push-1: socket://:77, com.sample.SampleApplication, *.
这个示例描述符条目在77端口处保存一个流套接字,并且答应所有的发送者。

从服务器推信息到移动设别会带来一些问题:假如我们想发送信息到一个在指定端口注册了监听流套接字的特定设备,我们必须知道那个移动电话的无线网络IP。因为在无线网络中,很多手机不使用始终连接环境(有时候,提供商不支持设备中网络中的静态IP),发送信息到设备是有问题的。假如我们不知道设备的无线IP,我们将不能使用套接字连接从服务器发送信息到设备。

短信服务(SMS)在这种情况下派上了用场。使用SMS,我们指定目标设备的电话号码;因此在这种情况下,我们不需要知道设备的IP地址。但是,使用SMS作为触发器同样会带来一些问题:因为MIDP2.0规范只定义了针对数据报和套接字带内连接的语法,而没有针对SMS连接的,所以不保证所有支持MIDP2.0的设备都能使用SMS作为触发器来进行push注册。但无线消息API(WMA1.1)-一个在MIDP上能支持SMS的的可选包-现在得到很多移动设备的支持,所以有更大的可能性,SMS作为push注册机制的触发器将得到很多设备的支持。对于这篇文章,我使用Nokia 6600移动电话,它是支持SMS作为push注册机制的触发器的。

另外,从服务器发送一条SMS消息到设备不是简单直接的,因为有很多途径存在。SMS服务提供商提供API(或者暴露服务URL),通过这些API你能从你的服务器端应用程序发送消息到你指定的移动电话上。但这种方法依靠于SMS服务提供商和它非凡的计划。可选的方式是使用一个GSM调制解调器,这样你需要使GSM调制解调器与你的服务器端应用程序进行交互。在这篇文章中,我将使用一个开源的产品,SMSLib for Java V1.0(原名jSMSEngine),它能使GSM调制解调器与你的Java服务器端程序进行交互。

另一个在此需要注重的要点是一条简单的SMS消息将不会激活MIDlet。我们必须发送SMS消息到MIDlet注册监听的特定的端口。因此被用来发送SMS消息的软件(或SMS服务提供商)必须能够将它发送到设备指定的端口。SMSLib for Java v1.0 支持这一功能。

当我们使用GSM调制解调器方案,我们必须了解GSM调制解调器将在内部使用SIM(订户识别模块)卡来发送SMS消息。SIM卡依靠于某个移动服务提供商。因此每条SMS短信将带来与从常规GSM移动电话发送消息同样的花费。正相反,对于一个企业级应用(依靠于服务计划),通过提供商的SMS网关发送批量SMS消息会被证实更节省开销。但是,假如应用程序不需要发送大量SMS消息来出发MIDlet,那么GSM调制解调器方案会是有效的开销,并能从移动服务提供商那里取消非凡的批量SMS服务依靠。

虽然我建议为了近期的产品使用购买一个单独的GSM调制解调器,但是测试此行为不要求够买。通常地,很多GSM移动电话模型带有一个内置的GSM调制解调器。那些移动模型中的任何一个都能够作为GSM调制解调器,来代替单独的调制解调器。在这篇文章中,我使用另外一个Nokia 6600移动电话,而不是一个单独的GSM调制解调器,因为Nokia 6600有一个内置的GSM调制解调器。

现在,让我们开发一个实例程序,是我们能够从一个Java服务器端应用程序发送一条SMS消息到一个移动电话的指定端口,并自动启动移动设备中的一个MIDlet。

使用push注册特征开发客户端MIDlet

为了开发客户端,我们使用Sun Java Wireless Toolkit(原名为J2ME Wireless Toolkit)。我使用版本2.2。这个产品是免费的,可以从Sun的网站下载。为了安装和运行此工具包,你必须在你的机器上装有J2SE 1.4.2_02或更新的版本。

我使用windows 2000 Professional 操作系统。

安装Sun的工具包后,按照如下描述的步骤:

1.从开始菜单打开KToolBar:选择程序,然后J2ME Wireless Toolkit 2.2,然后KToolbar。将会打开一个应用程序窗口,如图2所以。

Push信息自动启动JAVA移动程序(图二)
图2. 打开KToolbar

2.现在,在刚才打开的窗口中点击新建工程图标。会打开一个弹出窗口;在那里你可以指定工程名称和MIDlet类名。在工程名称中输入MySamplePushRegistryProject,在MIDlet类名中输入com.sample.MySamplePushRegistry。

Push信息自动启动JAVA移动程序(图三)
图3. 新建一个工程

3.在步骤2后,会自动出现另一个弹出窗口,它将答应你设定项目的其他设置。确保你在API 选择标签中。在此标签中,从目标平台下拉菜单中选择JTWI(假如还没有选择)。同样确保CLDC 1.0单选按钮被选中。不要钩选Mobile Media API多选框(因为不会使用任何跟多媒体有关的API)。请参考图4。

Push信息自动启动JAVA移动程序(图四)
图4. 设置API首选项

4.现在进入push注册标签。点击添加按钮。将会出现一个弹出窗口。在连接URL域中输入sms://:50001,在类域中输入com.sample.MySamplePushRegistry,在答应发送者域中输入*。请参考图5。

Push信息自动启动JAVA移动程序(图五)
图5 设置push注册的属性

5.在步骤4后,一个条目将会被加入到父窗口中。如图6所示。

Push信息自动启动JAVA移动程序(图六)
图6. 设置push注册的属性(续)

6.现在进入许可标签。单击添加按钮。从许可树中选择javax/microedtion/io/Connector/sms并单击OK。重复相同        的步骤来添加许可javax/wireless/messaging/sms/receive 和 javax/microedtion/io/PushRegistry。

7.在步骤6后,三项许可将被添加到应用程序中。如图7所示。

Push信息自动启动JAVA移动程序(图七)
图7. 添加许可

8.现在进入用户定义标签。这里,我们添加用户定义的变量,这将包含SMS端口。从我们的程序,我们查阅此用户定义变量来读取SMS端口。在此标签中,单击添加按钮。打开一个弹出窗口。输入SMS-Port作为属性名称。选择OK。出现了最初的弹出的窗口。输入50001作为SMS-Port的值。如图8所示。

Push信息自动启动JAVA移动程序(图八)
图8. 添加定制属性SMS-Port

9.现在,在设置窗口中单击OK。这个动作将带回到KToolbar。

10.在步骤9后,假如你观察由以上步骤产生的jad文件,C:/WTK22/apps/MySamplePushRegistryProject/bin/MySamplePushRegistryProject.jad(假设J2ME Wireless Toolkit 2.2被装在目录C:/WTK22中),你会找到在前面步骤中设定的完整配置。所有条目中最重要的一个如下:MIDlet-Push-1: sms://:50001, com.smaple.MySamplePushRegistry, *. 此条目确保你的应用程序监听50001端口上的SMS消息。

现在,让我们着眼于MIDlet应用程序的代码。这里,我仅仅提供MIDlet的一部分代码片断。 请看资源来下载在此应用程序中使用的所有代码。

public class MySamplePushRegistry extends MIDlet
   implements CommandListener, Runnable, MessageListener {
  
   //....
  
   public void startApp() {
      smsPort = getAppProperty("SMS-Port");
      String smsConnection = "sms://:" + smsPort;
      if (smsconn == null) {
         try {
            smsconn = (MessageConnection)
               Connector.open(smsConnection);

            smsconn.setMessageListener(this);
         } catch (IOException ioe) {
            ioe.printStackTrace();
         }
      }
      display.setCurrent(resumeScreen);
   }
   public void notifyIncomingMessage(MessageConnection conn) {
      if (thread == null) {
         thread = new Thread(this);
         thread.start();
      }
   }    
   public void run() {
      try {
         msg = smsconn.receive();
         if (msg != null) {
            if (msg instanceof TextMessage) {

               content.setString(((TextMessage)msg).getPayloadText());
            }
            display.setCurrent(content);
         }
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
   //other methods to follow
}


上一篇:用Java自制手机联网游戏 人气:576
下一篇:实例讲解移动QQ在线平台(二) 人气:489
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成