基于地区呈现表示页面的系统以及方法

文档序号:6570628阅读:434来源:国知局

专利名称::基于地区呈现表示页面的系统以及方法
技术领域
:本发明涉及通信系统领域,更具体地,涉及电子邮件(email)通信系统以及有关方法。
背景技术
:电子邮件(email)业已成为商业和个人通信不可或缺的组成部分。就这点而论,许多用户同时拥有多个用于办公和日常生活的电子邮件帐户。此外,随着可以发送和接收电子邮件的移动蜂窝和无线局域网(LAN)设备的逐渐普及,大量用户开始以无线方式访问存储在不同电子邮件存储服务器(如,公司电子邮件存储服务器、Yahoo、Hotmail、AOL等)上的邮箱中的电子邮件。然而,跨多个邮箱并通过无线网络进行邮件分发和同步是可能是极具挑战性的,特别是当针对大量用户大规模实现这一功能时尤其如此。例如,不同的电子邮件帐户的配置可能各不相同,并可能配置以不一致的访问标准。此外,由于电子邮件接收于无线通信设备,因此原始邮箱内仍存在电子邮件的副本,这可能会使用户难于将其电子邮件安排有序。在Mousseau等人的美国专利6,779,019号中公开了一种特别有优势的"推送(pmh)"式电子邮件分发和同步系统,该专利已被转让给目前的受让人,此处将其全部内容合并于此以作参考。该系统一旦检测到一个以上用户定义的事件触发的发生,就把用户选定的数据项从主机系统推送至用户的移动无线通信设备。然后,用户可以把数据项移动(或归档)至存储于移动通信设备内的文件夹结构内的特定文件夹中,或者可以对数目项执行其它系统操作。接着,运行于设备和主机系统上的软件将设备上的文件夹结构同主机系统的文件夹结构进行同步,然后,在设备上对数据项执行的任何操作都被自动复制,对存储在主机系统上的相同数据项执行,因此无需用户以手工方式在主机系统上重复那些已执行于移动无线通信设备上的操作。前述系统有利地为无线电子邮件通信设备用户对其电子邮件消息的组织和管理提供了极大的便利。然而,随着电子邮件使用的日益普及,电子邮件分发和同步系统可能需要其他便利和高效的特征。把应用数据转换为表示信息将会提高效率。更具体地,当不同语言可以使用不同模板时,某些WAP和HTML输出可以针对性地基于用户区域(locale)。可以呈现以不同语言表示的页面(page)的本地化版本,并且可传回信,以便使电子邮件系统中的不同语言与之一致。2005年9月27日提交的、统一分配的美国专利申请序列号60/720,899允许可扩展样式表转换(XSLT)模块呈现图像和文本,但是需要基于区域进行更有力的控制。当结合附图加以考虑时,根据以下详细说明,不同实施例的其它目的、特征以及优势将变得显而易见,附图中图1是直接访问电子邮件(email)分发和同步系统的示意方框图。图2是图l系统的直接访问代理的用户接口组件的典型实施例的示意方框图。图3是图1系统的Web客户端引擎的典型实施例的示意方框图。图4是用于图1系统的移动办公平台引擎机的典型实施例的示意方框图。图5是图1系统的数据库模块的典型实施例的示意方框图。图6是同图2所示的直接访问代理的用户接口组件的实施例类似的另一实施例的示意方框图。图7是一幅方框图,示出了非本地化逻辑结构和用于一些已知系统中的本地化/运行时结构间的对照。图8是用于一些已知系统中的本地化模板与品牌化本地化模板的局部结构视图。图9A是一幅顺序图,详细说明了调用扩展对象以获取本地化字符串的处理流程。图9B是一幅顺序图,详细说明了调用扩展对象以执行XSLT模板的图10是HTML代理的局部结构视图,在如图所示的结构中HTML代理具有不同的XSL文件。图11是用于模板呈现(转换)的系统中的不同组件的方框图,其中模板呈现(转换)用于将应用数据转换为表示信息。图11A是可用于模版呈现(转换)的组件的另一示例的方框图。图12是资源部署包的高层方框图,并且示出了描述符、法语、德语子集以及运营商资源。图13是可涉及资源部署的组件的高层方框图,以及资源推送的高层处理流程。图14是一幅方框图,示出了可用于一非限制性实施例的部署服务。图15是一幅示意方框图,示出了可与图1所示的直接访问系统一起使用的典型移动无线通信设备。具体实施方式以下将参照示出了优选实施例的附图,对不同实施例进行更加充分的说明。然而,还可以提出大量不同的形式,因而所述实施例不应被理解为局限于此处所阐述的实施例。相反,提供这些实施例是为了使本公开更加透彻全面,并充分地将公开范围传达给本领域技术人员。在整个说明中,相同的数字表示相同的单元。系统呈现表示页面。服务器包括可扩展样式表转换(XSLT)模块。存储介质包含图像和文本至少一项。XSLT模块用于调用XSL扩展,并基于非本地语言需求将图像和文本至少一项呈现为表示页面。表示页面可以基于区域被呈现为本地化内容。资源束(ResourceBundle)可包含本地化图象和文本至少一项,并被呈现为XML文档,XSLT模块对XML文档进行处理,从而产生可以用当地的语言表示的本地化内容。在另一方案中,XSL扩展可以作为JAVA扩展来实现,并且XSLT模块可以呈现HTML或WAP输出。服务器可以作为web服务器或电子邮件服务器予以实现。服务器还可以用于存储多个资源部署包(RDP's),各RDP包括可以基于区域进行部署的部署内容。在又一方案,该系统可在无线通信系统中呈现表示页面。移动无线通信设备可操作用于通过无线通信网络与包括可扩展样式表转换(XSLT)模块的移动办公平台进行通信。存储介质包含图像和文本至少一项。XSLT模块用于调用XSL扩展,并基于非本地语言需求在移动无线通信设备上将所述图像和文本至少一项呈现为表示页面。还提出了一种方法方案。首先参考图l,直接访问(DA)电子邮件分发和同步系统20支持对不同邮件源的直接访问,使消息可以从源邮箱直接传送至移动无线手持设备。因此,对于集成的外部源邮件账户,无需使用不同的邮件存储器,并且在本地电子邮件存储器中也不需要电子邮件的永久副本。虽然此图将对象描绘为在功能上相互独立,但这种描述只以说明为目的。对所属领域技术人员而言,显而易见,可以将图中所示的对象任意合并,或划分成独立的软件、固件或硬件组件。此外,同样,对所属领域技术人员而言,显而易见,无论如何对其进行合并与划分,这些对象既可实现于同一计算设备,又可任意分布于由一个以上的网络所连接的不同计算设备之上。直接访问系统20使电子邮件用户能够将电子邮件从第三方电子邮件服务推送至各种移动无线通信设备25。用户无需创建手持电子邮件账户以获取对现有外部电子邮件账户的直接访问。直接访问系统20无需执行某些现有系统中所采用的汇聚过程,就可以正常工作,在所述汇聚过程中,将电子邮件从多个不同的源邮箱汇聚到一个单独的目标邮箱中。换言之,无需将电子邮件存储于中间目标邮箱,而可以方便地从源邮件存储器直接访问电子邮件。如图l所示,直接访问系统20说明性地包括Web客户端(WC)引擎22和移动办公平台(MOP)24。Web客户端引擎22和移动办公平台24协同工作,使用户可以比如通过一个以上的无线通信网络27从移动无线通信设备25直接访问其电子邮件。Web客户端引擎22和移动办公平台24既可位于相同的位置,也可位于不同的位置,并实现于一个以上的服务器中。Web客户端引擎22说明性地包括下面将予以进一步详细讨论的端口代理30,用于通过无线通信网络27同无线通信设备25进行通信;工作者32;监管员34;以及附件服务器36。报警服务器38以虚线显示,并且在一优选实施例中不使用报警服务器,但是在其他实施例中,报警服务器可以作为系统的一部分。移动办公平台24说明性地包括:DA代理40、代理应用程序接口(API)42以及同DA代理协同工作的高速缓存器44。移动办公平台24还说明性地包括下面将予以进一步详细讨论的负载平衡及高速缓存器(LBAC)模块46、事件服务器48、通用代理(UP)伺服小程序(Servlet)54、AggCron模块56、移动办公平台(MOP)引擎58以及数据库(DB)引擎60。最近最少使用的(LRU)高速缓存器(cache)41高速缓存最新消息,并可以释放最近最少使用的消息和对象。监管员34对其从直接访问代理40接收到的新邮件通知进行处理。然后,监管员34根据其接收到的最近的UDP心跳,以用户数据报协议(UDP)分组的形式向负载最小的工作者32分配任务。在本说明中,心跳是一种用于监控服务器状态的工具。此外,监管员34将从直接访问代理40接收到因新账户或变更账户向移动无线通信设备发送服务簿的新服务簿请求。服务簿可以是包含全部当前已定义的服务记录的类。该类可用于维护一组关于设备的信息,比如诸如账户的电子邮件地址之类的连接信息或服务。工作者32是位于监管员34和端口代理30之间的中间处理代理,并负责Web客户端引擎22中的大多数处理。工作者32通过直接访问代理从通用代理54获取电子邮件,并用压縮多用途互联网邮件扩展(CMIME)将邮件格式化为一种多用途互联网邮件扩展,并将其发送至端口代理30,以做进一步的处理。工作者的职责包括下列任务(1)发往手持设备的消息以及从手持设备接收到的消息;(2)消息应答、转发以及请求更多内容;(3)空中(overtheair)文件夹管理操作(OTAFM);(4)附件阅览;以及(5)服务簿。端口代理30充当基础设施和Web客户端引擎22其余部分间的传输层。负责向移动无线通信设备发送并从移动无线通信设备接收分组。为了用一个设备支持不同的集成邮箱,可以使用一个以上的服务簿,并且每个服务簿可以同一个集成邮箱相关联。端口代理30可以包括一个连接至中继的服务器中继协议(SRP)连接,但也可以处理多个SRP连接,且每个连接可以具有同服务簿相关的、唯一的全局唯一标识符(GUID)。附件服务器36为来自工作者32的文件/附件转换请求提供服务。直接访问代理40提供Web的分布式创作与版本管理(WebDAV)接口,工作者32利用该接口访问账户和邮箱信息。这提供了在远程服务器上创建、改变并移动文档的功能。通常,直接访问代理40向其客户端提供一个异步接口。LBAC模块46为通知服务器和Web客户端引擎22组件所用,以定位用于处理请求的适当的DA代理。通用代理伺服小程序54将对分散邮件存储器的访问抽象为一个公共协议。事件服务器48对来自公司服务器52和/或邮件服务供应商50的新消息通知做出响应,所述新消息通知可以通过比如互联网40予以接收。通知由AggCron模块56和事件服务器48传送至直接访问代理40,以便其可以发起对邮件服务供应商50和/或公司服务器52的源邮箱51、53中新邮件的查看。代理API可以是简单对象访问协议(SOAP)守护进程42,并且是数据库60的主要接口,数据库60是移动办公平台24的主要的数据存储器。AggCmn模块56也可以周期性地发起新消息查询。图2是一幅高层方框图,示出了直接访问代理40的用户接口组件。更具体地,直接访问代理40说明性地包括标识符模块72,所述标识符模块72带有适于不同通信格式的各种下行代理模块,如无线应用协议(WAP)代理模块74和超文本标记语言(HTML)代理模块76。毫无疑问,所属领域技术人员将意识到,还可以使用适于其他通信格式的其他类型的代理模块。标识符模块72提供针对于直接访问系统20的集中式认证服务和其他服务。可以在ID服务和直接访问系统20间提供认证握手,以确保在用户被允许访问直接访问系统20前,具有适当的凭证。可以无需用户重新输入任何登录凭证就能够从管理Web客户端切换到直接访问系统,或从直接访问系统切换到管理Web客户端。任何Web客户端和直接访问都可以代表用户共享会话管理信息。WAP代理74为移动办公平台24提供了用于配置源邮箱的、基于无线标记语言(WML)的用户接口。HTML代理76在MOP24中提供用于对源邮箱进行配置的基于HTML语言的用户接口。代理API42(SOAP守护进程)是数据库60的主要接口。引擎58是一个协议转换器,连接至源邮箱用于对配置参数加以验证。数据库60是移动办公平台24的主要的用户数据存储器。图3、4和5分别示出了Web客户端引擎机80(图3)、引擎机82(图4)以及数据库计算机84(图5)。Web客户端引擎机80说明性地包括监管员34、工作者36、以及端口代理38。中继86使用GUID与端口代理38协同工作。引擎机82说明性地包括直接访问代理40、HTML代理76、WAP代理74、PDS模块88、UP伺服小程序54、LBAC模块46、发送邮件模块卯、安全邮件客户端(SMC)服务器92、安全套接字层(SSL)代理94、汇聚引擎96、以及事件服务器48。SMC服务器92与比如驻留在某些公司网络上的相应的SMC模块协同工作,以便在移动办公平台24和源邮箱间传送电子邮件数据。数据库计算机84可以包括作为SOAP守护进程的汇聚应用程序接口(API)100、管理控制台102、汇聚数据库104、AggCron模块56、SMC目录服务器106、以及发送邮件模块90。Web客户端引擎22的各组件可以被配置为运行于不同的机器或服务器上。组件二进制文件和配置文件可置于网络上的目录中或置于本地硬盘上,能够访问这些网络上的目录或本地硬盘,使适当的组件在各机器上运行。根据一典型实施例,部署可以包括一个监管员;两个工作者;以及一个端口代理,用于支持30,000个外部源邮箱;然而,还可以采用其他配置。正如所属领域技术人员将意识到的那样,实际的生产部署可能取决于负载、性能和压力测试的结果。针对移动办公平台24的直接访问组件、模块以及各种功能,通常以两种配置,即引擎机(图4)和数据库计算机(图5),来安装机器。虽然这些机器可以安装上述全部组件,但上述组件并非在所有应用中都需要全部激活(例如,汇聚可以同不支持推送技术的系统一起使用,等等)。同样,实际的生产部署可能取决于负载、性能和压力测试的结果。在一己知技术中,移动办公平台24架构有利地利用了一组将应用数据转换为表示信息的特定设备/语言可扩展样式表语言(XSL)文件。在一非限制性示例中,一构建过程接受非本地化XSL,并为各支持语言产生本地化XSL文件。当使用XSL时,在存储器中对其进行"编译",并对其进行高速缓存以便反复使用。对模版进行预本地化和高速缓存的目的是为了减少产生表示页面所需的CPU周期。还可以执行品牌化(Branding)。起初,本地化XSL文件可以构建WAP应用,以访问经汇聚的电子邮件账户。WAP代理应用可以是可本地化的,并且支持多种WAP设备。对于应用的各逻辑页面,可以创建针对于特定设备的XSL,所述XSL可以针对各种支持语言/国家进行本地化。这种呈现方案不但可以支持WAP设备,还可以支持比如SMTP、HTML和POP代理。在执行品牌化时,可以为各种不同品牌定制给定应用的各页面。页面的品牌可以通过XSL导入予以实现,所述XSL导入包括使用用于XML处理的Java应用程序接口(API)(JAXP)特征进行动态导入。这无需对各合并的页面/品牌模版进行编译和高速缓存。作为实例,在样本模版目录中,可以将单一语言/国家的第一和第二页面同品牌化的第一和第二页面组合,从而产生多个不同的模版组合。还可以通过装载单一语言、设备/应用以及品牌的模版,估算(profile)应用的存储量需求。同其他设备相比HTML设备可以包含一组更大模版集。在一已知技术中,移动办公平台24有利地构建过程,接受非本地化文件和针对特定语言的属性文件,并将它们进行合并,以将各非本地化XSL转换为各种支持语言的XSL。无需对每种语言使用单独的XSL文件,并且可以去除内存使用公式中的语言因素。JAXPAPI可用于以Java类扩展XSL。扩展可以采取各种形式,例如,包括扩展元素以及扩展函数。可以通过创建并初始化带有区域的扩展对象,并将对象传送至转换器的方式,对模版进行转换。系统可以消除大量导入,从而使用更少的内存。同Java类十分类似,HTML模版可以使用模版导入以支持模版的重用,并可以通过如派生或导入等机制重用其他Java类。在直接访问系统20中,用户在其移动无线通信设备25上接收来自多个外部账户的电子邮件,并在答复接收消息时保持答复和发送地址的一致性。例如,对于拥有集成Yahoo!账户(user@yahoo.com)和POP3账户的(user@pop3.com)的用户而言,如果他们在user@yahoo.com接收到一封电子邮件,则他们从设备25上生成的答复看上去将是来自user@yahoo.com的。类似地,如果用户在user@pop3.com接收到一封电子邮件,他们的答复看上去将是来自userpop3.com的。编辑新消息的用户还可以选择"发送"地址。当编辑新消息时,用户将具有选择"发送"地址的能力。根据源邮箱类型和协议,还可以通过源邮件服务发送消息。这项功能可以通过发送各源邮箱的配置得以支持,例如,作为一非限制性示例,向移动无线通信设备25发送各源邮箱51、53的服务簿。如上所述,服务簿是一个可以包括全部当前已定义的服务记录的类。该类可用于维护一组关于设备的信息,如连接信息。服务簿可用于管理HTTP连接和邮件(CMIME)信息,如账户和结构。在移动无线通信设备25中,当从账户中删除源邮箱51、53时,可以发送删除服务簿请求。还可以利用一可视名称将服务簿再次发送至设备25,所述可视名称向用户指示该选项不再有效。还可以对已发项目文件夹进行"同步"。例如,可以将全部由设备发起的已发消息传送至源账户,并将其存储在己发邮件文件夹中。同样,在设备25上删除的消息也相应地从源邮箱51、53中删除。另一示例为,类似地可以将设备25上源自设备的消息的已读或未读标记传送至源邮箱51、53。正如所述领域技术人员将意识到的那样,虽然上述特征被描述为源相关和单向同步的,然而在某些实施例中可以额外地或相反地从源邮箱/账户向手持设备传送某些同步特征。如有可能,邮件服务供应商或公司邮件服务器可用于提交外发消息。虽然这对某些邮件服务供应商或服务器而言是不可能的,但由于其可以提供多种优势,因此如有可能优选情况下要予以釆用。例如,AOL的用户将受益于AOL特有的特征,如网站过滤(parentalcontrols)。此外,作为一非限制性示例,AOL和Yahoo用户将看到其已发项目文件夹中的消息,并且以该方式传送的消息可能更符合最新的垃圾邮件策略,如发送方策略框架(SPF)和发送者Id。此外,通过公司邮件服务器52发送的消息在全局地址列表层面和个人层面都将具有适当的名称解析。然而,应当理解的是,利用邮件服务供应商50发送邮件可能依赖于伙伴协定和/或协议,而伙伴协定和/或协议取决于给定实现。上述架构还有利地支持诸如消息体和附件的按需检索、以及多文件夹支持等特征。此外,正如所属领域技术人员将意识到的那样,在基本协议支持的情况下,可以使用"这是垃圾邮件"的按钮或标识符,实现公司标签和其他服务供应商特有的特征。直接访问系统20的一个特别优势在于,用户无需在集成另外的账户前对账户进行配置。然而,可以使用独立的电子邮件地址,并且有利的是,该地址无需受限于用户被要求管理的邮箱大小。例如,电子邮件账户可以由管理员进行管理,任何邮件都可以在一段预定时间后从系统中予以清除(即,基于时间自动老化,对所有用户无邮箱大小限制)。此外,用户可以有利地通过其移动无线通信设备25使用集成电子邮件账户创建、设置和选项的各个方面。因此,用户无需访问HTML网站,就可以比如更改设置、创建过滤器、或执行类似的功能。当然,也可以选择使用HTML网站。随着使用直接访问系统系统20的系统互联网电子邮件服务的日益成长,可以有利地将现行重点放在管理网站上,以向运营商管理员提供附加信息,支持团队及类似功能。然而,在一些实例中,可以将邮件连接器安装在个人计算机上,而该功能并非总是可以利用移动无线通信设备获得。Web客户端引擎22可以有利地支持不同特征,所述特征包括发往手持设备的消息(MTH)、从手持设备接收到的消息(MFH)、对消息进行转发/答复、请求阅览长消息(如大于2K的消息)的更多内容、请求阅览消息附件、以及空中文件夹管理(OTAFM)。下面将对这些功能予以阐述。对于MTH功能,通过Web客户端服务簿将用户的各集成电子邮件账户同用户设备进行联系。对于到达Web客户端邮箱的各新消息,通常将含有新消息信息的通知发送至Web引擎监管员组件(图3),Web引擎监管员组件随即将任务分配给系统中负载最小的可用工作者。选定的工作者32将对用户信息进行验证,从用户源邮箱检索新消息,并将其传送给用户设备。在MFH功能中,同Web客户端服务簿相关的MFH消息由Web客户端引擎22进行处理,并由工作者32通过简单邮件传输协议(SMTP)或本地发件箱传送至互联网49。如果用户开启了向已发项目文件夹保存己发消息的选项,直接访问代理就将向该文件夹保存已发消息的副本。在转发/答复/更多内容功能中,只要原始消息依然存在于直接访问代理高速缓存器或用户邮箱中,用户就可以从移动通信设备25转发或答复MTH或MFH消息。对于MTH,工作者32可以比如向用户设备发送最开始的2K消息,或(小于2K的)完整消息。如果消息大于2K,用户可以请求更多内容(MORE),以阅览消息的下2K内容。在这种情况下,工作者32将通过从用户源邮箱检索原始消息的方式处理更多内容的请求,并发回设备所请求的2K消息。当然,在某些实施例中,可以发送2K以上的消息文本(或完整的消息)。在附件阅览功能中,用户可以阅览常见文档格式(例如,MSWord、MSPowerPoint、MSExcel、WordPerfect、PDF、text等)或图象格式(GIF、JPEG等)的消息附件。一旦接收到附件阅览请求,工作者32就可以通过直接访问代理从用户源邮箱获取原始消息,提取所请求的附件,对其进行处理,并将结果发回用户设备,在本例中附件阅览请求是以请求更多内容的形式实现的。该处理要求原始信息尚未从用户Web客户端邮箱中删除。在向已发项目文件夹保存已发消息的功能中,如果用户开启了该选项,工作者32就将从用户设备发送而来的各MFH消息的副本放入邮箱中的用户已发项目文件夹。在空中文件夹管理中,Web客户端OTAFM服务以无线方式令用户邮箱中的全部消息和文件夹同用户设备保持同步。每当移动/删除了用户源邮箱中的消息,就可以同样相应地移动/删除设备上的相关消息,反之亦然。当移动/删除了设备上的消息,就可以同样相应地移动/删除用户源邮箱中的相关消息。类似地,当在用户Web客户端邮箱中添加/删除/重命名了文件夹时,就可以在设备上添加/删除/重命名相关文件夹,反之亦然。系统20可以有利地支持各种消息特征的不同子集。例如,在发往手持设备的消息的功能中,移动办公平台24可以负责连接各源邮箱51、53,以检测新电子邮件。针对每个新邮件,向Web客户端引擎22发送通知,监管员34根据此通知选出一个工作者32对该电子邮件进行处理。选定的工作者从直接访问代理40获取额外的账户信息和邮件消息的内容,并将其传送给用户设备25。在从手持设备接收到的消息的功能中,可以将MFH从Web客户端工作者32送至直接访问代理40。移动办公平台24随即利用本地发件箱或通过SMTP发送消息,将消息传送至互联网49。然而,应当理解的是,只要可能,本地发件箱可以提供更好用户体验,特别是在考虑到目前的反滥发倡议如SPF和发送方Id的情况下,尤其如此。在从手持设备删除的消息的功能中,在将消息从设备25中删除时,Web客户端引擎22通过直接访问代理40通知移动办公平台24。如此以来,移动办公平台就可以删除源邮箱中的同一消息了。当处理更多内容/转发/答复/附件阅览请求时,Web客户端工作者32可以请求来自直接访问代理40原始邮件。然后,直接访问代理40对该请求予以处理,并将结果发送至移动无线通信设备25。该架构还可以支持比如消息部分的按需检索以及其他改进。一旦集成了新的源邮箱51、53,就可以将来自报警服务器39的服务簿通知发送至监管员34,监管员将该通知分配给工作者32,以向设备发出服务记录。各源邮箱51、53可以同唯一的服务记录相关联。这样,各MFH消息就可以根据设备上的服务记录同源邮箱51、53进行关联。系统20还可以周期性地查询集成外部邮箱,以查看新邮件并访问任意消息。系统20还可以包含对汇聚组件查询带宽所做的优化,以便支持快速查询。系统20还可以有利地支持较大的活动用户群并包含迅速增长的用户群。负载平衡的拓扑结构可以组件的队列大小及其吞吐量作为依据。如前所述,可以用在一示例中被称为UDP心跳的机制监控这些负载统计信息。如果组件过载或队列长度较长,那么该组件从其他组件获得分配任务的可能性就会降低。相反,如果在最近几小时内该组件同其他组件相比完成了更多的任务,就将获得更多的分配任务。利用这种机制,负载就可以分散在各种不同的机器硬件上,即,为运行在处理能力较弱的机器上的组件所分配的任务将少于为运行在处理能力较强的机器上的组件所分配的任务。可以通过使用负载平衡器模块,例如由华盛顿西雅图的F5Networks生产的BIG-IP模块实现任意移动办公平台组件的总负载平衡。BIG-IP可以提供负载平衡和智能层7交换功能,并且可以对从互联网传送至任意用户接口组件,如WAP和HTML代理的业务进行处理。正如所属领域技术人员将意识到的那样,使用BIG-IP或类似的模块可以为应用提供查询功能、容错以及会话管理功能。通常,可以从一个单独的直接访问代理40通过持久连接访问单个源邮箱。代表特定用户的任意请求可以始终发送至同一直接访问聚集分区(clusteredpartition)内的同一机器。由于某些组件是系统级的,将为多个分区内的用户处理任务,因此这些组件可以被设计为以逐个请求的方式判断应同哪个直接访问分区进行通信。负载平衡器和高速缓存器(LBAC)模块可以支持此功能。LBAC46是系统级组件,可以执行两项重要功能。第一项功能是提供从设备PIN到特定直接访问代理40的映射,同时将信息高速缓存于存储器中,以实现快速访问并减轻中心数据库的负载。第二,由于直接访问代理40将运行于聚集分区之中,因此,LBAC46可以将负载分散在任意分区内的全部直接访问代理上。LBAC46可由不同组件形成。例如,执行负载平衡的代码可以是安全邮件连接器的扩展版本。该代码还可以实现査找中心数据库并高速缓存査找结果(LBAC)。在一非限制性示例中,当工作者要求直接访问代理40执行任务时,就为LBAC46提供一个设备PIN。LBAC46就可以通过在其高速缓存器中进行査找,确认哪个分区与该PIN相关,或从中心数据库检索分区标识符(并将结果高速缓存)。一旦得知了分区,LBAC46就查找其高速缓存器,以查看指定了该分区中的哪个直接访问代理来处理针对此PIN的请求。如果不存在映射,LBAC就请求PDS在负载最小的DA代理40上创建一个新的关联(依旧将结果高速缓存)。最后,LBAC46以连接信息对工作者32做出回应,以便用适当的直接访问代理处理该特定请求。安全邮件连接器88可运行于故障转移对(failoverpair)中,故障转移对的一方是活动主节点(activemaster),另一方是辅助备份。可以实时地将内部数据结构从活动主节点复制给辅助备份。为了扩展和容错,可以运行多个LBAC46,但通常需要外部连接平衡组件,比如如前所述的BIG-IP组件。Web客户端引擎22中的接收组件在进行处理前将其他组件分配给它的任务保存至磁盘上的任务存储器。接收组件可以更新任务的状态,当完成任务处理时还可以将任务从任务存储器中删除。如果组件出现故障或过程重新启动,就可以从任务存储器中恢复任务,并基于这些任务的当前状态,继续处理这些任务使之进入下一状态,节省了从头开始重新处理任务的时间。从MTH/MFH的角度来说,任何恢复都可以通过当前查询行为和Web客户端引擎22上的恢复机制予以实现。从邮件办公平台组件内部来看,在消息成功传送至Web客户端引擎22之前,一直不在分区数据库60中记录该消息。在下一査询间隔内,系统可以重新"发现"消息,并尝试通知Web客户端引擎22。对于新邮件事件,如果事件丢失,系统可以在接收到下一事件时或在下一查询间隔期间拾取该消息。对于支持通知的源,作为一非限制性示例,该间隔可以被设置为6小时。对于从Web客户端引擎22发送的消息,和已经被Web客户端引擎接收了的消息,可以用不同的Web客户端引擎组件对恢复予以处理。可以有利地对Web客户端引擎22进行横向和纵向扩展。可以向直接访问代理40注册/配置多个监管员34,以分散通知负载并提供可用的引擎服务。可以在同一机器或在多台机器上运行多个工作者32和端口代理30,以分散负载并实现冗余。随着用户数的增长,可以向系统添加新组件,以实现高度的横向扩展。可以在不停机的情况下,自动将新组件添加至系统或从系统删除。业务可以被自动委托给新组件并从故障组件转移。可以多次部署移动办公平台24内的各个组件,以实现横向扩展。为了实现纵向扩展,各个移动办公平台24组件可以是具有可配置数量的线程、以在大负载下扩展的多线程过程。连接池可用于减少维护过多开放连接的开销。图6是与图2所示的功能组件类似的BDA用户接口组件的高层架构图的另一实施例。下面将简要说明这些基本组件及它们的功能。供应组件(PRV)IIO提供集中式数据库111或存储器,用于存取用户和设备标识符(ID)配置文件(profile)信息。在登录过程中,WAP和HTML代理74、76检索给出了用户和设备信息的ID配置文件。代理针对特定的用户配置行为(如修改PIN)更新PRV110。Web客户端数据库112(WCDB)包含web客户端用户的账户信息。在登录过程中查询客户端数据库,以判断未知用户是不是web客户端用户,并判断该用户是否可以迁移。WAP代理74提供基于无线标记语言(WML)的用户接口,以配置移动办公平台(MOP)中的源邮箱。HTML代理74提供基于HTML的用户接口,以配置MOP中的源邮箱。Soap伺服小程序114(SOAP守护进程)提供到数据库存储器的接口。Agg引擎116其协议转换器的作用,Agg引擎同源邮箱相连接,用于验证配置参数。移动办公平台数据库(MOPDB)118是MOP的主用户数据存储器。WebAdmin向MOP提供账户状态发生改变的通知。供应组件110也提供帐户状态发生了诸如非活动、活动等改变的通知。供应组件(PRV)可用于通知并将用户从Web客户端(WC)服务迁移至互联网服务(IS),互联网服务具有可利用用户电子邮件账户从web浏览器获得的更多高级特征,并允许用户添加和编辑电子邮件账户。Web客户端汇聚编程接口(WCAggAPI)122包括数据库124,并为WC账户提供集成源数据。查询WCAggAPI,以获取所要迁移至用户的新互联网服务(IS)账户的集成源配置数据。WCDB112提供web客户端账户信息。査询WCDB112,以获取所要迁移至用户的互联网服务(IS)账户的web客户端账户配置数据。系统可以利用现有产品,如供应组件IIO和WebAdmin120。这些产品具有扩展特性。在该所述实施例中,功能从Aggcron转移至BDA代理。该系统提供到BDA代理中分区数据库的直接连接。对数据库的访问可以来自一可配置连接池,可配置连接池将根据系统的需要按需增长或縮减。该连接池能够从网络错误以及数据连接问题中恢复过来。DA系统10用于允许一组针对于特定设备/语言的XSL文件将应用数据转换为表示信息。如图7所示,构建过程接受非本地化XSL文件,并为该产品所支持的各种语言产生本地化XSL文件。如图所示,示出了三个页面(PAGE)的逻辑模式200。示出了非本地系统202,非本地系统具有独立的模板(TEMPLATES),以及分别包含于设备(DEVICE)1和设备2中的不同的页面(PAGE)1-3。示出了本地化运行时系统204,本地化运行时系统具有设备(DEVICE)、语言(LANG)国家(COUNTRY)以及页面(PAGE)。运行时,当使用XSL时,在存储器中对其进行"编译",并对其进行高速缓存以便反复使用。对模版进行预本地化和高速缓存的目的是为了减少产生表示页面所需的CPU周期。本地化XSL方案可以构建用于访问汇聚电子邮件账户的WAP应用,WAP应用又名WAP代理,可以是可本地化的,但也可以支持多WAP设备。可以针对该应用的各逻辑页面创建针对于特定设备的XSL,针对各种支持的语言/国家将所述XSL进行本地化。该呈现方案不一定必须支持WAP设备,也可以使用HTML和POP代理。此外,存在针对特定设备定义的其它应用(例如,针对HTML的Admin应用)。如图8所示,可以进行品牌化,在进行品牌化时可以针对各不同品牌定制任意给定应用的各个页面。如图所示,示出了本地化模板210,并且可以将其与所示的品牌化本地化模板212进行比较。页面的品牌化可以在运行时通过XSL导入予以实现,所述XSL导入采用JAXP特征实现了动态导入。本方法需要对各组合页面/品牌模板进行编译和高速缓存。在图8所示样本模板目录中,将单一语言/国家的页面1和页面2同品牌化的页面1和页面2组合,从而产生如下所示的四种不同的模板组合a)Device1/langl/entry1/Page1/Brand1;b)Device1/lang1/entry1/Page1/Brand2;Device1/langl/entry1/Page2/Brandl;d)Devicel/langl/entryl/Page2/Brandl;在一非限制性示例中,DA系统10支持五种语言和20多种品牌,以及MOP14。任何新设备/应用(例如HTML)、本地化和品牌化要求都需要额外的存储器以对预本地化和品牌化模板进行高速缓存。这在代理的扩展中是一个重要因素。通过加载针对单一语言、设备/应用以及品牌的所有模板,可以估算出应用的内存需求。由于同其它设备相比,HTML设备包含一组较大的模板集,因此可以使用HTML设备。系统10使用情况的分析器(profiler)的一个示例是运行于NetBeans环境下的Jfluid分析器,该分析器支持对已知系统和新系统的内存使用进行比较。应用可读取代理伺服小程序动作映射,以检索用于HTML代理的模板的位置。Xalan库可以通过加载模板的方式被加载至存储器,并且可以执行转换。分析器结果可以重置。可加载模板和停止分析器。以下是分析结果的一个非限制性示例-1)121个主要模板;2)44371672字节或约42.3兆字节;3)每个模板358千字节;在该实例中1)加载了147个唯一的模板(121个主要模板26个导入模板)2)加载了719个模板,以及3)加载了177次main.xsl。下面将详细说明main.xsl文件。在本例中,执行以下步骤1)加载/编译模板;2)执行转换;3)启动计时器;以及4)用加载的模板对XML文档执行1000次转换。模板具有一般尺寸,并包含35个本地化字符串。机器是台式机(desktopbox)(2.8ghz500mg)。分析结果为每次转换需19.2ms。如果利用针对该HTML代理的分析结果推算支持五种语言以及二十种品牌的情况,那么在该非限制性实例中,运行于DA系统10下HTML代理需要20种品牌*5种语言*42.3兆字节=4.13千兆字节。32位处理器的地址空间可能无法满足该存储容量需求。此外,这样的存储容量需求也不切实际,并且可能降低含有该代理的机器的性能。添加更多品牌或语言会使存储容量需求稳步增长。为减小存储容量需求,系统可以令计算内存使用的变量保持不变。可以减少在计算内存使用时作为乘数因子的品牌和/或语言的数量。由于可以采用针对CPU使用率而言的最佳方式来设计模板的创建和高速缓存,因而,即使会增加转换次数,任何内存使用的减少都可以使代理运行速度更快。下面,将继续针对XSLT作为呈现方案的情况予以说明,然而还可以使用本领域技术人员已知的其它软件程序。构建过程接受非本地化XSL和针对于特定语言的属性文件,并将它们组合,以将各非本地化XSL转换成各支持语言的XSL。可以对每种语言使用一个单独的XSL,并且可以从内存使用公式中去除的语言因素。在DA系统10的一示例中,HTML代理需要大约20种品牌*1种中立语言(language-neutual)*42.3兆字节=846兆字节。添加一种语言通常仅仅需要增加若干固定量的内存,内存增量具体取决于所添加的语言,而且语言数量不再是乘数因子。因此,即使存在一些变化,也能进行运行时本地化。JAVA应用通常使用资源束来存储将被用户査看的语言敏感字符串(languagesensitivestrings)。任何需要语言敏感字符串的类文件通常加载一资源束,并以预定义ID检索该资源束。资源束的数据可以包含在属性文件或JAVA代码中。对于属性文件,可使用标准命名规范来判定应为某一特定语言/区域设置加载哪个属性文件。某些属性文件可组织于各种语言的子目录中的"资源(resource)"目录下,如,作为非限制性示例的English(En)或French(Fr)。在各语言目录下,可能存在国家子目录,如,US、UK。可将各属性文件从语言和国家子目录中移出并重命名为,比如Filename[language[language[_country].property.一示例可以是Resource\fr\mainmenu.xsl->Resource\mainmenu—fr.xslResource\en\uk\mainmenu.xsl->ResourceVmainmenu—en—uk.xslXSL也可以从XML文档获取转换数据,但是针对一给定语言检索所有属性文件中的全部字符串并将其转换为XML的代价可能十分高昂,因此允许XSL查询它需要的少数字符串。(JAXP)可以提供使用Java类扩展XSL的机制。JAXP支持使用DOM、SAX、以及XSLT处理XML文档。JAXP支持应用程序解析还支持特定的XML处理实现。扩展可采取两种形式,1)扩展元素以及2)扩展函数,如Apache扩展。在以下说明中,对扩展函数予以阐释。在要转换模板时,可以创建一个扩展对象实例并以区域对其进行初始化。该对象被传递至转换器。XSL声明扩展函数类,并使用value-of元素来执行该函数,在参数中向该函数传递扩展对象实例。呈现器通常作为处理器予以实现,并可以获取其中存储着资源束(ResourceBundle)的包(package)。包可以被存储在伺服小程序配置中或被硬编码(hardcode)到代码中,如ResourceBundlePackage="com.teamon.Resource"扩展函数提供对资源束的模板访问,例如publicResLoaderpublicResLoader(Localelocale,StringresPackge)m—locale=locale;publicgetString(Stringinbundle,Stringname)bundle^TesPackage+bundle;ResourceBundlebundle=ResourceBundle.getBundle(m—locale,bundle);bundle.getString(name);呈现器可以作为参数获取扩展对象实例,例如ResLoaderres=newResloader(locale);params.put("ResLoader",res);transform.setParaineters(params);transform,process();XSL文件可以定义并使用扩展对象实例来加载字符串,例如<Xsl:tmnsform〉attributes:xmlns:xalan=http://xml.apache.org/xalanxmlns:res="xalan:〃com.teamon.util.xml.ResLoader"extension-element-prefixes="res"ResLoaderParam:<xsl:paramname="ResLoader7>localizingstrings:<xsl:value-of22select(、res:getValue($ResLoader,"bundle","stringID"))/>在getVakie调用中对资源束的命名可能与模板目前指定的资源字符串的查找位置不匹配。一种不同的产生该模型的镜像(mirror)的方法可以是提供loadResource扩展函数。扩展对象可以跟踪已加载了哪些资源,并在调用getValue()时在已加载的资源中的一个资源内査找字符串。<xsl:value-ofselect(、res:LoadResource($ResLoader,"foo"》/>可以用线程本地存储器(TLS)代替参数来存储扩展对象实例,从而简化value-of声明。TLS可与一种变形结合使用,因而value-of的声明可以是<xsl:value-ofselect(、res:getValue("stringID"))/>扩展元素可与一种TLS变形结合使用,因而XSL可以变得更具有可读性,例如<res:getValuebundle="foo"name="stringID"/〉或<res:loadResourcename="foo'V><res:getValuename="stringID7>系统可以对多个包中的资源束加以组织。任何以参数/属性的形式传递资源束的位置,同样也可以传递整个包<xsl:value-ofselect(、res:getValue($ResLoader,"com.attachmate.resource,foo",stringID"))/〉可以利用所述变形对所述模板进行修改,当进行与所采用的测试相类似的测试时,将测量出平均转换时间为19.4ms,这与之前结果存在差异。平均转换时间增加了大约0.2ms。由于在该模板中存在35个本地化字符串,因而可推断出每个字符串的开销,即大约0.005ms的平均字符串加载时间。分析器可用来测量花在加载资源字符串上的时间百分比。分析结果显示,加载35个字符串花费了2.2%的模板转换时间。任何差异都可能是由于,在分析过程中只执行了50次转换,而不是测试应用所实现的1000次转换而导致的结果。因此,调用扩展函数所增加的开销并没有过分增加CPU的使用,却减少了内存的使用。在一非限制性实例中,从先前已知的系统向新系统移植(migration)代码和模板的过程包括以下步骤1.将属性文件移至源目录(如com.teamon.resource)并改变名称以便同资源束标准保持一致;2.添加资源包目录配置;3.创建扩展函数类;4.修改呈现器以创建扩展对象实例,并使模板可以使用扩展对象实例;5.修改高速缓存方案,以便基于模板和品牌而非基于语言进行高速缓存;6.为现有模板创建移植工具(Migrationutility);7.用合适的xsl元素替换Sxxx变量;以及8.如果移植工具不是本地化工具(localizer),系统就将本地化工具从构建中删除。图9A和9B是阐述处理流程的非限制性示例。图9A示出了调用扩展对象以获取本地化字符串的处理流程。图9B示出了调用扩展对象以执行XSLT模板的处理流程。在主要模板的导入链中,有些模板可能被多次导入。去除多次导入通常将减少所用内存。例如,在HTML代理中,可能存在一个被命名为contact.xsl的XSL,该XSL可能具有图10所示的导入结构。如图所示,contact300包括contactdetail302、phonenumbers304、business306、personal308、corepage310、main312禾Bproperties314。两个其它文件可以包括main.xsl禾口properties.xsl314。在该示例中,对于contact.xsl模板,main.xsl312和properties.xsl314都可能被多次导入(例如,6次)。在该非限制性示例中,main和properties的大小约为110k。该模板比实际需要的存储容量多使用了大约550k(5*110)的存储量。从上述测试应用统计数据可见,main.xsl和properties.xsl两个模板都被加载了177次,其中有88次是冗余的。对这些模板的内存使用的分析显示,每个实例需要1)Main,xsl:108k*88=9.55mb;以及2)Properties.xsl:2.3k*88=0.2mb从HTML代理的各模板中去除冗余可以将该示例品牌的存储量需求减少大约9.75兆字节。如果所有的品牌都可以节省同样大小的内存,并且DA系统10应用运行时本地化,那么在该DA系统中HTML代理存储器的存储量需求为20brands*1lang-neutral*(42.3-9.75)megabytes=651megabytes.在该示例中,主要模板可导入main.xsl。为了确保在运行时不发生冗余,模板解析器(templateresolver)通过跟踪已导入了哪些模板的方式防止多次导入品牌化模板。如果该模板判定一模板已被导入,可以返回一个空的导入模板。在DA系统10中,可以对模板进行修改,使得只有主要模板导入main.xsl。模板解析器可以被修改为用于滤除冗余导入。由于内容使用量可能十分巨大,因此DA系统10不一定要永久性地高速缓存每个模板,并且高速缓存不一定发生在所有事件中。这样做可能会使转换时间增加大约一个数量级(从19.2ms增加到大约200ms)。可以将智能高速缓存器同系统一起使用,并且智能高速缓存器能够与本领域技术人员所熟知的类型的垃圾回收器(garbagecollector)程序协同工作,所述垃圾回收器程序通常清理那些占据着内存空间却不再被程序所使用的对象。一种可行的机制是使用弱引用,但是系统将无法确定应释放哪个引用。然而,可以创建代理工作引用(proxyworkreference)。最近最少使用的(LRU)高速缓存器41通常将会释放最近最少使用的对象。智能高速缓存器考虑多种因素3)最近最少使用;4)使用次数;5)占用的存储量;以及6)重新创建需要多大代价。HTML模板可以使用模板导入过程以支持模板重用,与Java类通过类似派生或导入的机制重用其它Java类十分类似。HTML代理的页面可被分解为其公共片(commonpiece)以支持重用。这给创建和维护HTML用户接口带来了便利。然而,内存使用与可重用的Java类不同,并且每个主要模板都有各自的类加载器,并将各自的重用模板的副本加载到存储器中。相同模板的多个副本可能同时被高速缓存于存储器中。例如,模板main.xsl可能由88个主要模板导入,因此,存储器中可以至少同时存在该模板的88个副本。通过使用非主要模板的单个存储器内副本,可以显著降低品牌内的内存使用。品牌内内存使用的减少还取决于公共模板的数量。表I分析了将每个模板加载至存储器一次时的内存使用。使用HTML代理和示例品牌,用分析器确定被加载了一次以上的模板的内存大小。从而,可以计算出内存的节省量。表I包含被加载了一次以上加载的模板以及与其相关的内存数据的示例。表I<table>tableseeoriginaldocumentpage26</column></row><table><table>tableseeoriginaldocumentpage27</column></row><table>由表I的分析显而易见,冗余加载模板的内存使用约为40.4mb。如果这些模板每一个都只加载一次,需要大约8兆字节(mb),节省了大约39.6mb。因而,可以重新计算DA系统IO中的内存使用需求20brands*1lang-neutral*(42.3-39,6)megabytes=54megabytes.如果存在共享于品牌间的模板,内存使用将会更少。DA系统IO可在内存中存储模板的单一实例,但是,由于可重用模板与Java类相似,因而优选情况下不应该使用标准xsl:import或xsl:include元素。还可使用Xalan-Java扩展。Xalan-Java扩展元素允许模板以转换上下文来调用Java方法并返回内容。从该Java方法的内部,可以调用其他模板,传递转换上下文,并将转换结果作为扩展结果返回。通过执行该操作,各样式表绝不会作为另一模板的一部分而被导入。反之,各样式表被分别高速缓存,并能被所有需要该样式表的模板重用。采用扩展元素来调用模板可能会限制使用模板的方式。例如,非主要模板不能利用〈xsl:apply-template〉。这将导致简洁性、易管理性、可重用性略差的代码。作为一示例,<xsl:templatematch^'text()'^可匹配元素内的全部文本节点。该匹配可能比text()复杂得多。系统可利用Xpath查询使复杂的匹配变得更加简单。诸如〈xsl:apply-templatesselect="pd:provider/[@protocol='pop']">之类的Xpath查询与令模板本身采用〈xsl:if^来完成同样的任务相比,要直观的多。Xsl:apply-templates可能不需要系统了解XML文档的精确结构。同比如〈xsl:for-each〉相比,Xsl:apply-templates更加灵活,并且能够更灵活地适应源XML结构的变化。由于输入XML通常是已知的,因而这在MOP中可能不是重大问题。〈Xsl:import〉提供对于模板的继承加载。如果存在一个以上的加载样式表,那么第一个导入样式表的导入优先级低于第二个导入样式表的导入优先级,第二个导入样式表的加载优先级又低于第三个样式表的加载优先级,等等。此外,〈xsl:apply-imports〉元素可用于应用任意定义,并且已导入的样式表中的模板规则已被正在导入的样式表所覆盖。由于不存在<xsl:apply-imports>,现有样式表无法使用该功能。XSLT1.0标准定义了扩展元素,但是它并没有定义实现,实现是可以变化的。为了可以在实现间移植XSL样式表,在假定扩展元素可用之前,一定要适当地查看该扩展元素的可用性。如果扩展元素不可用,一定要提供一种恢复机制(fallbackmechanism)。由于预期的模板高速缓存行为在纯XSL中无法实现,因而我们在某种程度上依赖Xalan作为系统的XSLT处理器。由于两种主要的JavaXSLT处理器,Xalan和Saxon,在实现上十分相似,且大多数其它处理器可能采用类似的实现,这不是多么大的限制。因此,切换XSLT处理器可能不需要很长时间。存在多种不同的能够通过扩展元素对模板加以重用的模型。可能存在独立转换,在独立转换中将DOM(文档对象模型)传递给处理器,并创建新的转换器(transformer)和输出流。在DOM系统中,文档被视为一组可以被单独引用的对象,从而可以实现对文档表示的操作,比如,在动态HTML文档的情况下通过使用JavaScript或其它语言进行操作。动态HTML是类似的。转换结果作为扩展函数结果返回。该模型通常使用标准JAXP接口,并且可以调用或应用XSL内的其它模板(例如,匹配)。部分缺点在于需要中间结果缓冲区、额外的缓冲副本、不利用根调度器(rootdispatcher)修改模板就无法调用模板、以及没有参数传递。在一个单独的转换模型中,将被调用的模板元素传递给调用模板转换器,并在其上下文内执行。将转换器的结果直接写入调用者的输出流。该模型没有中间结果缓冲区,并支持参数传递。部分缺点在于该模型使用非JAXPXalan接口、无法直接调用XSL内的其它模板、以及必须将各模板写成类似于自包含方法的形式。考虑到扩展元素的实现,XSL样式表通常不采用标准的〈xsl:import〉或〈xsl:include〉顶层元素。可以用扩展元素来代替它们,扩展元素可由助手对象予以实现,所述助手对象负责提供上述"调用模板(call-template)"方法和"资源字符串(resource-string)"方法。下面示出了扩展对象伪代码的示例。publicclassXSLTExtensionpublicvoidcall-template(XSLProcessorContextcontext,ElemExtensionCallextElem)Stringhref=extElem.getAttribute("href");Stringname=extElem,getAttribute("name");Templatesstylesheet=getStylesheetCache().getStylesheet(href);ElemTemplatetemplate=stylesheet.getTemplateComposed();Transformerlmplcurtrans=(Transformerfmpl)context.getTransformer();execute(curtrans,template,extElem);publicStringresource-string(XSLProcessorContextcontext,ElemExtensionCallextElem)Stringbundle=extElem.getAttribute("bundle");StringresKey=extElem.getAttribute("resource");ResourceBundleresBundle=ResourceBundle.getBundle(bundle,getLocale());returnresBundle.getString(resKey);i_TLS域可用于存储对象,以简化从XSL代码调用扩展元素。呈现器可编译样式表,并将它们保存在内存中,以提高运行时性能。对各主要样式表进行编译,并将其高速缓存在呈现器中。可以用品牌和样式表文件名作为高速缓存器的键(key)。可以将独立模板,如,〈xsl:template〉元素之间的XSL代码块高速缓存。高速缓存机制存储经过编译的模板,并支持通过唯一的键对它们进行访问。键可以是组合的经解析的摔式表文伴名+^"^名。解析文件名可由模板解析器(TemplateResolver)类中的逻辑计算得出。当前的"让步逻辑(back-offlogic)"可予以保留;例如,如果从bmnd:〃stylesheetxsl调用模板,那么系统将在当前品牌中查找,如果没有找到,就在默认品牌中査找。以下是呈现器和解析器的示例伪代码Renderer.)avapublicclassRendererpublicbooleanrender(OutputStreamos,InputSourceis,javax.xml.transform,sax,SAXSourcesource:MapxslParams,StringxsltPath,Stringbrand,Stringprotocol,Stringdevice,Localelocale)Objectstylesheet=getStylesheet(brand,protocol,device,locale,xsltPath);if(stylesheet!=null){returnprocessor.process(stylesheet,source,is,os,xslParams);}returnfalse;publicObjectgetStylesheet(Stringbrand,Stringprotoco,Stringdevice,Localelocale,StringxsltPath)Filef=getStylesheetAsFile(xsltPath,protocol,device);Stringkey=brand+f.getPath();returnStyesheetCache.get(key);Resolver.JavapublicclassResolverprivateStringgetStylesheet(Stringhref)throwsFileNotFoundExceptionStringbrandsToTry[]={m—brand,"default"};for(inti=0;i<brandsToTry.length;{Stringpath=getPathToStylesheet(href,brandsToTry[i]);Filef=newFile(path);if(f.isFile()&&£exists())returnf,getName();thrownewFileNotFoundException();publicSourceresolve(Stringhref,Stringbase)throwsTransformerException为了支持扩展元素和对々sl:import〉和〈xsl:indude〉的替换,可以作为移植过程的一部分改变现有样式表。例如,可以将〈xsl:import〉和〈xsl:call-include〉一起册U除。可以通过对〈exslt:call-templatename-"foo"href^"file:〃file-containing-foo.xsl"〉的调用代替<xsl:call-template>。(如果被调用模板在同一文件内,则可以省去'href'属性)。由系统推断'href'应为何值。在某些情况下可能是"file://s0mefile.XSl",在某些情况下可能是"brand:〃somefile.xsl",在某些情况下可能是"wap:〃somefile.xsl"。存在少数可以包含全局变量引用的非主要样式表。以下示例只列出了英文文件:_WEB-INF\templates\m31\default\en\mailfolder\exitcall.xslWEB-INF\templates\voice\default\en\mailfolder\message—impl.xslWEB-INF\templates\voice\default\en\mailfolder\newmessage—impl.xslWEB-INF\templates\voice\default\en\mainmenu\applicationmenU-imp.xslWEB-INF\templates\voice\default\en\mainmenu\providermenu—impl.xslWEB-INF\templates\wap\basic\en\mailfolder\calresperror—impl.xslWEB-INF\templates\wap\basic\en\mailfolder\plainmessage.xslWEB-INF\templates\wap\basic\en\mailfolder\showsubfolder—impl.xslWEB-INF\templates\wap\basic\en\mainmenu\error_inipl.xslWEB-INF\templates\wap\basic\en\mainmenu\noaccess—impl.xslWEB-INF\templates\wap\basic\en\mainmenu\pwperrorimpl.xslWEB-INF\templates\wap\basic\en\mainmenu\suspended—impl.xslWEB-INF\templates\wap\basic\en\pendingjob—impl.xslWEB-INF\templates\wap\bbdata\en\mailfolder\calresperror—impl.xslWEB-INF\templates\wap\bbdata\en\mailfolder\plainmessage.xslWEB-INF\templates\wap\bbdata\en\mailfolder\showsubfolder—impl.xslWEB-INF\templates\wap\bbdata\en\mainmenu\applicationmenu—impl.xslWEB-INF\templates\wap\bbdata\en\mainmenu\error_impl.xsIWEB-INF\templates\wap\bbdata\en\mainmenu\noaccess—impl.xslWEB-INF\templates\wap\bbdata\en\mainraenu\pwperror—impl.xslWEB-INF\templates\wap\bbdata\en\mainmenu\suspended—impl.xslWEB-lNF\templates\wap\bbdata\en\pendingjob—impl.xslWEB-INF\templates\wap\blackbeny\en\mailfolder\calresperror—impl.xslWEB-INF\templates\wap\blackberry\en\mailfolder\plainmessage.xslWEB-INF\templates\wap\blackberry\en\mailfolder\showsubfolder—impl.xslWEB-INF\templates\wap\blackberry\en\mainmenu\applicationmenu—impl.xslWEB-INF\templates\wap\blackberry\en\mainnienu\error—impl.xslWEB-INF\templates\wap\blackberry\en\mainmenu\noaccess—impl,xslWEB-INF\templates\wap\blackberry\en\mainmenu\pwperror—impl.xslWEB-INF\templates\wap\blackberry\en\mainmenu\suspended_impl.xslWEB-INF\templates\wap\blackberry\en\pendingjob—impl,xsl<image>imageseeoriginaldocumentpage0</image><formula>formulaseeoriginaldocumentpage35</formula>可以在移植过程中修改上述文件。可以删除相关的XSL测试开关(xsl:if、xsl:when等)和多模标记语言(M3L)代理,代码产生的'真(true)''假(false)'测试评估结果取决于变量'isM3L,的值。在有些非主要模板中,变量'isM3L,的值总是'false',同样应对测试进行评估。在如下非主要模板中存在少数〈xsl:apply-templates、以下列出了其中的英文文件:_<formula>formulaseeoriginaldocumentpage35</formula>WEB-INF\tempiates\wap\basic\en\addressbookfolder\contacts—impl.xslWEB-INF\templates\wap\basic\en\addressbookfolder\corporatecontacts—impl.xslWEB-INF\tempiates\wap\basic\en\calendarfolder\calendarfolder—impl.xslWEB-INF\templates\wap\basic\en\mailfolder\mailfolder—impl.xslWEB-INF\templates\wap\basic\en\mainmenu\applicationmenu—impl.xslWEB-INF\templates\wap\basic\en\mainmenu\providermenu—impl.xslWEB-INF\templates\wap\bbdata\en\addressbookfolder\contacts—impl.xslWEB-INF\tempIates\wap\bbdata\en\addressbookfoIder、corporatecontacts—impl.xslWEB-INF\templates\wap\bbdata\en\calendarfolder\calendarfolder—impl.xslWEB-INF\templates\wap\bbdata\en\mailfolder\mailfolder—impl.xslWEB-INF\templates\wap\bbdata\en\mainmenu\applicationmenu—impl.xslWEB-INF\templates\wap\bbdata\en\mainmenu\providermenu—impl.xslWEB-INF\templates\wap\blackberry\en\addressbookfolder\contacts—impl.xslWEB-INF\templates\wap\blackbeny\en\addressbookfolder\corporatecontacts—impl.xslWEB-INF\templates\wap\blackberry\en\calendarfolder\calendarfolder—impl.xslWEB-INF\templates\wap\blackbeny\en\mailfolder\mailfolder—impl.xslWEB-INF\templates\wap\blackbeny\en\mainmenu\applicationmenu—impl,xslWEB-INF\templates\wap\blackberry\en\mainmenu\providermenu—impl.xslWEB-INF\templates\wap\up\en\addressbookfolder\contacts—impl.xslWEB-INF\templates\wap\up\en\addressbookfolder\corporatecontacts—impl.xslWEB-INF\templates\wap\up\en\calendarfolder\calendarfolder—impl.xslWEB-INF\templates\wap\up\en\mailfolder\mailfolder—impl.xslWEB-INF\tempates\wap\up\en\mainmenu\applicationmenu—impl.xslWEB-INF\templates\wap\up\en\mainmenu\providermenu—impl.xsl各所列情况通常遵循同以下形式相类似的样式:addressbookfolder\contacts—impl.xsl<xsl:templatename="up—contacts"><xsl:apply-templatesmode="up—contacts"/></xsl:template><xsl:templatematch="aresponse,,mode="up—contacts,,><xsl:iftest="a:propstat/a:prop/a:contentclass[.=urn:content-classes:person']"><xsl:elementname="option"></xsl:element></xsl:i></xsl:template>这些情况是可以移植的。至少存在两种选择(1)内嵌(inline)代码。实质上,用addressbookfolder\contacts—impl.xsl进行替换:_<xsl:templatename="up—contacts"><xsl:for-eachselect="a:response">〈xsl:iftest="a:propstat/a:prop/a:contentclass[.='urn:contentclasses:person']"><xsl:elementname="option"></xsl:ckm6nt></xsl:if></xsl:for-each〉</xsl:template>(2)用<xsl:for-each"><tmon:call-template〉</xsl:for-each>来替换<xsl:apply-templates>。实质上,用Addressbookfolder\contacts—impl.xsl替换以上文件Addressbookfolder\contacts—impl,xsl<table>tableseeoriginaldocumentpage38</column></row><table>可在模板名后附加"—helper"。这可以避免同现有的已命名为"up_contacts"的模板发生冲突。呈现器和扩展元素实现通常都需要访问样式表,可以在解析并加载后将样式表进行高速缓存从而提高性能。高速缓存机制抽象于接口(Interface)之后。高速缓存的基本实现是在Map中的存储和检索。上述"智能"高速缓存是可行的。高速缓存接口的一示例为:_<table>tableseeoriginaldocumentpage38</column></row><table>可以将已加载的样式表存储在以样式表路径作为哈希表键的哈希表中。如果在哈希表存储器中未找到经编译的样式表,就用处理器来获取该经编译的样式表。简单的样式表高速缓存:__publicSimpleStylesheetCacheimplementsStylesheeCacheprivateHashtablem—cache=newHashtable();Templatesget(Stringbrand,Stringprotocol,Stringdevice,StringxsltPath)Stringpath=getPath(brand,protocol,device,xsltPath);Templatesstylesheet=mcache.get(path);if(stylesheet==null){stylesheet=processor.loadStylesheet(path);m—stylesheets.put(path,stylesheet);returnstylesheetj由于移植模板不再需要xsl:import或xsl:include,因而移植模板中不需要统一资源定位符(URL)解析器。URL解析器可以被完全删除。所述系统也可用于图像。图像是可本地化的资源,正如资源束是可本地化资源一样。可采用与用于解析资源束位置的算法相同的算法来定位图像文件。此外,可采用高速缓存机制来存储解析的结果。例如,给定了本地zh—zn,默认区域en一us和扩展元素可以是<exslt:getResourcelmgpath="a\b\c\images"id="welcome.gif'〉可以针对以下的键按顺序检查解析图像URI高速缓存a\b\c\images\zh\zn\welcome.gifa\b\c\images\zn\welcome,gifa\b\c\images\en\us\welcome.gifa\b\c\images\en\welconie.gifa\b\c\images\welcome.gif对于各键,系统可以在高速缓存器中找到该键,并且可由扩展元素返回该键的键值。如果高速缓存器中不存在该键,那么可以检查文件系统中是否存在该图像文件。如果文件存在于文件系统之中,则可以将该键及其键值写入高速缓存器。此外,还可以将先前检查到的具有相同的键值的键写入高速缓存器。例如,如果找到了welcome—zn.gif,那么图像URI高速缓存器将包含a\b\c\images\zh\zn\wdcome,gif,a\b\c\images\zn\welcome.gifa\b\c\images\zn\welcome.gif,a\b\c\images\zn\welcome.gif丰莫板移植使所有〈imgsrc="a\b\c\images\wdcome.gif"/>的实例被替换为<exslt:getResourcelmagepath="a\b\c\images"id="welcome.gif"/〉将其作为移植过程的一个步骤来执行可以相对更加直接。图像文件可作为结果留在原处,不必使用移植过程来移动或重命名图像文件。图ii是一幅方框图,示出了引入扩展元素逻辑后模板呈现(转换)过程中组件之间的关系。如图所示,功能组件可以是更大的服务器或移动办公平台的一部分。呈现器400可以同简单样式表高速缓存器402和模板处理器协同工作。XSLT引擎(XALN)接收来自模板处理器的输入,并向与简单样式表高速缓存器协同工作的扩展元素408输出。XSLT引擎可与URL解析器410—起工作,由于已不存在〈xsl:impor^或〈xsl:include、因而并不需要该URL解析器410。仍可以将其留在原处,因而用虚线表示。扩展元素模块由Xalan弓|擎调用。呈现器400从简单样式表高速缓存器402推取(pull)所请求的模板,并将其传递给模板处理器404以便进行处理。模板处理器404依然有两种方法,一种方法是样式表高速缓存器402要用到的加载模板的方法,一种方法是呈现器要用到的用于对转换进行处理的方法。样式表高速缓存器402可以被分离成模块,并由呈现器400和扩展元素予以使用。图IIA示出了同图11的MOP/Server420类似的另一方框图。用于呈现模板的组件包括服务器422、呈现器424、高速缓存器426、以及扩展Java对象432,其中高速缓存器426含有收件箱428和主要的高速缓存器430。依照一非限制性实施例,该系统支持多种语言、多运营商以及品牌。MOP代码库可支持这些需求。然而,在现有系统中,不存在用于添加MOP档案文件(archive)以外的新运营商或语言的正式过程,构建以及推送的正式过程。更新可以通过向代理推送新语言资源文件和新的针对于特定品牌的资源文件的方式予以实现。本系统实现了这一过程的正规化,该过程使新语言和运营商能够在无需重启组件的前提下得到有效部署(deploy)。为存储和动态部署运营商和针对于特定语言的资源提供了一个系统以及过程。本系统可以满足各种功能需求。本系统可以动态部署新语言。本系统支持一种更简单的、向正在执行的安装部署新语言、而无需重启组件的过程。这不包括对现有运营商或语言的更新。本系统可动态部署新运营商。本系统支持一种更简单的、向正在执行的安装引入新运营商资源束、而无需重启组件的过程。本系统支持对运营商束的集中式访问。本系统可以提供通过集中式服务检索和检查运营商束的机制。通过服务可以使部署得以集中,从而减少人机交互的需要,比如,不需要远程登录到系统中的各代理,并执行一些动作的操作。本系统具有良好的性能、可靠性以及可扩展性。没有一项缺点。资源束可以进行复制,并且可以从多个业务实例访问到资源束。对现有组件造成的附加负载可以得到最小化。给网络带来的附加业务可以得到最小化。MOP具有支持一组Java资源束以及一组图像(gifs,jpgs)的资源结构。这些非品牌特有(non-bmndspecific)的字符串存储在不同的包中,遵循针对多种区域的Java资源束文件命名规范。XSLT的资源束可位于com.teamon.resource的包中,包含在模板转换过程中被解析的所有文本。代理注入器(ProxyInjector)的资源束可合理地位于使用它们的代理包中,包含在操作处理程序(actionhandler)执行过程中被解析的所有本地化文本。将所述文本注入XML文档,由XSLT对该XML文档进行处理,以便生成本地化内容。以下是现有非品牌特有束列表的非限制示例。com.teamon,proxy.resource\prov,propertiescom.teamon.proxy.resource\proxy.propertiescom.teamon.proxy,html.resourceVhtml.propertiescom.teamon.proxy.html.resource.ppo\prov.propertiescom.teamon.proxy.webdav.bda.resource\bda.propertiescom,teamon.proxy.webdav.davmgmt.resource\davmgmt.propertiescom.teamon.proxy,admin.resource\admin,propertiescom.teamon.proxy.pop.resource\pop.propertiescom.teamon.proxy.wap.resource\wap.properties此外,例如,Tmobile品牌可以具有覆盖了以上列出的通用束中三个通用束的附加资源束com,teamon.proxy.resource.tmobile\prov.propertiescom.teamon.proxy.webdav.davmgmt.resource.tmobile\davmgmt.propertiescom.teamon.proxy.resource.tmobile\proxy.properties当在指定束内加载指定文本字符串时,系统代码可采用下面的包优先顺序来加载字符串。1.com.teamon.proxy,[app].resource,[device].[bundle]2.com.teamon.proxy,[app].resource,[brand].[bundle]3.com.teamon.proxy,[app].resource,[bundle]4.com,teamon,proxy,resource.[device].[bundle]5.com.teamon.proxy,resource,[brand].[bundle]com.teamon.proxy,resource.[bundle]品牌可作为模板、图像、Java资源束、以及条款和条件予以实现。品牌资源可位于配置品牌目录下,在配置品牌目录下每个品牌都存在特定的子目录,例如[BrandDir]Umobile。可以定义模板。特定品牌子目录(例如tmobile)包含各个应用(例如html)的子目录,在各个应用的子目录下又可能存在一个以上的设备子目录(例如blackberry)。在这些目录下找到的模板将覆盖配置模板目录下的模板。这些目录还可能包含用于扩展该基本应用的功能的附加模板(这当然意味着新的动作和代码)。品牌目录下具有图片,存在一个单独的被命名为"image"的图像目录,其中包含本地化的图像。可以包括Java资源束。品牌可以通过提供针对于特定品牌的束的方式覆盖某些代理注入字符串。无线通信设备供应商和运营商的当前本地化条款及条件位于品牌的直接访问(BDA)子目录内。各条款和条件是具有硬编码名称的文本文件,例如[branddir]\[brand]\bda\en\termsandconditions.txt[branddir]\[brand]\bda\en\carriertandc.txt可以使用特定方案在数据库中配置各品牌。方案位于代理配置方案目录中。方案目录包含非本地化层叠样式表(CSS)文件,以及本地化图像。方案可以被多种品牌共享。资源部署包(RDP)可用于部署任意数量的语言和/或运营商/品牌。每个部署包包含足够的信息以识别其内容以及部署指令。RDP可以同包含语言和/或运营商资源的jar相类比。Jar使系统能够对资源进行组织并将资源进行压縮从而实现高效部署。RDP包含描述符(descriptor)文件和一组资源jar。描述符文件包含所要部署的各jar的有关信息。资源jar包含针对于特定语言或运营商的全部资源,并且包含路径信息,因而资源jar能被方便的解压到资源消费者的文件系统。作为一非限制性实例,图12示出了RDP500,RDP500包括说明(description)502,后者包含对法语504、德语506、以及Verizon或运营商文件的引用。描述符文件包含XML,后者包含RDP内各资源Jar的部署信息。RDP描述符文件的方案的一个示例为<xmlversion=',1.0"encoding="utf-8">〈xs:schematargetNamespace=""xmlns:xs="http:〃www.w3.org/2001/XMLSchema"〉<xs:elementname="package"><xs:complexType><xs:sequence><xs:elementname="Resource"><xs:complexType><xs:attributename="id"type="xs:ID"/><xs:attributename="type"type="ResourceType,,/〉<xs:attributename="jar"type="xs:string"/><xs:attributename="description"type="xs:string"/><xs:attributename="dirPropKey"type="xs:string"/〉</xs:complcxTypc〉</xs:dcmcnt〉</xs:sequcnce〉</xs:complexType〉</xs:clcmcnt〉<xs:simpleTypename="ResourceType"><xs:restrictionbase="xs:string"><xs:enumerationvalue="language',/><xs:enumerationvalue-"carrier"/></xs:restriction></xs:simpleType></xs:schcma〉资源元素描述了RDP内的资源jar,并具有下面的属性:属性(Attribute)类型说明idID对资源jar进行唯一标识。特定语言或运营商资源jar的各版本应始终具有相同id,例如,法语资源jar的各版本应始终具有相同id。typeResourceType该值应当是"语言"或"品牌"。jarstringRDP内资源jar的名称。descriptionstring用于说明资源jar(例如"法语")的可读字符串。dirPropKeystring属性(property)名,其取值是一个目录名,在该目录下资源消费者应将jar解压为比如"com.te腿on.proxy.schemes"以下是法语的descriptor.xml的实例<package>(resourceid-"lang-fr"type="language"jar="fr"description="French"dirPropKey="teamon.proxy,resources.dir'V〉<resourceid="lang-fr-tmo"type="language"jar="fr-tmobile"description="FrenchTMobile"dirPropKey="teamon.proxy.resources.dir'V〉</package>以下是运营商/品牌verizon的descriptor.xml的示例<package><deploytype="brand"id:"br-verizon"jar="verizon"desc="Verizonwirdcss"dirProp="teamon,proxy.brand.directory7〉</package>以下是法语RDP内容的示例rdpOOl.jardescriptor,xmfr.jaradmin—fr.propertiesbda—fr.propertiesblackberry一fr,propertiescalendar—fi:.propertiescommon—fr.propertiesdefaultbrand—fr.propertiestmobile—fr.propertiesfr-tmobile.jarcom.teamon.resourcescom.tGamon.rcsourcescom,teamon.resourcescom.teamon.resourcescom.teamon.resourcescom.teamon.resourcescom.teamon.resourcesprov.propertiescom.teamon.proxy,resource.tmobiledavmgmtpropertiescom.teamon.proxy.webdav.davmgmt.Resource.tmobileproxy,propertiesproxy,propertiescom.teamon.proxy,resource,tmobile以下用例(usecases)可作为非限制性实例予以实现1.新资源需要向系统添加新语言或运营商。2.添加的组件向系统添加了组件的新实例,该组件实例几乎没有资源,必须能够获取任何失去的资源。3.重启的组件组件关闭并重启。当组件关附时,丢失了一个以上新资源的通知。此时必须获得这些资源。4.品牌位置查询如果账户属于运营商/品牌X,且该品牌的资源不存在,那么检索这些资源。5.更新的资源在运行或维护系统的过程中,修改了语言或运营商资源,需要重新对资源进行部署。6.组件间的版本一致性如果引入了一个新版本的资源,应确保最终不会造成含有不同版本资源的不同实例。外部系统/过程可以为IS系统内的资源部署服务提供RDP。该组件使资源可用,以确保系统的各组件知晓资源。为确保资源的及时推送,必须通知这些组件资源的存在或以足以确保及时性的频率査询这些组件。通知要求各感兴趣方是己知的。查询需要更多的网络资源。然而,使用纯粹的查询方法,可能就不需要主部署服务(PrimaryDeploymentService)了。无论何时组件被添加至系统或被重启,都存在系统不具备所需资源的可能。在这种情况下,组件应该能够与当前部署更新同步。在维护窗口(关闭)期间,从故障中重启时,品牌资源丢失时,或在将查询用于新资源检测的情况下,都需要使用这样的过程来更新资源。给定资源对于各组件不应有所不同。由于不需要即时更新资源,并且由于系统采用不提供更新机制的Java资源束,因此一旦部署了特定资源,通常不得使用更新资源。更新资源的唯一途径是在系统关闭期间通过特殊机制予以更新。以下是对于组件和部署RDP过程的说明。图13示出了涉及资源部署的组件以及资源推送的典型高层处理流程的非限制性示例。所示基本组件包括与部署服务602和高速缓存器604协同工作的池服务(pooledservice)600、以及数据存储器606。部署服务包括主、辅部署服务以及纯"高速缓存器"。当资源消费者被告知了新资源或通过同步过程确定需要获取资源时,资源消费者就通过负载平衡器(BigIP)连接至部署服务,所述负载平衡器将把请求负载平衡至部署服务中的一个。如图所述,主部署服务608从RDP610接收信号。池服务600可与部署服务602协同工作。三个代理614、616、618可与池服务600协同工作。图中示出了两个目录620和622,并且这两个目录能够通过服务得到部署。以下是一组顺序步骤的示例。1.构造RDP,并将其发送至主部署服务。2.部署服务向数据库保存RDP中的资源。3.部署服务向所有感兴趣的代理通知新资源。4.代理通过池部署服务检索资源。5.部署服务查看其高速缓存器中是否有所请求的资源,如果没有,就从数据库中检索所需资源,并将其进行高速缓存。最后返回资源。代理部署该资源。在某一时刻,可通过控制台,脚本或实用应用程序(utilityapplication)创建RDP,然后将其发送给主部署服务(DS)。可以考虑两种向主DS传送RDP的机制(1)客户端工具向已知部署目录再复制RDP。主DS检测到RDP并启动部署过程;以及(2)客户端工具使用由部署服务实现的WebDav接口发送RDP,从而启动部署过程。部署服务(DS)负责接收RDP,维持资源,通知感兴趣的组件,检索资源,提供同步信息。图14示出了基本的非限制性组件,例如,包括高速缓存器702、WebDAV704、注册表706在内的部署服务700和容器708、以及数据库710。容器708提供了DS的执行环境。在这种情况下,由于Soap伺服小程序能够提供WebDAV请求的HTTP监听器(listener),以及一个DB连接池,因而Soap伺服小程序是最可能的候选。由于Soap伺服小程序是池资源,因此,DS也同样成为了池资源。高速缓存器利用服务在本地存储资源。如果高速缓存器中不存在请求资源,就从DB中获取请求资源。资源作为RDP存储在配置目录下。同时创建索引以跟踪高速缓存器中存在哪些资源。高速缓存器还提供一种用于返回一组现有资源的机制,该机制需要对DB进行查询。这将使同步请求能够得到处理。容器被配置用于将WebDAV请求送达DS。WebDAV组件对请求予以处理,处理方式可以是以下三种方式中的一种(1)放置RDP。在本地高速缓存器和DB中存储RDP。通知注册表。(2)检索资源。给定资源键,检索资源。(3)同步。根文件夹上的PropFind返回标识可用资源的列表。该列表将包括资源ID及其版本ID。客户端将利用这些信息确定其应该下载的资源。对接收新资源感兴趣的各个组件必须向主DS注册。注册仅仅是保持套接字打开,使得能够通过该套接字发送通知。通知将由WebDAVURI构成,以便获取RDP。客户端应该采用类似于PDS的机制以便从主DS切换至辅DS。中心数据库用于维持和根据需要向其它DS实例的传播资源。可创建存储着以下信息的资源表<table>tableseeoriginaldocumentpage48</column></row><table>可以创建存储过程以存储资源,获取资源、并获取所有资源的列表。各资源消费者(如代理)具有以下职责(1)在启动时同步资源。(2)维持部署资源的注册表。(3)监听资源通知。(4)获取资源并进行部署。只应在预定维修期内部署更新资源,在预定维修期内资源消费者将被停止和启动。否则假如引入更新组件,则可能导致同一资源的不同版本同时处于使用状态。应采用以下步骤来进行更新资源(1)停止服务(2)如果采用rcopy方案,则跳转至步骤6(3)启动PDS(4)通过WevDAV发送更新RDP(5)跳转至步骤8(6)将RDPRcopy至主DS目录(7)启动PDS(8)重启组件,以在此时使内容同步在启动时的同步过程中,如果无法同步则启动失败。Soap伺服小程序内存在独立的伺服小程序。枚举负和正。在参照图15的以下示例中进一步说明了手持移动无线通信设备1000的示例。设备1000说明性地包括机壳1200、键盘1400和输出设备1600。如图所示的输出设备是显示器1600,优选情况下,显示器是全图示LCD。可选地,还可以使用其他类型的输出设备。处理设备1800包含在机壳1200中,并耦合在键盘1400和显示器1600之间。处理设备1800对用户在键盘1400上的按键动作予以响应,控制显示器1600的工作,和移动设备1000的全部工作。机壳1200可以垂直延长,或者可以具有其他大小和形状(包括翻盖式机壳结构)。键盘可以包括模式选择键,或者其他用于在文本输入和电话输入间切换的硬件或软件。除了处理设备1800,图15中还示意性地示出了移动设备1000的其他部分。这些部分包括通信子系统1001;短程通信子系统1020;键盘1400和显示器1600;其他输入/输出设备1060、1080、1100和1120;以及存储设备1160、1180和各种其他设备子系统1201。优选情况下,移动设备1000是具有语音和数据通信能力的双向RF通信设备。此外,优选情况下,移动通信设备1000具有通过互联网(Internet)同其他计算机系统通信的能力。优选情况下,由处理设备1800执行的操作系统软件存储于永久性存储器,如闪存1160中,但也可存储在其他类型的存储设备,如只读存储器(ROM)或类似的存储单元中。此外,可以将系统软件、专用设备应用程序或其所属部分临时加载于易失性存储器,如随机存取存储器(RAM)1180中。移动设备接收到的通信信号也可存储于RAM1180中。除了它的操作系统功能以外,处理设备1800还支持在设备1000上执行应用软件1300A-1300B。在制造过程中,可以将一组预定的、用于控制基本设备操作(如数据和语音通信1300A和1300B)的应用程序安装在设备1000上。此外,可以在制造过程中安装个人信息管理器(PIM)应用程序。优选情况下,PIM能够对数据项,如电子邮件、日历事件、语音邮件、约会和任务项进行组织和管理。优选情况下,PIM应用程序还可以通过无线网络1401发送并接收数据项。优选情况下,PIM数据项通过无线网络1401与所存储的或与主机系统相关的设备用户的相应数据项进行无缝集成、同步以及更新。包含数据和语音通信功能在内的通信功能可通过通信子系统1001予以实现,也可以用短程通信子系统来实现。通信子系统1001包括接收机1500、发射机1520、以及一根以上的天线1540和1560。此外,通信子系统1001还包括诸如数字信号处理器(DSP)1580之类的处理模块以及本地振荡器(LOs)1601。通信子系统1001的具体设计和实现取决于移动设备1000所要工作的通信网络。例如,移动设备1000可以包括被设计用于使用MobitexTM、DataTACTM或通用分组无线业务(GPRS)移动数据通信网络,以及被设计用于使用任意一种话音通信网络,如AMPS、TDMA、CDMA、PCS、GSM等的通信子系统1001。移动设备1000还可用于单独的和集成的其他类型的数据和话音网络。网络接入要求取决于通信系统的类型。例如,在Mobitex和DataTAC网络中,利用同各设备相关的唯一个人身份号码或PIN向网络登记移动设备。然而,在GPRS网络中,网络接入与设备的用户相关。因此,为了在GPRS网络中使用,GPRS设备需要一个通常被称为SIM卡的用户识别模块。当完成了所需的网络登记或激活过程,移动设备1000就可以通过通信网络1401发送和接收通信信号。将天线1540从通信网络1401接收到信号传送至接收机1500,接收机提供信号放大、下变频、滤波、信道选择等功能,还可以提供从模拟到数字的转换。接收信号的模数转换使DSP1580可以执行更复杂的通信功能,如解调和译码。以类似的方式,所要发送至网络1401的信号由DSP1580进行处理(例如,调制和编码),然后被供至发射机1520,以进行数模转换、上变频、滤波、放大、并通过天线1560发送至通信网络1401。除了处理通信信号,DSP1580还为接收机1500和发射机1520提供控制。例如,可以通过实现于DSP1580中的自动增益控制算法,自适应地对作用于接收机1500和发射机1520中通信信号上的增益加以控制。在数据通信模式下,由通信子系统1001对接收信号(如文本消息或下载的网页)进行处理,并将处理结果输入处理设备1800。然后,由处理设备1800对接收信号进行进一步地处理,以便将处理结果输出至显示器1600或其他辅助I/O设备1060。设备用户可以用键盘1400和/或其他辅助I/O设备1060,如触摸板、摇臂开关、指轮、或其他类型的输入设备编辑诸如电子邮件消息等数据项。然后,可以利用通信子系统1001通过通信网络1401发送编辑好的数据项。,在语音通信模式下,除了将接收信号输出至扬声器IIOO,以及用麦克风1120产生发送信号以外,设备的全部操作基本上与数据通信模式相同。还可以在设备1000上实现可替换的语音或音频I/O子系统,如语音消息记录子系统。此外,还可以在语音通信模式下使用显示器1600,比如用以显示主叫方身份、语音呼叫的持续时间或其他语音呼叫的有关信息。短程通信子系统支持移动设备1000同其他相邻系统或设备间的通信,相邻系统或设备不必是相似设备。例如,短程通信子系统可以包括红外设备以及相关的电路和组件,或Bluetooth通信模块,以同同样支持红外、蓝牙功能的系统和设备进行通信。受益于前述说明及相关附图中的教导,所属领域技术人员将构思出本发明的许多改进方案和其他实施例。因此,应当理解的是,本发明不仅限于所公开的具体实施例,还意在将所述改进方案和实施例包含于所附权利要求的范围以内。权利要求1.一种用于呈现表示页面的系统,包括服务器,包括可扩展样式表转换(XSLT)模块;以及存储介质,包含图像和文本至少一项,其中,所述XSLT模块用于调用XSL扩展,并基于非本地区域的语言需求将图像和文本至少一项呈现为表示页面。2.根据权利要求1所述的系统,其中,所述表示页面基于区域被呈现为本地化内容。3.根据权利要求2所述的系统,还包含资源束,所述资源束包含本地化图像和文本至少一项,并被呈现为XML文档,所述XML文档由XSLT模块进行处理,以产生本地化内容。4.根据权利要求2所述的系统,其中,所述本地化内容包含以非本地区域使用的语言表示的内容。5.根据权利要求1所述的系统,其中,所述XSL扩展包括JAVA扩展。6.根据权利要求1所述的系统,其中,所述XSLT模块用于呈现HTMP或WAP输出。7.根据权利要求1所述的系统,其中,所述服务器包括web服务器。8.根据权利要求1所述的系统,其中,所述服务器包括电子邮件(email)服务器。9.根据权利要求1所述的系统,其中,所述服务器用于存储多个资源部署包(RDP),各RDP包含可基于区域进行部署的部署内容。10.—种用于在无线通信系统中呈现表示页面的系统,包括移动无线通信设备;无线通信网络;移动办公平台,可操作用于通过所述无线通信网络同所述移动无线通信设备进行通信,所述移动办公平台包括可扩展样式表转换(XSLT)模块;存储介质,包含图像和文本至少一项,其中,所述XSLT模块用于调用XSL扩展,并基于非本地区域的语言需求在所述移动无线通信设备上将图像和文本至少一项呈现为表示页面。11.根据权利要求io所述的系统,其中,所述表示页面基于区域被呈现为本地化内容。12.根据权利要求11所述的系统,还包含资源束,所述资源束包含本地化图像和文本至少一项,并被呈现为XML文档,所述XML文档由XSLT模块进行处理,以产生本地化内容。13.根据权利要求11所述的系统,其中,所述本地化内容包含以非本地区域使用的语言表示的内容。14.根据权利要求10所述的系统,其中所述扩展包括JAVA扩展。15.根据权利要求10所述的系统,其中所述XSLT模块用于呈现HTMP或WAP输出。16.根据权利要求10所述的系统,还包括可以同所述移动办公平台一起使用的服务器。17.根据权利要求10所述的系统,其中所述移动办公平台用于存储多个资源部署包(RDP),各RDP包括可基于区域进行部署的部署内容。18.—种呈现表示页面的方法,包括使用扩展样式表转换(XSLT)模块为图像和文本至少一项调用XSL扩展;以及基于非本地区域的语言需求的将图像和文本至少一项呈现为表示页面,19.根据权利要求18所述的方法,还包括调用JAVA扩展。20.根据权利要求18所述的方法,还包括存储多个资源部署包(RDP),所述各RDP包括可基于区域进行部署的部署内容。21.根据权利要求18所述的方法,还包括与其上呈现了图像和文本至少一项的移动无线通信设备进行通信。全文摘要一种系统在比如无线通信系统中呈现表示页面。服务器包括可扩展样式转换(XSLT)模块。存储介质包含图像和文本至少一项。XSLT模块用于调用XSL扩展,并基于非本地区域语言需求将图像和文本至少一项呈现为表示页面。文档编号G06F17/22GK101405724SQ200680053976公开日2009年4月8日申请日期2006年3月27日优先权日2006年3月27日发明者克莉丝·里拉,内森·普罗沃,萨林德·维尔克申请人:蒂蒙系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1