注意: 这部分假设已经对j2me至少有一点熟悉。
前面,我曾提起用jcookiemicro库在j2me平台的移动设备上建立与网络应用程序交互的客户系统的可能性。我仍然在开发jcookiemicro库。它的结构及用法将与jcookie库类似,除了urlconnection,jcookiemicro库将用midp httpconnection对象。这部分描述了在移动应用程序(在我们的案例midlets中)使用成熟的cookie操作的好处。
让我们先练习在j2me应用程序中状态管理常用的方法。诺基亚论坛一篇命名为“a brief introduction to.networked midlets”(2002年三月)的论文描述了一个方法。论文提出作为一个url重写机制的变异工作的机制:一个在网络服务器上的servlet站点操作所有的商务逻辑和使用通常的http报头传送状态信息要胜于cookies。midlet简单地作为一个用户界面,传递用户输入到servlet并显示结果。(更多的关于在j2me应用程序上的状态管理的url重写及其他方法,请读“track wireless sessions with j2me/midp”,michael juntao yuan和ju long著(javaworld,2002年四月).)
使用上述方法,这有与此讨论相关的应用程序的解决方法,一是象一个小型网络浏览器一样与网络服务器或应用程序交互:
· midlet从用户那里收集相关输入(比如,一个hotmail用户名和密码)
· midlet传送输入到servlet
· servlet用输入与网络服务器或应用程序交互(比如,hotmail网站)
· servlet传送结果到 midlet(比如,一个新消息列表)
· midlet向用户显示结果
在上述解决方法中,通用http报头维护一个midlet和servlet间的会话。因此,servlet和midlet 都包含执行会话管理的逻辑。这证明前面讲过的不受欢迎的同一原因:通用代码很容易被破坏,甚至成为常规管理变化所带来的必然结果,比如服务器升级。这种方法的另一个缺点:它要求有一个在目标网络应用程序(如hotmail)和移动应用程序之间的中间件。
对于上述方法你可以用两种办法替代jcookiemicro:
1. 将商务逻辑转移到移动应用程序上并完全消除中间servlet。在移动客户系统上用jcookiemicro进行会话管理。
2. 将商务逻辑保持在中间servlet上,但除去通用报头,并用jcookiemicro进行透明坚固的会话管理。
修改已存在的应用程序第二种方法证明更适合。第一种方法导致成本的降低和移动应用程序开发更轻松,因为它除去了服务器端资源的开销。下面的应用程序使用了第一种方法:
· midlet从用户处收集相关输入
· midlet直接连接到目标网络服务器并与之交互
· midlet向用户显示结果
第一种方法同时也消除了将商务逻辑保持在servlet的如下一些缺点:
· 一个servlet容器故障会导致整个应用程序离线,即使目标网络服务仍在运行。
· 应用程序被限制仅作为servlets展开。
在移动应用程序中进行状态管理的另一个方法在sun无线java开发者的一篇不依赖风俗权威的文章“session handling in midp”(2002年一月)中有描述,但包括在移动应用程序中写操作cookies的通用代码。前面关于写通用代码的缺点的讨论及使用jcookie(micro)的优势请看上述命为“在java中的状态管理”部分)。
自从pjae提供连同一些java2类的完整jdk 1.1.8平台,即使在工作中的jcookiemicro,今天你也能在personaljava application environment (pjae)下的应用程序中使用jcookie库。。
jcookie局限性
jcookie库还有一些局限性:
· 当cookie解析逻辑及安全标准插入到已存在的api(用cookieparser)时,没有一个对于核心数据结构和cookie类有用的机制。
· 没有作性能测试。
你可以从http://jcookie.sourceforge.net/得到jcookie最近的版本以及项目源代码。有一些项目是为未来版本计划的包括:
· 雅加达项目log4j logging api的使用提供了用户可配置的记录和调试。
· 用一个用户定义的控制器可简单修改jcookie行为,这可以决定解析一单个cookie是否失败将导致致命错误。
这些及其他部分的执行大量依赖于你的反馈。请在sourceforge.net的jcookie项目站点上使用邮件列表、bug追踪、特征请求等等。
取得cooking
这里提到的jcookie库能帮助减轻客户端应用程序状态开发的难度。作为前面曾提到的,其他库的执行类似于函数,但这些结构已和存在的本地java.net api远无关系。另外,没有api/库单独从事cookie操作。其他的库将cookie操作合并作为一个完整的java 网络客户结构的一部份,结果,使用这些库涉及了整个新的学习体系。
jcookie库接近于存在的java.net对象。在普遍的urlconnection或httpconnection两个方法调用中状态管理十分简单。你可以通过一个有用的httpredirecthandler类使得状态管理更简单。在处理客户端应用程序开发者时jcookie努力把浏览器作为cookie管理器。这能成功走多远只能由你的反响决定。我将感激任何你所分享的提示或建议。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器