??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧美在线x视频,在线看亚洲十八禁网站,亚洲人6666成人观看http://www.tkk7.com/masen/category/21361.htmlzh-cnThu, 10 Jun 2010 20:10:32 GMTThu, 10 Jun 2010 20:10:32 GMT60PHPRPChttp://www.tkk7.com/masen/articles/323232.htmlMasenMasenThu, 10 Jun 2010 06:49:00 GMThttp://www.tkk7.com/masen/articles/323232.htmlhttp://www.tkk7.com/masen/comments/323232.htmlhttp://www.tkk7.com/masen/articles/323232.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/323232.htmlhttp://www.tkk7.com/masen/services/trackbacks/323232.html
PHPRPC: 是一个轻型的、安全的、跨|际的、跨语言的、跨q_的、跨环境的、跨域的、支持复杂对象传输的、支持引用参C递的、支持内容输出重定向的、支持分U错?处理的、支持会(x)话的、面向服务的高性能q程q程调用协议?/div>
官方|站 Q?http://www.phprpc.org/zh_CN/


Masen 2010-06-10 14:49 发表评论
]]>WBShttp://www.tkk7.com/masen/articles/287533.htmlMasenMasenMon, 20 Jul 2009 13:57:00 GMThttp://www.tkk7.com/masen/articles/287533.htmlhttp://www.tkk7.com/masen/comments/287533.htmlhttp://www.tkk7.com/masen/articles/287533.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/287533.htmlhttp://www.tkk7.com/masen/services/trackbacks/287533.html  既然没有WBSQ就没有目理Q如何制定正的WBS成为项目经理管理项目的核心了。每个项目管理比较成熟的公司Q针对不同类型的目都有一定的WBS的模版,供项目经理参考。对于复杂的大项目,IBM公司的WBS制作程如下Q?/div>
  1、制定工作品清?PL)。工作?Working Product)是项目需要出的工作l果Q可以是目最l交付成果的l成部分Q也可以是项目中间过E的产出l果。以软g开发ؓ(f)例,软g中的用户理模块是最中Y件品的一部分QY件的需求分析文档是软床q程中的文gQ都是Y件开发这个项目的工作产品。工作品有大有,有的怺兌Q有隶属的关pR列出工作品清单的q程Q可以是头脑风暴的方法,目l共同完成?/div>
  2、制定工作品分解结?PBS)。工作品大大小列Z很多Q大型项目有几百,几千V工作这些工作品的属性和关系Q用l构化的Ҏ(gu)l织q些工作产品QŞ成一个自向下的逐l分的工作品分解结?PBSQProduct Breakdown Structure)。这是刉业内的产品物料?BOM)Q说明一个品有多少个零件组成?/div>
  3、制定工作Q务分解结?WBS)。有了PBSQ只要把获得工作产品的Q务明,可用根据PBS的结构,得到WBS了。注意同L(fng)PBSQ可用有不同的WBSQ因得同样工作品的d可以是不同的。例如Y件开发中的用L(fng)理模块,是PBS中的工作产品Q对于到WBS中,可以是不同的dQ一U是采购一个用L(fng)理模块,另一U可以是目组开发一个用L(fng)理模块?/div>
  4、制定组l分解结?OBS)。WBS中的d定了,完成d的责Mh也就可以明确了。因此由WBS则可以Ş成整个项目的l织分解l构Q由那些人来完成目的Q务,得到工作产品Qƈ完成目?/div>
  其中的关键是分解的结构,PBS、WBS和OBS是同一个结构,只是从不同的角度来阐q这个结构。关于这个结构的分解Ҏ(gu)Q常用的有组件分解方法和q程分解Ҏ(gu)。典型的lgҎ(gu)是刉业中把一个完整的产品Q逐分解到零件。典型的q程分解Ҏ(gu)可以是Y件开发从需求到设计、编码、测试的一个过E。项目分解中Q这两种Ҏ(gu)往往交替使用Q其最l是把项目分解到一个个具体和细的工作d?/div>
  l构化,是WBS的另一特点Q是Z对Q务进行管理?nbsp;


Masen 2009-07-20 21:57 发表评论
]]>OSGIhttp://www.tkk7.com/masen/articles/172132.htmlMasenMasenWed, 02 Jan 2008 03:59:00 GMThttp://www.tkk7.com/masen/articles/172132.htmlhttp://www.tkk7.com/masen/comments/172132.htmlhttp://www.tkk7.com/masen/articles/172132.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/172132.htmlhttp://www.tkk7.com/masen/services/trackbacks/172132.html
W一?引言
OSGiQOpen Service Gateway InitiativeQ最初的目的是为各U嵌入式讑֤提供通用的Y件运行^収ͼ卛_以屏蔽设备操作系l与g区别的中间gq_。PC基本上被 Wintel架构垄断Q运行在PC上的应用E序完全可以在另一台PC上运行;但对于其他设备来说就不同Q它们的gq_可能完全不同Q其操作pȝ也是来自不同厂商Q所以Q何设备上的应用程序都需要定Ӟ于是׃生了对中间gq_的需求?
OSGiq不是专为家庭网l而制定的Q除了住宅网养I像R载电(sh)脑等其他Ud嵌入式设备也都可以通过OSGi接入InternetQ获取不同的应用服务。它为服务供应商、Y件供应商、网兛_发h员以及设备供应商提供了一个开放、通用的架构,使它们能互动地开发、部|和理服务。其软g环境ZSun?JAVA虚拟机,q不涉及具体的连接协议。对于Q何新讑֤Q它都能够灵zd其U_现有|络。可以用OSGi的对象包括各U数字和模拟的机盒、服务网兟뀁有U电(sh)视电(sh)~调制解调器、消费类?sh)子产品、PC、工业计机、汽车等?
因ؓ(f)OSGiZJAVA技术,而JAVA最大的好处是q_无关性。在不同cd的住宅网兌备上都可以实现OSGi软g。而且OSGi规范可以与各U设备访问标准桥接(如图1所C)Q比如遵循OSGi的系l可以很好地部v和管理Jini服务Q它可以提供Jini讑֤与服务提供商之间的交互。对于像 HAVi、UPnP{基于非JAVA技术的标准和规范,OSGi也可以提供与它们沟通的桥梁?

W二?OSGi规范介绍
2.1 OSGi规范的体pȝ?
在OSGi规范中提供了一个参考的体系架构[1]Q也基本上体COSGi的设计初街?
OSGi的体pL构是Zq样一个模型的Q经营者管理着一个潜在的巨大的服务网l^台。OSGi规范假设q个服务q_是完全被q个l营者控Ӟq且l营者用该服务q_去运行来自不同服务提供者提供的服务。然而这只是一个场景,q有其他模型Q例如PC机的部vQ工业应用(如,Ud?sh)话基站是一个管理中心完全控制着各个斚wQ,中间件模型等。OSGi最q泛的应用是在网l化的服务。除了参考模型之外,规范之中q提C其他的一些模型。请参考OSGi 3.0规范[1]?
2.1.1 OSGi参考体pL构的特点
1Q?商业驱动Q经营者的观点驱动OSGi的体pL构?
2Q?完美Q体pL构必L_完善和详l的Q以致允许开发商生出健壮的产品?
3Q?不受限的Q由于经营者所操作的服务^台在性能和网l环境的变化是非常大的?
4Q?开放:(x)标准不是Z个具体的pȝ而设计的QOSGi参考体pL构必考虑和支持许多不同的场景?
2.1.2 OSGi参考体pL构所涉及到实?
1. 服务q_Q一个JAVA虚拟机的实例Q一个OSGi框架l构Q和q行着的服务包的集合?
2. 服务q_服务?SPS)Q驻留一个或多个服务q_的硬件?
3. q营商:(x)掌控许多服务q_的组l?
4. 服务应用Q一套Y件包Q文档和支撑软g所l合h的应用,q些应用向终端用h供服务?
5. 服务用户Q获取服务应用服务的用户?
6. 服务提供者:(x)开发服务应用ƈ且通过服务部v理器部|到服务q_上?
7. 服务部v理器:(x)部v和部分管理一个或多个服务提供者提供的服务应用?
8. 服务q行支持Q支撑Y件和gQ它们ƈ不驻留在服务q_服务器上Q但是在q行服务应用旉要它们?
9. 服务集成者:(x)负责保来自不同服务提供者的服务应用的集成?
10. 服务开发者:(x)开发服务应用?
11. 刉商Q制造服务^台服务器
12. 拥有者:(x)服务q_服务器拥有者?
13. 收费提供者:(x)接受帐户信息Qƈ且提供统一的帐单给服务消费者?
14. |络提供者:(x)提供服务q_的网l链接?
15. 证书授权Q管理证书的l织Q这些证书被用来鉴别pȝQ个人和l织?
首先是制造商刉服务^台服务器Q拥有者从刉商处购买服务^台服务器Q网l提供商提供服务q_服务器和互联|的接入。服务^台的q营商用网路提供者的接入基础件接入服务^台服务器Q同时服务^台经营者控制着一个或多个q行在服务^台服务器的服务^台。另一斚wQ服务^台经营者许可服务部|管理器去部|服务应用到服务q_上?
其次服务开发者开发服务应用,一个服务应用可能包含多个服务包而这些服务包是真正运行在服务q_上的。服务提供者从服务开发者处得到服务应用q且可能?x)委托服务运行支撑系l去支撑该服务应用在服务q_上的q行。服务集成者将服务提供者获取的服务应用和支持系l集成v来由服务部v理器部|到服务q_上?
最后服务消费者订阅服务提供者提供的服务?
更有意思的是这里还有一个服务用户实体,从图中可以看出服务消费者可以包含多个服务用P服务用户是真正接受服务的实体。也是说服务消费者是一个虚的实体,多个服务用户可以消费同一个服务消费者订阅的服务。这好比不同的h可以通过同一个电(sh)话打?sh)话一栗这无疑提高了OSGi规范灉|性?

Masen 2008-01-02 11:59 发表评论
]]>
LBShttp://www.tkk7.com/masen/articles/130912.htmlMasenMasenTue, 17 Jul 2007 11:15:00 GMThttp://www.tkk7.com/masen/articles/130912.htmlhttp://www.tkk7.com/masen/comments/130912.htmlhttp://www.tkk7.com/masen/articles/130912.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/130912.htmlhttp://www.tkk7.com/masen/services/trackbacks/130912.html位置信息通常可以归纳Z大类Q移动位|信息,主要指R辆和人的实时位置Q通常以^面坐标方式给出,或者指出附q最具代表性的地物、单位名U?固定位置信息Q也UCؓ(f)地图cM息,指重要或明显地物、徏{、机构的详细属性(方位、距R到达\U等Q?
调查发现Q用户对Ud位置信息的需求远q超q了对固定位|信息的需求,甚至在寻求固定位|服务时也需要借助Ud位置信息完成Q这也就军_了LBS技术的主要发展方向?
在无U世界里Q?#8220;WhoQW(xu)hatQW(xu)hen and Where”四要素中Q历来最h战性的是定Ud目标的位|信息。如果可以在Ud通信的系l服务中加入位置信息服务功能Q对普通移动用h说将是极具吸引力的,无论q种功能是基于SMSq是WAP或是其他技术,甚至是基于移动多媒体d杉K可以?
什么是LBSpȝQ?
一个完整的LBSpȝ有四个部分组成:(x)定位pȝ、移动服务中心、通信|络以及Udl端Q如?所C?
http://www2.ccw.com.cn/04/0429/b/pic/b58_2t2.jpg
其中Q定位系l包括全球卫星定位系l和基站定位pȝ两个部分。空间定位技术是整个LBSpȝ得以实现的核心技术,q一部分正在不断完善当中Q移动运营商可以选用某种定位技术或者组合定位技术,来获得适当的定位精度?
Ud服务中心负责与移动智能终端的信息交互和各个分中心Q定位服务器、内Ҏ(gu)供商{)的网l互q,完成各种信息的分cR记录和转发以及分中心之间业务信息的动QƈҎ(gu)个网l进行监控?
通信|络是连接用户和服务中心的,要求实时准确C送用戯求及服务中心的应{。通常可选用GSM、CDMA、GPRSQGeneral Packet Radio ServiceQ、CDPDQCellular Digital Packet DataQ等无线通信手段Q在此基上依托LBS体系发展无线增值服务。另外,国内已徏成的众多无线通信专用|,甚至有线?sh)话、寻呼网和卫星通信、无U局域网、蓝牙技术等都可以成为LBS的通信链\Q在条g允许或必L可接入Internet|络Q传输更大容量的数据或下载地图数据?
Udl端是用h一接触的部分,手机、PDA均有可能成ؓ(f)LBS的用L(fng)端。但是在信息化的CC会(x)Q出于更完善的考虑Q它要求有完善的囑Ş昄能力Q良好的通信端口Q友好的用户界面Q完善的输入方式Q键盘控制输入、手写板输入、语x制输入等Q,因此PDA以及某些型号的手机成Z人LBSl端的首选?
LBSpȝ工作的主要流E如下:(x)用户通过Udl端发出位置服务甌Q申L(fng)q各U通信|关以后Qؓ(f)Ud定位服务中心所接受Q经q审核认证后Q服务中心调用定位系l获得用L(fng)位置信息Q另一U情冉|Q用户配有GPS{主动定位设备,q时可以通过无线|络d位|参数发送给服务中心Q,服务中心Ҏ(gu)用户的位|,Ҏ(gu)务内容进行响应,如发送\U图{,具体的服务内容由内容提供商提供。图2是该过E的主要信息程。基于位|服务的U类可大致分?U,如图3所C?
http://www2.ccw.com.cn/04/0429/b/pic/b58_2t3.jpg
?
http://www2.ccw.com.cn/04/0429/b/pic/b58_2t4.jpg
?
不同的基于位|的应用所需要的_ֺ水^也不同。例如,对于航船来说Q它们到岸的距M及v水的深度{数据都要求一定精度,而h的定位_ֺ能够辑ֈ100c_可以接受了。表1列D了一些基于位|的应用Qƈ提供了这些应用所需的下限精度和能被市场所接受的精度数据?
http://www2.ccw.com.cn/04/0429/b/pic/b58_2t1.jpg
Ud通信用户和互联|用L(fng)是当今发展最速的信息产业领域中的两大支柱用户。各cM息技术之间的不断融合和相互渗透,也逐渐Dq两大用L(fng)体不断统一合ƈ。在q种势下,Ud通信与互联网技术逐渐l一CU技术^CQ即许多专家学者和技术厂家所倡导的移动互联网概念Q而移动互联网的Ş成主要是依赖于移动数据通信技术的发展?
随着Ud通信pȝ技术的发展和移动数据传输技术的不断提高Q移动数据业务也必将q单的短消息方式向l合信息服务的方向发展。能够向Ud用户提供高速率的多媒体l合信息服务最l成为各Udq营商的主要业务方向。从?可以看到通过调查ȝ出的用户青睐的移动数据业务的比例划分?
http://www2.ccw.com.cn/04/0429/b/pic/b58_2t5.jpg
LBS应用的Y环境
前面我们看到了一个LBSpȝ的外在硬件框Ӟ而要开展LBS的应用服务,则必d有完整的LBS应用架构Q主要包括定位技术、定位网兟뀁中间g和定位应用,可以说它们是LBSpȝ实现的Y环境?
定位技术是指如何获取用L(fng)位置Q基本可以分为基于网l的、基于终端的和؜合型三类。采用不同的定位技术,需要电(sh)信运营商增加的投入是不一L(fng)Q如果采用基于MAP-ATI的Cell-ID定位技术,q营商只需要保证网l支持MAP Phase?可以了Q而采用AGPS技术,则需要移动终端和|络讑֤的双重支持?
定位|关是LBS业务在运营商|络中需要配|的核心讑֤。由于LBS是一c较为特D的?sh)信增值服务,不仅需要把?sh)信|络作ؓ(f)一U通信和信息传输的手段Q还需要利用电(sh)信网l的资源对用戯行定位。因此相应的?sh)信|络l构也会(x)有所变化。其中GMLCQ网关移动定位中心)既是核心的网l设备,也是对外开展LBS业务的接口,它主要具备以下几功能:(x)定位应用接入控制功能QLACFQ,外部应用需要通过它和GMLC接口Q才能完成鉴权、服务、计费等功能Q定位应用的授权功能QLAAFQ,主要完成|络和具体用户对某个LBS应用的授权;用户坐标的{换功能(LCTFQ;定位应用计费QLCBFQ;定位的操作和l护QLOMFQ?
中间件其实是q营商专门ؓ(f)ISP设计的LBSl一接入q_?
׃GMLC的具体规范ƈ不统一Q各大厂商的接口设计均有不同Q而且对于不同的通信|络Q如GSM和CDMAQ接口规范差别也很大。运营商Z方便ISP的接入和应用开发商的LBS业务设计Q将各种GMLC的接入规范进行统一。这样ISP接入时只需要遵循一个标准,中间件将?x)自动完成到不同GMLC的协议{换。中国移动和中国联通都制定了相应的LBS中间件规范?
LBS应用的最后一个基本元素就是定位应用,下面详l介lLBS应用服务中心的结构和功能Q以便ISP和应用提供商对开展和设计LBS业务有一个基本认识?
LBSq营中心如何搭徏Q?
一个完整的LBS增值服务运营中心的基本l构如图 5所C?
该结构以LBS应用为核心,配备了相应的接口和服务数据支持。接口主要包括三c:(x)和定位中间g的接口、用戯问和理接口以及服务数据接口。服务数据主要包括含有空间信息的GIS数据和普通数据?
和定位中间g的接?
对运营商中间件的接口是LBS应用Ҏ(gu)的接口,主要用于完成以下几项功能Q?
定位的请求与授权 ׃用户的位|涉及到用户的隐U,一个接入的定位应用需要经q双重检,首先定它是否是一个合法的定位应用Q如果不合法QGMLC不?x)对定位hq行响应Q因此ISP在接入时必须得到相应的服务代码和密码Q以保持LBS服务的合法性。一般来_(d)只要ISP和GMLC的连接不中断Q这h权过E只需在初始连接时做一ơ即可。授权的另一层含义是指该应用是否h讉K某个特定用户位置信息的许可,q种授权可以防止一个ISP随意了解非注册用L(fng)位置信息Q这cL权过E将伴随每个定位h?
定位的请求与响应 q是ISP获得用户位置信息最为直接的Ҏ(gu)QISP不仅获得用L(fng)位置信息Q还获得其QoS数据Q如位置的精度、时间上的有效性等。ISP以此数据作为LBS服务以及相应收费的基?
如前文所qͼISP的LBS应用和GMLCq不直接接口Q而是l过q(sh)信运营商标准化后的中间g。一个可以借鉴的接口规范是LIF-MLPQLocation Interoperability Forum-Mobile Location ProtocolQ,它采用安全方式的HTTP传输协议Qƈ用XML语言描述接口字段和功能,因此ISP接入时也?x)被分配相应的HTTP端口?
用户接口
LBS业务中的用户接口包括两类Q一cL用户的访问接口,另一cL用户隐私理接口Q参见图 5。用戯问接口是指用L(fng)不同使用方式。对ISP而言Q不用户采用什么样的用方式,ISP接受用户h的物理接口基本上都是通过HTTP协议传输的,但其承蝲的高层协议却各不相同Q参见图6?
http://www2.ccw.com.cn/04/0429/b/pic/b58_2t6.jpg
http://www2.ccw.com.cn/04/0429/b/pic/b58_2t7.jpg
呼叫中心和普通上|方式的HTTP接口应该是一致的Q因为在q行位置查询时呼叫中心的接听人员和自׃|的用户所q行的操作基本上一致。而HTTP承蝲的高层协议则完全由LBS本n的应用逻辑军_?
采用手机短信q行LBS业务hӞISP需要和短信中心有直接或间接的接口,以便接收用户的短信查询ƈ反馈l果短信。一般而言需要在HTTP的基上加载用于短信传输的SMPPQShort Message Peer to PeerQ协议?
用户通过WAP产生的请求一般是标准|络讉K的简化版本,对应产生的结果也?x)相应简单,以便在手机终端上昄l果?
至于用户隐私理接口Q用户可通过它对LBS业务q行授权QISP一般不可能q预q一接口。这cM于网上支付业务,账单是在ISP的网站上生成的,而支付则是在银行的网站上完成的。LBS用户通过ISP的应用服务器得到服务Q但授权却是直接在电(sh)信网l中完成。有时LBS的授权逻辑和应用逻辑高度相关Q因此ISP在申请开展某ULBS业务Ӟ需要了解运营商为用h供的隐私理逻辑是否支持自己的LBS业务?
LBS应用服务
应用服务是ISPq营的有特色的LBS服务Q和大多数其他服务相同,该服务大多是多线E的q发服务Q程序一般采用Java语言~写Q运行在EJB和W(xu)eb服务器上Q如JBoss、Tomcat{。ISPq营规模的不同和LBS应用服务的复杂度不同军_了服务器的处理能力要求也?x)有很大的不同,一般ISP在选择LBS应用Ӟ应充分考虑光|的可扩展性,以便日后用户数量增加Ӟ可以快速升U和扩容?
GIS数据库和其他ICP接口
单纯的位|信息,如经U度{,对用h说缺乏直观的意义Q因此要使位|信息真正生h(hun)|LBS应用服务中一般都需要配合用GISpȝQ例如返回用户附q的标志性徏{,为用h供周边信息甚臛_航信息等?
GISpȝ是一个庞大和复杂的系l,它包括了软g和数据两部分。常用的GIS软g有MapInfo、ArcInfo{,它们通常h丰富的API资源和工具包。不qGIS数据的有效性却是LBS的一个应用瓶颈,因ؓ(f)GIS数据是否完整、真实和实时直接媄响到用户对LBS业务的感受,所以选择合适的GIS数据源是ISP开展LBS业务时必L重对待的?
׃GIS数据量非常庞大,而且在不断变化中Q绝大部分ISP不具备自我完善和快速更新GIS数据的能力,因此需要向专业的GIS数据生单位q行购买或租用。如果采用购买方式,GIS数据源在本地QISP需要有一个专业的服务器运行整个GISpȝQ包括Y件和数据Q。这L(fng)好处是LBS业务的系l响应速度快,但ISP的运营成本则?x)相应提高。另一U方式是ISP向GIS数据提供商申误E数据访问,q根据访问情况,支付数据使用贏V这样可以达到资源最为有效的׃nQ同时也能降低ISP的运营和l护成本Q但问题是LBS业务响应速度?x)因为数据的q程讉K而降低,降低的程度取决于ISP向GIS数据提供商租借的带宽和GIS数据提供商本w的服务器处理能力。ISP可以Ҏ(gu)不同的需要,选择合适的方式开展LBS业务?
其他ICP接口的目的也是ؓ(f)了补充ISP本n数据不而设计的Q这L(fng)合用L(fng)位置信息可以派生出更多有用的其他服务信息,从而突出LBS以h为本的服务特炏V?
关于建立LBS服务的几点徏?
从以上LBS应用服务中心的架构可以看刎ͼ真正的LBS应用逻辑设计在LBS业务设计中只占较?yu)的比例Q而大量的工作集中在数据获取和接口设计上。接口设计特别是中间件的接口设计本质上对所有的LBS业务都是一L(fng)Q因此最好的Ҏ(gu)是Ҏ(gu)q营商提供的中间件接口规范设计一个统一的接口工具包供所有的应用设计商共享,q样可以在很大E度上避免应用设计的重复Q也可以帮助设计商更快地开发品。工具包的设计采用Java语言最为合适,因ؓ(f)它的q_UL性最好,也才能被真正地共享?
基础数据׃n、强调特色数据、特色服务也是ISP发展LBS的重要方向。大量的ISP不可能自行采集、制作和l护复杂的基GIS数据Q只有通过有偿׃n的方法,才能使ISP把精力真正地集中在LBS服务上,也才能真正地发挥自己的特点和专长d引更多的用户使用?
和W(xu)AP应用更紧密的l合是LBS业务的另一个重要发展方向。和短信相比QW(xu)AP是一U更为高速和廉h(hun)的传输手D,高速无U数据传输也是移动通信不可逆{的发展方向。当传输手段逐步完善ӞLBS业务的优势就能更好地体现出来Q如更友好的用户界面、更大的反馈信息量等?
·资?#183;
Ud通信pȝ讑֤商的LBS解决Ҏ(gu)
׃存在巨大的市场潜力,全球各大主要Ud讑֤刉商都在开展与LBS服务相关的研发和市场开拓工作。ؓ(f)q营商提供一套实用的Ud位置定位服务q_讑֤Q已成ؓ(f)Ud通信讑֤刉商保持和扩大其市场份额的一U战略手Dc?
摩托|拉的MALSpȝ
Motorola MALS提供的是ZSTK Cell ID方式的端到端位置服务解决Ҏ(gu)Q支持GSM和CDMA|络以及利用基站和卫星的混合定位解决Ҏ(gu)Q系l由三部分组成:(x)含STK卡的普通手机、短信中心和定位服务器。其中定位服务器包括服务应用q_Q中间gQ、定位服务引擎及地图/应用服务提供商?
该系l的实施不涉及Q何网l单元的g和Y件升U,可以支持不同讑֤提供商的|络Q可实现漫游。其业务实施无需对HLRQHome Location RegisterQ进行Q何查询,不媄响现|业务?
诺基亚的mPositionUd业务pȝ
mPositiont也是完全的端到端Ud位置服务解决Ҏ(gu)。它?yu)用L(fng)位置信息、依赖于位置信息的应用程序、中间g以及服务l合在一P为最l用h供了新的应用I间?
它支持现有网l向GPRS?G和IPRN的^滑过渡,q支持多U不同的定位Ҏ(gu)Q经q升U它q能满更高的系l精度要求。通过开放接口,q营商能够将mPosition与现有服务^台集成用。将来,mPosition定位pȝq将提供支持传统?sh)话的mPositionҎ(gu)、支持E-OTD的mPosition、支持AGPS的mPosition、支持WCDMA的RAN1版mPosition、支持WCDMA的RAN2版mPosition以及支持IPRN的mPosition?
ZSMSҎ(gu)的LBSpȝ
短信服务是当前最为成功,应用最q泛的无UK信业务之一Q它提供手机用户之间文本信息的交方式。利用SMS作ؓ(f)通信链\来开展LBS服务Q可以充分利用现存的GSM骨干|络Q投资小、回报快Q因此成为当前开展LBS服务的主方案。中国移动新q推出的动感地带业务Q附加了一pd的增值服务。如定某个手机L(fng)的位|、查找最q的饭店{,是此U方法的单实例?
用短信方式实现的LBSpȝ由SMS中心、移动服务中心(由SME仿真器和应用服务器组成)、定位系l和内容提供商四个部件组成。其中,SMS中心负责在SME和手机基站之间传送和存储短消息;Ud服务中心在逻辑上可以分成SME仿真器和应用服务器,SMS中心把信息传送给SME仿真器,而SME仿真器通过Socket与SMS中心q行通信Q对端口q行监听QSMPP协议是一个公开的工业标准,定义了外部实体如因特|应用和Ud|络SMS中心之间的接口?
用户以短信的方式发送位|服务请求,SMS中心把信息发l移动服务中心,SME仿真器则从短信中提取Ud用户的标识信息和特定的应用信息,然后把这些信息{发给应用服务器,应用服务器再利用q些信息向位|提供商发出定位h。之后内Ҏ(gu)供商对请求进行处理,q将处理l果q回l应用服务器。最后,SME对结果进行处理,转换成短信的格式q回l移动设备。如果消息的长度过讑֤的设定|消息?x)被自动拆分成多条来发送。移动服务中心则?x)追t?监察事务的整个流E。(?李冬航)
Q计机世界?W?9?B5、B6、B7Q?

Masen 2007-07-17 19:15 发表评论
]]>
Data Mininghttp://www.tkk7.com/masen/articles/126240.htmlMasenMasenMon, 25 Jun 2007 17:32:00 GMThttp://www.tkk7.com/masen/articles/126240.htmlhttp://www.tkk7.com/masen/comments/126240.htmlhttp://www.tkk7.com/masen/articles/126240.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/126240.htmlhttp://www.tkk7.com/masen/services/trackbacks/126240.html数据挖掘是从大量的数据中抽取出潜在的、不Zh知的有用信息、模式和势?/p>

数据挖掘的目的:(x)提高市场决策能力Q检异常模式;在过ȝl验基础上预a未来势{?/p>

数据挖掘不同的术语和定义Q?font face="宋体, MS Song" size=3>data mining, knowledge discovery, pattern discovery, data dredging, knowledge, data archeology.



Masen 2007-06-26 01:32 发表评论
]]>
ETLhttp://www.tkk7.com/masen/articles/126239.htmlMasenMasenMon, 25 Jun 2007 17:15:00 GMThttp://www.tkk7.com/masen/articles/126239.htmlhttp://www.tkk7.com/masen/comments/126239.htmlhttp://www.tkk7.com/masen/articles/126239.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/126239.htmlhttp://www.tkk7.com/masen/services/trackbacks/126239.html        ETLx据抽取(ExtractQ、{换(TransformQ、装载(LoadQ的q程。它是构建数据仓库的重要环节。数据仓库是面向主题的、集成的、稳定的且随旉不断变化的数据集合,用以支持l营理中的决策制定q程。数据仓库系l中有可能存在着大量的噪声数?引v的主要原因有Q滥用羃写词、惯用语、数据输入错误、重复记录、丢失倹{拼写变化等。即便是一个设计和规划良好的数据库pȝQ如果其中存在着大量的噪声数据,那么q个pȝ也是没有M意义的,因ؓ(f)“垃圾q,垃圾?#8221;Qgarbage in, garbage outQ,pȝҎ(gu)׃可能为决{分析系l提供Q何支持。ؓ(f)了清除噪声数据,必须在数据库pȝ中进行数据清z。目前有不少数据清洗研究和ETL研究Q但是如何在ETLq程中进行有效的数据清洗qɘq个q程可视化,此方面研I不多。本文主要从两个斚w阐述ETL和数据清z的实现q程QETL的处理方式[19]和数据清z的实现Ҏ(gu)?br>Q?QETL的处理方?br>本文所采用的ETLҎ(gu)是数据库D区域中的ETL处理方式Q它不用外部引擎而是使用数据库作为唯一的控制点。由于源pȝSQLserver2000是关pL据库Q它的段表也是典型的关系型表。成功地外部未修改数据载入数据库后Q再在数据库内部q行转换。数据库D区域中的ETL处理方式执行的步骤是提取、装载、{换,即通常所说的ELT。[21]q种方式的优Ҏ(gu)为抽取出的数据首先提供一个缓冲以便于q行复杂的{换,减轻了ETLq程的复杂度?br>Q?QETLq程中实现数据清z的实现Ҏ(gu)
首先Q在理解源数据的基础上实现数据表属性一致化。ؓ(f)解决源数据的同义异名和同名异义的问题Q可通过元数据管理子pȝQ在理解源数据的同时Q对不同表的属性名Ҏ(gu)其含义重新定义其在数据挖掘库中的名字Qƈ以{换规则的形式存放在元数据库中Q在数据集成的时候,pȝ自动Ҏ(gu)q些转换规则源数据中的字段名{换成新定义的字段名,从而实现数据挖掘库中的同名同义?br>其次Q通过数据~减Q大q度~小数据量。由于源数据量很大,处理h非常耗时Q所以可以优先进行数据羃减,以提高后l数据处理分析效率?br>最后,通过预先讑֮数据处理的可视化功能节点Q达到可视化的进行数据清z和数据转换的目的。针对羃减ƈ集成后的数据Q通过l合预处理子pȝ提供各种数据处理功能节点Q能够以可视化的方式快速有效完成数据清z和数据转换q程?br>ETLx据抽取(ExtractQ、{换(TransformQ、装载(LoadQ的q程。它是构建数据仓库的重要环节。数据仓库是面向主题的、集成的、稳定的且随旉不断变化的数据集合,用以支持l营理中的决策制定q程。数据仓库系l中有可能存在着大量的噪声数?引v的主要原因有Q滥用羃写词、惯用语、数据输入错误、重复记录、丢失倹{拼写变化等。即便是一个设计和规划良好的数据库pȝQ如果其中存在着大量的噪声数据,那么q个pȝ也是没有M意义的,因ؓ(f)“垃圾q,垃圾?#8221;Qgarbage in, garbage outQ,pȝҎ(gu)׃可能为决{分析系l提供Q何支持。ؓ(f)了清除噪声数据,必须在数据库pȝ中进行数据清z。目前有不少数据清洗研究和ETL研究Q但是如何在ETLq程中进行有效的数据清洗qɘq个q程可视化,此方面研I不多。本文主要从两个斚w阐述ETL和数据清z的实现q程QETL的处理方式[19]和数据清z的实现Ҏ(gu)?br>Q?QETL的处理方?br>本文所采用的ETLҎ(gu)是数据库D区域中的ETL处理方式Q它不用外部引擎而是使用数据库作为唯一的控制点。由于源pȝSQLserver2000是关pL据库Q它的段表也是典型的关系型表。成功地外部未修改数据载入数据库后Q再在数据库内部q行转换。数据库D区域中的ETL处理方式执行的步骤是提取、装载、{换,即通常所说的ELT。[21]q种方式的优Ҏ(gu)为抽取出的数据首先提供一个缓冲以便于q行复杂的{换,减轻了ETLq程的复杂度?br>Q?QETLq程中实现数据清z的实现Ҏ(gu)
首先Q在理解源数据的基础上实现数据表属性一致化。ؓ(f)解决源数据的同义异名和同名异义的问题Q可通过元数据管理子pȝQ在理解源数据的同时Q对不同表的属性名Ҏ(gu)其含义重新定义其在数据挖掘库中的名字Qƈ以{换规则的形式存放在元数据库中Q在数据集成的时候,pȝ自动Ҏ(gu)q些转换规则源数据中的字段名{换成新定义的字段名,从而实现数据挖掘库中的同名同义?br>其次Q通过数据~减Q大q度~小数据量。由于源数据量很大,处理h非常耗时Q所以可以优先进行数据羃减,以提高后l数据处理分析效率?br>最后,通过预先讑֮数据处理的可视化功能节点Q达到可视化的进行数据清z和数据转换的目的。针对羃减ƈ集成后的数据Q通过l合预处理子pȝ提供各种数据处理功能节点Q能够以可视化的方式快速有效完成数据清z和数据转换q程?

Masen 2007-06-26 01:15 发表评论
]]>
数据仓库http://www.tkk7.com/masen/articles/126238.htmlMasenMasenMon, 25 Jun 2007 17:09:00 GMThttp://www.tkk7.com/masen/articles/126238.htmlhttp://www.tkk7.com/masen/comments/126238.htmlhttp://www.tkk7.com/masen/articles/126238.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/126238.htmlhttp://www.tkk7.com/masen/services/trackbacks/126238.html
    Ҏ(gu)数据仓库概念的含义,数据仓库拥有以下四个特点Q?br>     1、面向主题。操作型数据库的数据l织面向事务处理dQ各个业务系l之间各自分,而数据仓库中的数据是按照一定的主题域进行组l。主题是一个抽象的概念Q是指用户用数据仓库进行决{时所兛_的重Ҏ(gu)面,一个主题通常与多个操作型信息pȝ相关?br>
     2、集成的。面向事务处理的操作型数据库通常与某些特定的应用相关Q数据库之间怺独立Qƈ且往往是异构的。而数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经q系l加工、汇d整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息?

     3、相对稳定的。操作型数据库中的数据通常实时更新Q数据根据需要及时发生变化。数据仓库的数据主要供企业决{分析之用,所涉及的数据操作主要是数据查询Q一旦某个数据进入数据仓库以后,一般情况下被长期保留Q也是数据仓库中一般有大量的查询操作,但修改和删除操作很少Q通常只需要定期的加蝲、刷新?br>
     4、反映历史变化。操作型数据库主要关心当前某一个时间段内的数据Q而数据仓库中的数据通常包含历史信息Q系l记录了企业从过L一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过q些信息Q可以对企业的发展历E和未来势做出定量分析和预?br>企业数据仓库的徏设,是以现有企业业务pȝ和大量业务数据的U篏为基。数据仓库不是静态的概念Q只有把信息及时交给需要这些信息的使用者,供他们做出改善其业务l营的决{,信息才能发挥作用Q信息才有意义。而把信息加以整理归纳和重l,q及时提供给相应的管理决{h员,是数据仓库的Ҏ(gu)d。因此,从业界的角度看Q数据仓库徏设是一个工E,是一个过E?br>整个数据仓库pȝ是一个包含四个层ơ的体系l构Q具体由下图表示?

 


·数据源:(x)是数据仓库系l的基础Q是整个pȝ的数据源泉。通常包括企业内部信息和外部信息。内部信息包括存放于RDBMS中的各种业务处理数据和各cL档数据。外部信息包括各cL律法规、市Z息和竞争Ҏ(gu)的信息等{;

·数据的存储与理Q是整个数据仓库pȝ的核心。数据仓库的真正关键是数据的存储和管理。数据仓库的l织理方式军_了它有别于传l数据库Q同时也军_了其对外部数据的表现形式。要军_采用什么品和技术来建立数据仓库的核心,则需要从数据仓库的技术特点着手分析。针对现有各业务pȝ的数据,q行抽取、清理,q有效集成,按照主题q行l织。数据仓库按照数据的覆盖范围可以分ؓ(f)企业U数据仓库和部门U数据仓库(通常UCؓ(f)数据集市Q?

·OLAP服务器:(x)对分析需要的数据q行有效集成Q按多维模型予以l织Q以便进行多角度、多层次的分析,q发现趋ѝ其具体实现可以分ؓ(f)QROLAP、MOLAP和HOLAP。ROLAP基本数据和聚合数据均存放在RDBMS之中QMOLAP基本数据和聚合数据均存放于多l数据库中;HOLAP基本数据存放于RDBMS之中Q聚合数据存放于多维数据库中?br>
·前端工具Q主要包括各U报表工兗查询工兗数据分析工兗数据挖掘工具以及各U基于数据仓库或数据集市的应用开发工兗其中数据分析工具主要针对OLAP服务器,报表工具、数据挖掘工具主要针Ҏ(gu)据仓库?/td>


Masen 2007-06-26 01:09 发表评论
]]>
SOAhttp://www.tkk7.com/masen/articles/125900.htmlMasenMasenFri, 22 Jun 2007 11:25:00 GMThttp://www.tkk7.com/masen/articles/125900.htmlhttp://www.tkk7.com/masen/comments/125900.htmlhttp://www.tkk7.com/masen/articles/125900.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/125900.htmlhttp://www.tkk7.com/masen/services/trackbacks/125900.html

Masen 2007-06-22 19:25 发表评论
]]>
JCAhttp://www.tkk7.com/masen/articles/117284.htmlMasenMasenMon, 14 May 2007 03:26:00 GMThttp://www.tkk7.com/masen/articles/117284.htmlhttp://www.tkk7.com/masen/comments/117284.htmlhttp://www.tkk7.com/masen/articles/117284.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/117284.htmlhttp://www.tkk7.com/masen/services/trackbacks/117284.htmlJCA适配器技术综q?/font>
  什么是JCAQ它最吸引人的特点是什么?它有什么不之处?有哪些厂商支持JCAQ是否还存在替代JCA的品,以便选购时货比三Ӟ本文帮助你解答所有这些问题?
  JCA及其特点
  JCA即Java Connector ArchitectureQ或Javaq接器体p,它完善了用J2EE构造企业应用的技术体pR在JCA出现之前Q基于J2EE应用服务器的开发体pMؓ(f)企业应用各个部分提供了相应的开发工P但是Q与传统pȝq接的部分仍未得到很好的解决。ؓ(f)了与q些EISpȝ集成Q各个公ؓ(f)每一U系l提供了定制的开发工兗有了JCAQ应用服务器厂商p够ؓ(f)Javaq_lg与后端系l的q接提供一层抽象。应该说QJCA完全W合J2EE应用服务器市场的自然发展历程?
  在JCA出现之前Qh们在q接EIS旉临着一pdcM的问题?
  首先Q每一个EIS应用有自q~程接口Q与一个异U的EIS应用交互意味着要针对一l特定的API~程。因此,Z需要一l公q客户端接口,以便化客L(fng)~程?
  其次Q与后端EISpȝ的交互通常L很繁忙。ؓ(f)了降低连接开销、提高性能Qh们需要连接池?
  W三Q与EIS应用的连接往往是面向事务的。ؓ(f)了保证数据完整性,Z需要内建的事务支持Q以便把~程工作量降低到最限度?
  最后一点(但ƈ非最不重要的一点)是h们迫切需要提高EIS应用和EIS客户E序集成的安全性?
  
  仔细分析上述问题Q可以发玎ͼ它们与h们以前连接数据库旉临的问题怼。对于数据库q接Q由于JDBC API之类的技术被q泛采用Q问题已l得到解冻I(x)作ؓ(f)一个程序员Q你现在再也不必直接与数据库交互Q而是可以通过JDBC与数据库交互QJDBC接口对于所有流行的数据库系l来说都是一L(fng)Q你可以方便C用数据库q接池,却不必自己动手实现它Q你可以方便C用事务支持和安全集成能力Q因些功能都是内建的。要是对于EIS应用也有cMJDBC的技术,它一定能够ؓ(f)你带来不方便吧Q如果你的回{是肯定的,{案是JCA?
  
  Z解决q接EIS旉临的各种问题QJCA提供以下功能Q?
  
  ▌Ӏq接~冲池:(x)EISq接通常属于昂贵的资源,创徏EISq接需要大量的旉开销。连接池使得应用服务器能够创建和׃nEIS应用的连接,使得应用能够更高效地使用昂贵的连接资源?
  ▌Ӏ事务理Q事务管理能力得EIS应用能够获取应用服务器提供的事务环境的支持,使得服务器能够把EISpȝ的事务作Z个单元管理?
  ▌Ӏ安全Q安全接口的实现允许应用服务器在不媄响EISҎ(gu)安全机制的情况下Q对整体安全性进行有效的理。验证、授权和安全兌都属于该接口包含的范_(d)它们都属于ؓ(f)JCA适配器和J2EE应用服务器内建的服务?
  ▌Ӏ公共的客L(fng)接口QJCAq定义了用户U的~程接口Q称为公共客L(fng)接口QCCIQCommon Client InterfaceQ。这个接口集在JCA 1.0中是可选的Q允许EIS客户E序的开发者按照一U标准的方式Q连接目标EISpȝQ或与目标EIS交互Q执行命令ƈ获取l果Q?
  应用服务器的JCA支持
  对JCA的支持来自两个方面:(x)支持JCA的应用服务器Q支持JCA的EIS应用适配器。JCA 1.0是J2EE 1.3规范的一部分Q遵从J2EE 1.3规范的应用服务器必须提供合适的环境支持必要的JCA功能Q包括缓冲池、事务和集成的安全机制。表一列出了常见的应用服务器以及它们的JCA支持情况?
  表一QJCA支持现状
   
  BEA的WebLogic Server是最早支持JCA的应用服务器之一。从2001q开始,W(xu)ebLogic 6.0内Z对JCA Beta的支持,当时的JCA 1.0规范正处于最l草案状态。经q一q的发展之后Q多ơ获奖的WebLogic Server已经是支持JCA的最?jng)_用服务器之一。IBM的WebSphere应用服务器是另一个广受欢qƈ获奖的J2EE应用服务器,2001q中期左叻I它开始支持JCA。JBoss也是值得特别指出的应用服务器Q如果预比较紧张,你就应该注意一下这个应用服务器。JBoss也支持JCAQ而且它具有无可比拟的h优势--它是免费的!
  适配器厂商和产品
  q接后端EIS应用时要用到JCA适配器。目前已l有许多集成商开发了JCA适配器,如表二所C?
  表二QJCA厂商与适配?
  
  从表二可以看出,有许多厂商ؓ(f)同样的EIS应用提供了JCA适配器。然而,即对于同一个EIS应用Q来自不同厂商的JCA适配器可能支持不同的功能集。这是由于两个因素造成的。首先,一些规范,例如JCA 1.0中的CCIQ是可选的Q是否在当前发行版中包含某个功能Q完全由适配器厂商决定。其ơ,一些重要的EIS集成功能q未包含在当前的JCA规范中;Z增强适配器,适配器厂商可能决定增加一些额外的功能。这些在规范中没有定义的功能在E后详细讨论?
  
  ׃q些在JCA规范中没有定义的功能可能是很重要的,许多厂商在这个问题上采取了更实在的策略,走到了规范之前;即面(f)着非标准化的风险,Z提供额外的功能,它们也会(x)为适配器加上一些辅助特性?
  
  Insevo多EIS应用提供了JCA适配器,包括SAP、PeopleSoft、Edwards和Siebal。这些适配器除了支持JCA定义的CCI之外Q还支持一U基于XML的接口。它们既支持客户E序和EIS应用之间的同步通信Q也支持异步通信。另外,它们q支持双向通信Q而不是JCA定义的单向通信。这些额外的功能使得Insevo的适配器不仅适用于应用集成,而且适用于过E集成(Process IntegrationQ;另外Q这些附加的功能已经被作为JCA 2.0规范的一部分考虑。因此,从某U意义上来说QInsevo的适配器是一个超前JCA规范的版本。尽额外增加的功能不遵从当前的JCA规范Q但如果你确实需要它们,q有比这更好的事情吗Q?
  
  Resource Adapters的RAiq接器是另一l采取此U策略的JCA适配器,也包含了一些预期将在JCA 2.0规范中定义的功能。RAi支持输入QInboundQ连接和输出QOutboundQ连接,支持同步和异步通信模式。RAiq接器除了支持CCI之外Q还支持一l基于XML的API和XML元数据,q提供了日志和监视工P为实际工作带来了巨大的方ѝ?
  
  除此之外QAttunity和Insevoq提供了许多数据源适配器和传统适配器,q些适配器往往只需单向的同步通信。一些数据源和传l适配器不支持事务之类的JCA功能Q因此,它们q不提供对JCA的完整支持?
  
  
  与其他类型的适配器比?br>  
  
  除了JCA适配器,q有其他一些根据不同需求而开发的适配器类型,其中之一是Web服务适配器,它是一U重要的新适配器类型,正在q速地获得Z的认可。另外,在JCA出现之前有许多非标准的适配器被开发出来,因此q些适配器拥有更长的发展和成熟时间?
  
  Web服务适配?
  
  当前Q企业应用的q_有各U各L(fng)cdQ当然有一部分是以Java为基的。在开发各cȝl的q程中,企业投入了大量的资源Q当然不肯轻a攑ּ。问题在于,如何才能在不增加额外投资的情况下Q让q些异种的系l能够协作运行?两种行的技术ɘq一切成为可能:(x)W一是HTTPQ第二是XML。这两者是每一U^C都用的技术,非常适合于异U^台的集成。Web服务规范?yu)徏立在q两U简单但关键的技术的基础上。尽详l讨论Web服务已经出了本文的范围Q但从下面的要说明可以看出Web服务的主要特点:(x)
  
  ▌ӀXML接口QWeb服务以XML为基Q它利用Web服务描述语言QWSDLQ描q终端服务者的服务形式?
  
  ▌ӀHTTP/HTTPS协议QWeb服务事实上的通信协议?
  
  ▌ӀSOAPQ基于WSDL的Web服务和HTTP/HTTPS通信协议之间的绑定协议?
  
  Web服务仍未提供MQoS机制Q因此是一U异步协议。对于异U系l的宽松l合来说Q它是一U很合适的协议?
  
  Web服务和JCA提供的功能互相完善了Ҏ(gu)。如果这两种技术最l把它们的特点合q了hQ我们不应该感到奇怪。实际上Q一些厂商已l向q个方向发展。例如,Attunity和Sirvisetti{厂商已l在它们的JCA适配器中提供了对Web服务的支持?
  非标准化的适配?
  
  在JCA出现之前Q一些中立的厂商Q例如webMethods和TIBCO{,推出集成适配器已有数q。这些适配器一般具有非标准化的APIQ有时它们不能从集成软g包分开。尽如此,q些适配器已l经q多q实늚验,比JCA适配器涵盖范围更q泛的EIS。特别地QwebMethods Enterprise Adapter和B2B适配器拥有迄今ؓ(f)止最q泛的覆盖面。webMethods拥有的适配器多?0个以上,q些适配器还不支持JCAQ但webMthods正在快速地向支持JCA的方向发展?
  
  
  JCA的优点和不
  
  
  JCA的优点很明显。它为EIS厂商提供了一U按照开攄产业标准定义EIS接口的途径。通过使用公共的可调用接口以及l承JCA提供的QoS机制Q程序员能够在不牺牲性能和系l完整性的前提下,化EIS的集成工作?
  
  JCA的局限不是显而易见,但不容忽视。和所有其他新技术一PJCAW一个版本的不成熟性往往成ؓ(f)最令h担心的问题。另外,JCA适配器应该是可在应用服务器之间移植的Q然而,q前的情况来看Q对于你正在使用的应用服务器来说q一判断未必正确Q因为适配器对某种应用服务器的支持情况由适配器厂商根据个案进行测试和发布。此外,JCAq有其他一些已知的局限,其中有些局限有望在JCA标准的下一个版本中得到解决Q其中包括:(x)
  
  ▌Ӏ异步消息传输Q调用EIS应用ӞJCA 1.0采取同步消息传输方式Q它不能处理来自EIS应用的异步消息或向EIS应用传递异步消息。如果要异步传递消息,p在用JCA时结合JMSQJava Message ServiceQ或其他队列服务Q或者选择使用JCA适配器中内徏的非标准化异步消息支持?
  
  ▌Ӏ长时间运行的事务Q这是一U运行时间可能达到数天甚?

Masen 2007-05-14 11:26 发表评论
]]>JMXhttp://www.tkk7.com/masen/articles/109157.htmlMasenMasenSat, 07 Apr 2007 14:18:00 GMThttp://www.tkk7.com/masen/articles/109157.htmlhttp://www.tkk7.com/masen/comments/109157.htmlhttp://www.tkk7.com/masen/articles/109157.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/109157.htmlhttp://www.tkk7.com/masen/services/trackbacks/109157.htmlJMX(Java Management Extensions)是一个ؓ(f)应用E序植入理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在Q何Java应用E序中用这些代理和服务实现理?

JMX的前w是JMAPI?

JMX致力于解军_布式pȝ理的问题,因此Q能够适合于各U不同的环境是非帔R要的。ؓ(f)了能够利用功能强大的Java计算环境解决q一的问题,Sun公司扩充?a class=wikipage >Java基础cdQ开发了专用的管理类库?

JMX是一U应用编E接口,可扩充对象和Ҏ(gu)的集合体Q可以用于跨一pd不同的异构操作系l^台、系l体pȝ构和|络传输协议Q灵zȝ开发无~集成的pȝ、网l和服务理应用它提供了用户界面指导、Javacd开发集成系l、网l及|络理应用的规范?

理对象是JMX应用E序的核心。JMXl构包括Q支持Java的Web览器用h口,理q行模块ARM(Admin Runtime Module)和应用。这三个部g之间通过RMIQRemote Method InvocationQ进行通信。这里需要说明的是,RMI是得一个Java虚拟机(JVMQ上q行的程序可以调用远E服务器上另一?a class=wikipage >JVMȝ对象?

用户接口用来发布理操作Q这些操作可以间接的通过览器或通过单独的应用程序来Ȁ发。管理运行模块用来给应用提供实例化的理对象。它包括Agent对象接口Q通知接口和被数据接口。应用指的是那些被管讑֤单元?

JMX是一个完整的|络理应用E序开发环境,它同时提供了Q厂商需要收集的完整的特性清单,可生成资源清单表|囑Ş化的用户接口Q访?a class=wikipage >SNMP的网lAPIQ主机间q程q程调用Q数据库讉KҎ(gu)?

JMXq一d的管理基l构Qh(hun)值在于对被管理资源的服务实现了抽象,提供了低层的基本c集合,开发h员在保证大多数的公共理cȝ完整性和一致性的前提下,q行扩展以满特定网l管理应用的需要?

JMX注重于构造管理工L(fng)软g框架Qƈ量采用已成熟的技术?

JMX体系被分成三个层?

  • 表现?
  • 代理?
  • 分布式服务层

表现?

表现层定义的是JMX可管理资源所在的层?

q些已管理的资源可以~写或封装ؓ(f)MBean?

MBean分ؓ(f)四种cdQ?标准、动态、开放、模?

代理?

定义的是MBean向应用程序施加管理的层。包括MBean服务器和代理服务的定义。还臛_包括一个协议适配器或q接器?

代理的组成:(x) 。一个MBean服务?。要理的MBean 。作为MBean实现的代理服?。至一个协议适配?

MBean

在JMX中,最的可管理单元是MBean?

MBean不是一个真正的接口和类Q而是必须准@的设计模式以保资源是一个兼容的MBean?

MBean的激zL?

invoke()Ҏ(gu)是管理应用程序用于激zMBean的方法的手段?invoke()Ҏ(gu)有三个参敎ͼ分别是方法的名称、表C属性的对象数组和描q方法签名的一个字W串数组。它与?a class=editpage title="Create 'JavaReflection'" >Java Reflection Api ȀzL法的方式cM?

Notification(通知)模型Q?

MBean的通知模型cM与Java事g的监听器模型?MBean或管理应用程序可以作为MBean事g的监听器注册?通知支持׃个基本的概念l成Q即q播器和监听器?

MBean服务?

MBean服务器用于注册可理的MBean?

所有对MBean的请求或查询都是通过MBean服务器实施的?

代理服务

代理服务是一些特D的函数Q代理把q些服务提供lMBeanQ这些代理服务独立于MMBean?

一个代理可以提供四U主要的服务Q?

  • 动态装载:(x)允许代理通过下蝲q个Bean的类动态实例化MBeanQ这与装载applet的方式类伹{?
JMX使用m-letq个标记指定期望动态装载的MBean的位|?
  • 监控Q允总理通知有关的监听器监控一个MBean的属性值的变化
JMX允许使用三种基本cd的监控程?(1)CounterMonitorQ该E序可以观察cd斚w的变化,比如BytecM或Integercd (2)GaugeMonitorQ该E序可以观察cd斚w的变化,比如BytecM或IntegercdQ还可以在到达上下阀值时q行报告?(3)StringMonitorQ该E序可以观察java.lang.Stringcd的变化?
  • 计时器:(x)允许预设的时间间隔发送通知Q可以作Z个调度程?
  • 关系Q允许创建和l护MBean之间的关p?

分布式服务层

包含协议适配器和q接器两U类型的lgQ通过它们q接到外部的应用Q如RMI理应用、基于浏览器的管理控制等

协议适配器和q接?

协议适配器是代理与管理客户通信的手D,每个通信的协议都可能不同?

它们都是理客户与MBean交互的方式?

JMX的好?

  • 可减对JAVA应用实施理的投?
  • 提供了一个可伸羃的管理框?
  • 集成现有的管理方案:(x)如:(x)WBEMQSNMPQTMN
  • 使用现有的标准JAVA技?
  • 能用未来的一些管理概念:(x)如Jiniq接技术、通用x即用、服务定位协?Service Location Protocol)
  • 只定义了一些可以访问的接口

本介l摘录自Huihoo

参见



Masen 2007-04-07 22:18 发表评论
]]>
Burlaphttp://www.tkk7.com/masen/articles/109155.htmlMasenMasenSat, 07 Apr 2007 14:09:00 GMThttp://www.tkk7.com/masen/articles/109155.htmlhttp://www.tkk7.com/masen/comments/109155.htmlhttp://www.tkk7.com/masen/articles/109155.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/109155.htmlhttp://www.tkk7.com/masen/services/trackbacks/109155.htmlBurlaphttp://www.caucho.com/resin-3.0/protocols/burlap.xtp协议Q感觉确实比Xmlrpc来的z?

Masen 2007-04-07 22:09 发表评论
]]>
Hessianhttp://www.tkk7.com/masen/articles/109140.htmlMasenMasenSat, 07 Apr 2007 12:10:00 GMThttp://www.tkk7.com/masen/articles/109140.htmlhttp://www.tkk7.com/masen/comments/109140.htmlhttp://www.tkk7.com/masen/articles/109140.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/109140.htmlhttp://www.tkk7.com/masen/services/trackbacks/109140.html相比WebServiceQHessian更简单、快捗采用的是二q制RPC协议Q因为采用的是二q制协议Q所以它很适合于发送二q制数据。下面演CZ个简单的HessianCZE序?/p>

14.5.1.1 Hessian的下载和安装

Hessian的下载和安装h如下步骤q行Q?/p>

Q?Q登陆http://www.caucho.com/hessian/下蝲Hessian的Java二进制包Q笔者成书之ӞHessian的最新版本是Hessian 3.0.13。下载hessian-3.0.13.jar文g?/p>

Q?Q将该文件复制到名ؓ(f)hessian的Web应用下,所有的jar文g都应该放在WEB-INF/lib下,该文件也不例外?/p>

Q?Qؓ(f)了编译Hessian客户端程序,hessian-3.0.13.jard到环境变量里?/p>

14.5.1.2 Hessian服务器端

推荐采用面向接口~程Q因此,Hessian服务通过接口暴露。服务接口如下:(x)

//服务接口

public interface Hello

{

         //Ҏ(gu)声明

    public String hello(String name);

}

接口的实现类如下Q?/p>

//服务实现c,实现Hello接口

public class HelloImpl implements Hello

{

    public String hello(String name)

    {

           return "hello " + name + "Ƣ迎学习(fn)Hessian";

    }

}

q个接口和实现类单得难以|信。它们没有Q何特别之处,q正是Hessian的魅力,代码污染降低到最。当Ӟ只是CZE序Q所以服务也相当单。Hessian要求q程服务通过Servlet暴露出来Q必dweb.xml文g中配|该Servlet。web.xml的详l配|如下:(x)

<?xml version="1.0" encoding="ISO-8859-1"?>

<!--  Web配置文g的文件头Q包含dtd{信?->

<!DOCTYPE web-app

    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

<!--  Web配置文g的根元素-->

<web-app>

<servlet>

           <!--  配置Servlet名,后面Ҏ(gu)该名完成q程服务映射-->

            <servlet-name>hessianService</servlet-name>

                   <!--  Hessianq程服务需要HessianServlet暴露Hehes-->

                   <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>

                   <!--  随应用启动而启?gt;

            <load-on-startup>1</load-on-startup>

                   <!--  使用init-param配置服务的实现类-->

            <init-param>

                 <param-name>service-class</param-name>

                 <param-value>lee.HelloImpl</param-value>

            </init-param>

</servlet>

<!--  映射Servlet的urlQ该Servlet的url是Hessian服务?->

    <servlet-mapping>

            <servlet-name>hessianService</servlet-name>

                   <!--  q程服务名ؓ(f)hessianService-->

            <url-pattern>/hessianService</url-pattern>

    </servlet-mapping>

</web-app>

刚才的接口和实现放W(wng)eb应用的WEB-INF/class路径下,~译它们。然后将此web.xml文g攑֜WEB-INF下,启动Web服务器。笔者用的Web服务器是Tomcat5.0.28QTomcat的端口是8888。则q程服务的url为:(x)http://localhost:8888/hessian/hessianService?/p>

14.5.1.3 Hessian客户机端

Hessian的服务可以用HessianProxyFactory工具c调用,q可以在型讑֤上调用。HessianProxyFactory的createҎ(gu)Q用于获取Hessian服务的远E引用。Hessian的客L(fng)如下Q?/p>

public class HessianClient

{

    public static void main(String []args) throws Exception

    {

                   //Hessian服务的url

           String url = "http://localhost:8888/hessian/hessianService";

                   //创徏HessianProxyFactory实例

           HessianProxyFactory factory = new HessianProxyFactory();

                   //获得Hessian服务的远E引?/p>

           Hello d = (Hello) factory.create(Hello.class, url);

                   //调用q程服务?/p>

           System.out.println("下面调用Hessian服务: " + d.hello("yeeku"));

    }

}

客户端仅仅需要Hello接口Q而无ȝ实的实现cR如果用小型智能设备作为客L(fng)的运行环境,客户端代码片D如下:(x)

//创徏Hessian输入,用于输入h

MicroHessianInput in = new MicroHessianInput();

//Hessian服务的url

String url = "http://localhost:8888/hessian/hessianService";

//创徏HttpSConnection实例

HttpConnection c = (HttpConnection) Connector.open(url);

//讄参数提交方式

c.setRequestMethod(HttpConnection.POST);

//打开输出,准备调用服务器方?/p>

OutputStream os = c.openOutputStream();

//以输出流创徏MicroHessianOutput对象Q该对象用于调用hessian的方?/p>

MicroHessianOutput out = new MicroHessianOutput(os);

//调用q程Ҏ(gu):hello是方法名,yeeku是参?/p>

out.call("hello", “yeeku”);

os.flush();

//打开输入,准备接收q回?/p>

is = c.openInputStream();

以输入流为参敎ͼ创徏MicroHessianInput对象

MicroHessianInput in = new MicroHessianInput(is);

获得q回?/p>

Object value = in.readReply(“yeeku”);



Masen 2007-04-07 20:10 发表评论
]]>
JDOhttp://www.tkk7.com/masen/articles/109134.htmlMasenMasenSat, 07 Apr 2007 11:36:00 GMThttp://www.tkk7.com/masen/articles/109134.htmlhttp://www.tkk7.com/masen/comments/109134.htmlhttp://www.tkk7.com/masen/articles/109134.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/109134.htmlhttp://www.tkk7.com/masen/services/trackbacks/109134.htmlhttp://www.libelis.com/inner-index.jsp?next=jdo.html

JDO是Java对象持久化的新的规范。JDOlSunJava Community Process认定?br>

一、历?/h3> JDO是对象持久化工作的综合成果,试图提供一个对象持久化的完全版本。JDO同时l承于ODMGQ对象数据管理小l,标准化对象数据库的一个独立委员会(x)Q和对象关系映射工具提供商?br>JSR #000012 approved in July 1999
1999-8l徏的专家小l:(x)包括Sun、Apple、BEA、IBM、Oracle、SAP、WebGain{?br>2000-5 完成公开评论草案
2000-6 在JavaOne上引?br>2001-3 最l草?.93
2001-5 最l草?.96公布
2001-6 在JavaOne上启?br>2001-11 最l草?.98

二、目?/h3> 定义对象U的持久化?br>
  • 完全支持对象模型Q包括引用、集合、接口、?br>
  • 完全透明持久化:(x)q得业务对象完全独立于M数据库技术,q用了一个字节码增强机制Qa byte-code enhancement mechanismQ?br>
  • ~短开发周期(不再需要映)
  • 在开发小l中清晰地划分业务h员和数据库h员?br>
  • 通用持久?br>?JDBC限于RDBMSQJDO潜在地可以处理Q何类型的数据源,包括RDBMSQODBMSQTP监控处理QASCII无格式文Ӟxml文gQproperties文gQ大Z的Cobol数据库,{?br>?JDO是面向大型信息系l的一个完全的解决Ҏ(gu)Q在q样的系l中Q信息存储于多种异质数据?br>
  • 늛J2EE、J2SE、J2ME的广泛实?br>
  • 强壮的事务模?br>
  • 同时支持C/S和多层体pȝ?/li>


三、体p?/h3>

JDO ?/h5> PersistentCapableQ拥有持久实例的cdd现这个接口。管理对象生命周期?br>PersistenceManager Q代表了到数据源的连接。一个应用可以打开一个或多个PersistenceManagers?br>PersistenceManagerFactoryQ允总数据源中得到一个PersistenceManager的实例,q个工厂也可以作Z个连接池?
TransactionQ允许界定事?
Query Q允许明地声明性地使用JDO查询语言从数据源中获取数据。NBQ也可以通过引用之间的基本的定位Q隐含地、透明C数据源中获取对象?
InstanceCallbackQ在数据库操作中Q比如before/after read, before/after writeQ等Q,定义一些钩子,以做Ҏ(gu)处理Q像暂时属性的初始化)?br>JDOExceptionQJDO操作中抛出的例外?br>
JDO也定义了帮助c,对象标识Q由应用或数据源理Q?br>JDO实现可以支持或不支持兼容的PersistenceManagerQ当PersistenceManager是兼容的Ӟ你可以得到存储于不同数据库的对象引用Q?br>NBQ在JDO的第一个发布版本中Qƈ没有严格地定义锁和锁{略?br>
JDO对象模型
  • JDO对象模型基本上是Java的对象模型,包括所有的基本cdQ引用,集合和事件接口?br>
  • 除了pȝ定义c(system-defined classesQ,支持所有的字段cdQ包括简单型、可变和不变的对象类型〔immutable and mutable object types〕、用户定义类、数l、集合、接口)?br>
  • 支持所有的成员变量修饰W(private, public, protected, static, transient, abstract, final, synchronized, volatileQ?br>
  • 除了对象状态依赖于不可讉K的或q程对象Q即l承于java.net.SocketImpl、本地方法等Q所有的用户定义c都可以是PersistentCapable?/li>


JDO对象生命周期
Z能够在数据源中访问、存储对象,应用必须首先得到一个或几个数据源的q接。一个JDO PersistenceManager对象׃表了q样一个连接。它可以通过PersistenceManagerFactorycd到。持久化对象必须是实CPersistentCapable接口的类的实例。这L(fng)cd能同时拥有持久化的或临时的(transientQ实例?br>
Z使一个实例持久化Q编E者必调用PersistentManager的makePersistentҎ(gu)。通知JDO对象为持久化或(f)时的很重要,即它们可以从JDO的行Z得到它是临时的,比如事务理和对象标识。对象标识可以由应用理Q或者由数据源代理(q大多是在用ODBMS实例Ӟ因ؓ(f)概念ObjectID本n是ODMG模型的一部分Q?br>
JDO支持一U持久化模型Q这q种模型中持久性自动传播到引用的对象。这U机制经常称?#8220;延持久Qpersistence by reachabilityQ?#8221;或?#8220;传递持久(transitive persistenceQ?#8221;。这意味着一旦一个已l持久化的对象引用了一个(f)时对象,q个临时对象自动变成持久化的。对于JDBC~程者,q个模型可能很奇怪,但是他们?x)发现这是大多数情况下编E者希望从持久化框架中得到的支持?br>
例子Q?
pmf = (PersistenceManagerFactory) (Class.forName("com.libelis.lido.PersistenceManagerFactory").newInstance()); 
pmf.setConnectionDriverName("versant");
pmf.setConnectionURL(dbName);
pm = pmf.getPersistenceManager();
tx = pm.currentTransaction();
tx.begin();
Provider aProvider = new Provider("LIBeLIS");
pm.makerPersistent(aProvider); // aProvider now persists
Address anAddress = new Address("25 rue Paul Barruel", "France", "Paris");
aProvider.address = anAddress ; // anAddress now persists
tx.commit();
pm.close();

对象或者通过明确的JDO查询l果从内存中得到Q或者通过标准的Java对象之间的导航(navigationQ得到?br>
最后这个机制很强大Q你可以把持久对象想像ؓ(f)在JVM堆中的一个特D的部分Q我们称之ؓ(f)“客户端缓存(client cacheQ?#8221;。每ơ当你企图从一个对象导航到另一个时Q如果这个对象尚不在内存中,JDO?x)自动从数据源中获取Qƈ把它攑֜~存中?br>
例子
假设aProvider对象已经装蝲到内存,但是它的Address对象q没有。当你写下如下代码时Q?
System.out.println(aProvider.address.city);

Address对象?x)自动装载。缓存管理自动链接到事务边界Qtransaction boundariesQ,q意味着~存在事务l束是刷斎ͼ所有的实体都标CZؓ(f)无效的。下ơ对象访问它们的状态时Q自动地、透明C数据源中再次装蝲?br>
例子
pmf = (PersistenceManagerFactory) (Class.forName("com.libelis.lido.PersistenceManagerFactory").newInstance()); 
pmf.setConnectionDriverName("versant");
pmf.setConnectionURL(dbName);
pm = pmf.getPersistenceManager();
tx = pm.currentTransaction();
tx.begin();
Provider aProvider = new Provider("LIBeLIS");
pm.makerPersistent(aProvider);
Address anAddress = new Address("25 rue Paul Barruel", "France", "Paris");
aProvider.address = anAddress ;
tx.commit(); // objects are stored into the data source, client cache is discarded, references are invalid
tx.begin();
System.out.println(aProvider); // aProvider is refreshed from the data source
tx.commit();
pm.close();

每次你修改了一个对象,它在JDO~存中对应的实体被标示?#8220;脏(dirtyQ?#8221;?br>
例子
tx.begin(); 
aProvider.address = aNewAdr; // aProvider is marked as dirty
tx.commit(); // aProvider will updated in the data source

在事务的l束QPersistentManager 把所有标CZؓ(f)“?#8221;的JDO对象Q脏对象Q更新到数据源中?br>
JDO~存中的每一个对象都有自q状态(实际上它们都和一个StateManager对象相关联)。ƈ且JDO规范规定了一大堆状态和它们之间的过渡。如果感兴趣Q请参照JDO规范了解详细?br>NBQ这些状态一般是JDO提供商关心的Q而不是JDO~程者?br>
开发周?/h5> Z辑ֈ上面提到的完全透明的持久化QJDO定义了一个称?#8220;增强QEnhancementQ?#8221;的字节码工具机制Qbyte-code instrumentation mechanismQ。它的思想是从业务cM剔除所有的昑ּ的数据库依赖代码。和已存在的或新的数据源的映通过外部的元数据QmetadataQXML文g定义?br>JDO增强器读取编译的java文gQ?class文gQ,q且应用元数据文件中定义的持久化规则。例C如下:(x)

增强?x)添加到元数据文件描q的cȝ字节码中Q?br>• 实现PersistentCapable接口的声?br>• 该接口中声明的方法的字节码必被实现
• 当修改了一个属性后该对象标CZؓ(f)“?#8221;的代?br>• 需要时从数据源中获取对象的代码
• Ҏ(gu)元数据文件中指定的从数据源中的原始数据(raw dataQ到Java对象映射的代?br>NBQ在专家组中,是否要把增强列入JDO规范曄Ȁ烈争。一些专家认为开发者可能会(x)被增强技术吓倒。不熟?zhn)q个技术的开发者会(x)惊讶于字节码增强Q这是一个事实。但是增强是q样一U通用、强大的开发技术,可以在很多案例中有效C用。开始时Q每当开发者遇C个BugӞ可能?x)责隑֢强器。我们强烈推荐增强器?#8220;新手”仔细地看一下BCEL|站Q由Source Forge开源社区提供)。在那儿Q你能看到许多关于字节码增强的有用信息和工具。这U机制的熟手可以在他们的Java接口中成功地使用。所有的熟手都表现出了兴?br>
在两层(Client/ServerQ结构中整合
在传l的Client/Server体系中,JDO应用需要用由JDO实现提供的PersistenceManagers把它自己q接C个或多个数据源?br>

临时对象可以持有持久对象的引用。持久对象可以持有分布在多个PersistenceManagers中的持久对象的引用。但是这不是一个必遵从的Ҏ(gu)?br>大部分数据库相关的代码都从业务对象中UdQ但是事务仍需要编E者明的划分Q用Transaction 的begin、commit、rollbackҎ(gu)Q?br>理q行在内存中的Java模型和磁盘上的数据源的物理模型之间的映射是PersistentManager的职责。当使用ODBMSӞq个映射非常直接Q但使用RDBMS或更单的数据源时可能?x)非常复杂?br>

四、JDO和J2EE

JDO已经设计为整合入J2EE体系。JDO依靠一个新的Connector规范来管理一个J2EE应用和JDO容器之间的交互。在JDO规范中这个描qCؓ(f)理环境Qmanaged environmentsQ意思是事务和连接由应用服务器自q理)。JDO容器和J2EE应用服务器交互,得到数据源的q接Q因为应用有它自qq接池)QƈҎ(gu)应用服务器的JTA兼容的事务管理器执行事务?br>
JDO明确的解决了J2EE体系的一个主要缺P是EJB部g模型持久性和分布性结合v来。这两个概念是不相关的,但是EJB规范试图化,q应用Ҏ(gu)久性和分布性用相同的_度U别。这在Y件工E的视角q不清晰Qƈ且也不具可扩展性?br>另外一点,EJB持久模型QCMP和BMPQ过分简化了Q只能应付有限的情况Q不适合现实的应用需要。感兴趣的读者可以可以很Ҏ(gu)地J2EE的门户中Q例如the ServerSideQ找到大量的EJB持久性和JDO的讨论?br>使用JDOQ你可以使用一U非怼雅、通用的设计:(x)Session BeanQ访问业务处理对象)自己讉K业务数据对象。这样做Q应用仍然拥有J2EE体系所有的优点Q分布式、事务、连接,…Q,q且持久化由JDO透明、高效地理?br>
JDO可以支持在异U数据源中非常复杂的映射机制Q然而,EJB/CMP模型仅适用于简单的JDBC模型?br>使用JDO你没有业务对象的复杂性的限制Q然而EJB/CMP不支持承)?br>使用JDO在你的业务数据对象中完全没有数据库代码(然而用EJB/BMP 你的业务代码?x)掺杂入JDBC代码Q?br>业务处理对象提供了处理多个业务数据对象的Ҏ(gu)?br>业务处理对象通常是非持久化的Q它们通常通过混合的JDO查询和导航得C务数据对象?br>从SessionBean中剥M务处理方法仍然很重要Q因样你的业务模型可以把众多应用中Q何的基础构架应用到J2EE应用中?br>

资源链接


Sun JDO Specification
JDO JSR page
Sun JDO site
Byte-code enhancement web sites
LIBeLIS LiDO site
Versant enJin

摘自Q?a >http://www.javaresearch.org/article/showarticle.jsp?column=108&thread=2406



Masen 2007-04-07 19:36 发表评论
]]>
CORBA http://www.tkk7.com/masen/articles/109133.htmlMasenMasenSat, 07 Apr 2007 11:18:00 GMThttp://www.tkk7.com/masen/articles/109133.htmlhttp://www.tkk7.com/masen/comments/109133.htmlhttp://www.tkk7.com/masen/articles/109133.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/109133.htmlhttp://www.tkk7.com/masen/services/trackbacks/109133.htmlCORBA 是什?/font>

    公用对象h代理Q调度)E序体系l构QCommon Object Request Broker ArchitectureQ,~写?CORBAQ是对象理l织QObject Management GroupQ对应当今快速增长的软硬件的协同工作能力的要求而提出的Ҏ(gu)。简而言之,CORBA 允许应用E序和其他的应用E序通讯Q而不Z们在什么地Ҏ(gu)者由谁来设计。CORBA 1.1 由对象管理组l在 1991 q发布。他定义了接口定义语aQIDLQ和应用~程接口QAPIQ,从而通过实现对象h代理QORBQ来Ȁzd?服务器的交互。CORBA 2.0 ?1994 q的 12 月发布。他定义了如何跨不同的 ORB 提供者而进行通讯?/font>

    ORB 是一个中间gQ他在对象间建立客户-服务器的关系。通过 ORBQ一个客户可以很单地使用服务器对象的Ҏ(gu)而不论服务器是在同一机器上还是通过一个网l访问。ORB 截获调用然后负责扑ֈ一个对象实现这个请求,传递参数和Ҏ(gu)Q最后返回结果。客户不用知道对象在哪里Q是什么语a实现的,他的操作pȝ以及其他和对象接口无关的东西?/font>

    在传l的客户/服务器程序中Q开发者用他们自p计的或者公认的标准定义讑֤之间的协议。协议的定义依赖于实现的语言Q网l的传输和其他许许多多因素。ORB 这个过E简单化。?ORBQ协议定义是通过应用接口Q而该接口是接口定义语aQIDLQ的一个实玎ͼ他和使用的编E语a无关的。ƈ?ORB 提供了很大的灉|性。他让程序员选择最适当的操作系l,q行环境和设计语a来徏讄l中每个lg。更重要的是Q他允许集成已经存在的组件?/font>

    CORBA 是在面向对象标准化和互操作性道路上的一个信受通过 CORBAQ用户不必要知道软硬件的q_和他们处在企业网的什么地方就可以操作?/font>

ORB l构

    下面我来用些囑Ş说明一下:(x)

    通过 ORB 发送请?br>

    上面的图形说明的是客L(fng)发送一个请求到对象的实现。客L(fng)是希望对某对象执行操作的实体。对象的实现是一片代码和数据来实际实现对象。ORB 负责下面的必要的机制Q对该请求找到对象的实现Q让对象的实现准备好接受hQ和h交换数据。客L(fng)的接口完全独立于对象的位|,其实现的语言和其他不影响对象接口的东ѝ?/font>

    ORB 接口的结?br>

    上面的图形显C的是一个独立的对象h代理QORBQ的l构。ORB 的接口是灰色的矩形。箭头说?ORB 的调用关pR?/font>

    Z提出一个请求,客户端可以用动态调用接口(Dynamic Invocation InterfaceQ(和目标对象的接口独立Q或者一?OMG ?IDL 占位E序Q具体的占位E序依赖于目标对象的接口Q。客L(fng)也可以直接和 ORB 在某些地方交互?/font>

    对象的实现通过 OMG ?IDL 产生的骨架或者是一个动态骨架的调用来接受请求。对象的实现可能在处理请求或其他的时候调?ORB?/font>

    对象接口定义的定义可以有下面两种方式。接口可以通过接口定义语言静态的定义Q这叫做 OMG ?IDL。该语言按照可以q行的操作和该操作的参数定义对象cd。或者(也可以作充)Q接口可以加入到 Interface Repository service。该服务描述了该接口作ؓ(f)一个对象的lgQƈ允许q行时访问这些组件。在M ORB 实现中,IDL ?Interface Repository 有相同的表达能力?/font>

    客户端用占位程序或者动态调用接?br>

    客户端通过讉K对象的对象引用和了解对象的类型及要求执行的操作来发布一个请求。客戯用占位程序例E来h或者动态构造请求?/font>

    无论动态还是占位程序的接口都可以相同实现。接收方不可能知道请求是如何发布的?/font>

    对象的实现接受请?br>

    ORB 向对象实现定位适当的代码,传递参敎ͼ传输控制。这一切都通过 IDL 骨架或者动态骨架。骨架对于不同的接口和对象适配器是不同的。在执行该请求的时候,对象的实现可能由 ORB 通过对象适配器来获得一定的服务。当h完成Q控制和输出D回给客户?/font>

    对象的实现可能会(x)选择使用的对象适配器。该军_Z对象的实现要求的服务?/font>

    接口?Implementation Repositories

    上图说明的是接口和实C息如何让客户和对象实现访问的。接口用 OMG ?IDL ??Interface Repository 定义。该定义用于产生客户占位E序和对象的实现的骨架?/font>

    对象的实现的信息在安装时提供好了,储存?Implementation Repository 中以便请求发布的时候用?/font>



Masen 2007-04-07 19:18 发表评论
]]>
IIOP http://www.tkk7.com/masen/articles/109088.htmlMasenMasenSat, 07 Apr 2007 04:18:00 GMThttp://www.tkk7.com/masen/articles/109088.htmlhttp://www.tkk7.com/masen/comments/109088.htmlhttp://www.tkk7.com/masen/articles/109088.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/109088.htmlhttp://www.tkk7.com/masen/services/trackbacks/109088.htmlInternet Inter-ORB Protocol(互联|内部对象请求代理协?QJava中得程序可以和其他语言的CORBA实现实现互操作性的协议?



Masen 2007-04-07 12:18 发表评论
]]>AOPhttp://www.tkk7.com/masen/articles/109085.htmlMasenMasenSat, 07 Apr 2007 04:17:00 GMThttp://www.tkk7.com/masen/articles/109085.htmlhttp://www.tkk7.com/masen/comments/109085.htmlhttp://www.tkk7.com/masen/articles/109085.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/109085.htmlhttp://www.tkk7.com/masen/services/trackbacks/109085.htmlZ么要区分J2EE容器和J2EE应用pȝQ?/strong>

  我们知道QJ2EE应用pȝ只有部v在J2EE容器中才能运行,那么Z么划分ؓ(f)J2EE容器和J2EE应用pȝQ?通过对J2EE容器q行机制的分析(见我的电(sh)子教?#8220;EJB实用原理”Q,我们可以发现Q实际上J2EE容器分离了一般应用系l的一些通用功能Q例如事务机制、安全机制以及对象池或线E池{性能优化机制?/p>

  q些功能机制是每个应用系l几乎都需要的Q因此可以从具体应用pȝ中分d来,形成一个通用的框架^収ͼ而且Q这些功能机制的设计开发有一定难度,同时q行的稳定性和快速性都非常重要Q必ȝq长旉调试和运行经验积累而成Q因此,形成了专门的J2EE容器服务器品,如Tomcat JBoss、Websphere、WebLogic{?/p>

  从J2EEpȝ划分为J2EE容器和J2EE应用pȝ两个斚wQ我们已l看CU分散关注的思\Qseparation of concernsQ?br>
分散x

  通用需求功能从不相关类之中分离出来Q同Ӟ能够使得很多cd享一个行为,一旦行为发生变化,不必修改很多c,只要修改q个行ؓ(f)可以?br>
   AOP是q种实现分散x的编E方法,它将“x”装?#8220;斚w”中?/p>

AOP是什么?

  AOP是OOP的gl,是Aspect Oriented Programming的羃写,意思是面向斚w~程。AOP实际是GoF设计模式的gl,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这U目标的一U实现?/p>

  举例Q假设有在一个应用系l中Q有一个共享的数据必须被ƈ发同时访问,首先Q将q个数据装在数据对象中Q称为Data ClassQ同Ӟ有多个讉Kc,专门用于在同一时刻讉Kq同一个数据对象?/p>

  Z完成上述q发讉K同一资源的功能,需要引入锁Lock的概念,也就是说Q某个时刻,当有一个访问类讉Kq个数据对象Ӟq个数据对象必须上锁LockedQ用完后q卌锁unLockedQ再供其它访问类讉K?/p>

  使用传统的编E习(fn)惯,我们?x)创Z个抽象类Q所有的讉Kcȝ承这个抽象父c,如下Q?/p>

abstract class Worker{

  abstract void locked();
  abstract void accessDataObject();
  abstract void unlocked();

}


  ~点Q?
  • accessDataObject()Ҏ(gu)需要有“?#8221;状态之cȝ相关代码?
  • Java只提供了单承,因此具体讉Kcd能承这个父c,如果具体讉Kc还要承其它父c,比如另外一个如Worker的父c,无法方便实现?
  • 重用被打折扣Q具体访问类因ؓ(f)也包?#8220;?#8221;状态之cȝ相关代码Q只能被重用在相x“?#8221;的场合,重用范围很窄?br>
    仔细研究q个应用?#8220;?#8221;Q它其实有下列特性:(x)
  • “?#8221;功能不是具体讉Kcȝ首要或主要功能,讉KcM要功能是讉K数据对象Q例如读取数据或更改动作?
  • “?#8221;行ؓ(f)其实是和具体讉Kcȝ主要功能可以独立、区分开来的?
  • “?#8221;功能其实是这个系l的一个纵向切面,涉及许多cR许多类的方法。如下图Q?br>

  因此Q一个新的程序结构应该是xpȝ的纵向切面,例如q个应用?#8220;?#8221;功能Q这个新的程序结构就是aspectQ方面)

  在这个应用中Q?#8220;?#8221;斚wQaspectQ应该有以下职责Q?/p>

  提供一些必备的功能Q对被访问对象实现加锁或解锁功能。以保证所有在修改数据对象的操作之前能够调用lock()加锁Q在它用完成后Q调用unlock()解锁?/p>

AOP应用范围

  很明显,AOP非常适合开发J2EE容器服务器,目前JBoss 4.0正是使用AOP框架q行开发?br>  具体功能如下Q?br>Authentication 权限
Caching ~存
Context passing 内容传?br>Error handling 错误处理
Lazy loading 懒加?br>Debugging  调试
logging, tracing, profiling and monitoring 记录跟踪 优化 校准
Performance optimization 性能优化
Persistence  持久?br>Resource pooling 资源?br>Synchronization 同步
Transactions 事务

AOP有必要吗Q?/strong>

  当然Q上q应用范例在没有使用AOP情况下,也得C解决Q例如JBoss 3.XXX也提供了上述应用功能Q但是没有用AOP?/p>

  但是Q用AOP可以让我们从一个更高的抽象概念来理解Y件系l,AOP也许提供一U有价值的工具。可以这么说Q因Z用AOPl构Q现在JBoss 4.0的源码要比JBoss 3.XҎ(gu)理解多了Q这对于一个大型复杂系l来说是非常重要的?/p>

  从另外一个方面说Q好像不是所有的人都需要关心AOPQ它可能是一U架构设计的选择Q如果选择J2EEpȝQAOPx的上q通用斚w都已l被J2EE容器实现了,J2EE应用pȝ开发者可能需要更多地x行业应用斚waspect?/p>


AOP具体实现

  AOP是一个概念,q没有设定具体语a的实玎ͼ它能克服那些只有单承特性语a的缺点(如JavaQ,目前AOP具体实现有以下几个项目:(x)

  AspectJ (TM)Q 创徏于Xerox PARC. 有近十年历史Q成?br>  ~点Q过于复杂;破坏装Q需要专门的Java~译器?/p>

  动态AOPQ用JDK的动态代理API或字节码Bytecode处理技术?br>
  Z动态代理API的具体项目有Q?br>  JBoss 4.0 JBoss 4.0服务?br>  nanning q是以中国南宁命名的一个项目,搞不清楚Z么和中国相关Q是中国人发L(fng)Q?br>
  Z字节码的目有:(x)
  aspectwerkz 
  spring Q?/font>

在以后其它文章中Q我l对AOP概念q行分析Q和大家一起学?fn)进步?/p>

参考资料:(x)
http://www.voelter.de/data/articles/aop/aop.html
Aspect-Oriented_Java_Development.pdf

 



Masen 2007-04-07 12:17 发表评论
]]>
JNDIhttp://www.tkk7.com/masen/articles/109084.htmlMasenMasenSat, 07 Apr 2007 04:15:00 GMThttp://www.tkk7.com/masen/articles/109084.htmlhttp://www.tkk7.com/masen/comments/109084.htmlhttp://www.tkk7.com/masen/articles/109084.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/109084.htmlhttp://www.tkk7.com/masen/services/trackbacks/109084.htmlJNDI全称 Java Naming and Directory Interface
JNDI 是Javaq_的一个标准扩展,提供了一l接口、类和关于命名空间的概念。如同其它很多Java技术一PJDNI是provider-based的技术,暴露了一个API和一个服务供应接口(SPIQ。这意味着MZ名字的技术都能通过JNDI而提供服务,只要JNDI支持q项技术。JNDI目前所支持的技术包括LDAP、CORBA Common Object ServiceQCOSQ名字服务、RMI、NDS、DNS、Windows注册表等{。很多J2EE技术,包括EJB都依靠JNDI来组l和定位实体?
JDNI通过l定的概念将对象和名U联pv来。在一个文件系l中Q文件名被绑定给文g。在DNS中,一个IP地址l定一个URL。在目录服务中,一个对象名被绑定给一个对象实体?
JNDI中的一l绑定作Z下文来引用。每个上下文暴露的一l操作是一致的。例如,每个上下文提供了一个查找操作,q回指定名字的相应对象。每个上下文都提供了l定和撤除绑定名字到某个对象的操作。JNDI使用通用的方式来暴露命名I间Q即使用分层上下文以及用相同命名语法的子上下文?
jndi的用途:(x)
1。你可以用jndi来得到objectcȝ属?
如:(x)Attribute attr =directory.getAttributes(personName).get("email");
String email = (String)attr.get();
2。你可以用jndi来搜索对?
如:(x)foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
查找谁的名字叫Fox在wiz部门的员工?
3。你可以用jndi通过naming/directory服务查询像printers和databases的对?
如:(x)查询 Printer
Printer printer = (Printer)namespace.lookup(printerName);
printer.print(document);
4。你可以用jndi列表出命名空间的Ҏ(gu)U别的内?
如:(x)
NamingEnumeration list = namespace.list("o=Widget, c=US");
while (list.hasMore()) {
NameClassPair entry = (NameClassPair)list.next();
display(entry.getName(), entry.getClassName());
}
以上Ҏ(gu)jndi文档译?
地址Q?
http://java.sun.com/products/jndi/overview.html
tomcat数据库连接池配置中的
java:comp/env代表你的JVM的环?comp=computer env=environment


JNDI(The Java Naming and Directory InterfaceQJava命名和目录接?是一l在Java应用中访问命名和目录服务的API。命名服务将名称和对象联pv来,使得我们可以用名U访问对象。目录服务是一U命名服务,在这U服务里Q对象不但有名称Q还有属性?br>命名或目录服务你可以集中存储共有信息,q一点在|络应用中是重要的,因ؓ(f)q得这L(fng)应用更协调、更Ҏ(gu)理。例如,可以打印机讄存储在目录服务中Q以便被与打印机有关的应用?br>
JNDI概述
我们大家每天都不知不觉地使用了命名服务。例如,当你在web览器输入URL,http://java.sun.comӞ DNS(Domain Name System,域名pȝ)这个符号URL名{换成通讯标识QIP地址Q。命名系l中的对象可以是DNS记录中的名称、应用服务器中的EJBlg (Enterprise JavaBeans Component)、LDAP(Lightweight Directory Access Protocol)中的用户Profile?br>目录服务是命名服务的自然扩展。两者之间的关键差别是目录服务中对象可以有属性(例如Q用h email地址Q,而命名服务中对象没有属性。因此,在目录服务中Q你可以Ҏ(gu)属性搜索对象。JNDI允许你访问文件系l中的文Ӟ定位q程RMI注册的对象,讉K象LDAPq样的目录服务,定位|络上的EJBlg?br>对于象LDAP 客户端、应用launcher、类览器、网l管理实用程序,甚至地址薄这L(fng)应用来说QJNDI是一个很好的选择?br>JNDI架构
JNDI架构提供了一l标准的独立于命名系l的API,q些API构徏在与命名pȝ有关的驱动之上。这一层有助于应用与实际数据源分,因此不管应用
讉K的是LDAP、RMI、DNS、还是其他的目录服务。换句话_(d)JNDI独立于目录服务的具体实现Q只要你有目录的服务提供接口Q或驱动Q,你就可以使用目录?br>

JNDI 是一lAPIQ它用命?目录服务增强了网l应用。本文中的示例说明了用JNDI开发基于目录的应用是多么容易。它也说明了如何用同L(fng)API讉K不同的命?目录服务。开发者不必学?fn)不同的API。在某些情况下,例如Q在RMI和CORBA应用中,JNDI允许你部|时才选择命名服务?br>JNDI未来增加的功能包括Q与标准的Java SASL API(JSR-28Q?a target=_blank>http://jcp.org/aboutJava/communityprocess/review/jsr028/) 的集成、支持国际化域名、支持安全DNS?/span>

Masen 2007-04-07 12:15 发表评论
]]>
JMShttp://www.tkk7.com/masen/articles/109081.htmlMasenMasenSat, 07 Apr 2007 04:06:00 GMThttp://www.tkk7.com/masen/articles/109081.htmlhttp://www.tkk7.com/masen/comments/109081.htmlhttp://www.tkk7.com/masen/articles/109081.html#Feedback0http://www.tkk7.com/masen/comments/commentRss/109081.htmlhttp://www.tkk7.com/masen/services/trackbacks/109081.html  在不同系l之间交换信息的一大障是如何在精交换和格式化数据方面取得一致。Java Message ServiceQ?Java消息服务Q简UJMSQ通过提供一U与J2EE应用E序或传l系l交互的Ҏ(gu)部分的解决了q个问题?

  JMS的通用接口集合以异步方式发送或接收消息。异步方式接收消息显然是使用间断|络q接的客hQ诸如移动电(sh)话和PDA的最好的选择。另外, JMS采用一U宽杄合方式整合企业系l的Ҏ(gu)Q其主要的目的就是创够用跨q_数据信息的、可UL的企业应用E序Q而把开发h力解攑և来?

  Java消息服务支持两种消息模型QPoint-to-Point消息(P2P)和发布订阅消息(Publish Subscribe messagingQ简UPub/SubQ。JMS规范q不要求供应商同时支持这两种消息模型Q但开发者应该熟(zhn)这两种消息模型的优势与~点?

  P2P消息模型是在点对点之间传递消息时使用。如果应用程序开发者希望每一条消息都能够被处理,那么应该使用P2P消息模型。与Pub/Sub消息模型不同QP2P消息L能够被传送到指定的位|?

  Pub/Sub模型在一到多的消息广播时使用。如果一定程度的消息传递的不可靠性可以被接受的话Q那么应用程序开发者也可以使用Pub/Sub消息模型。换句话_(d)它适用于所有的消息消费E序q不要求能够收到所有的信息或者消息消费程序ƈ不想接收CQ何消息的情况?

  JMS通过允许创徏持久订阅来简化时间相x,即消息预订者未ȀzM可以接收到消息。此外,使用持久订阅q可通过队列提供灉|性和可靠性,而仍然允许消息被发给许多的接收者?Topic Subscriber topic Subscriber = topicSession.createDurableSubscriber(topic, subscriptionName);   Connection对象表示了到两种消息模型中的MU的消息pȝ的连接。服务器端和客户机端对象要求理创徏的JMSq接的状态。连接是由Connection Factory创徏的ƈ且通过JNDI查寻定位?//取得用于 P2P?QueueConnectionFactory QueueConnectionFactory = queueConnectionFactory( ); Context messaging = new InitialContext( ); QueueConnectionFactory = (QueueConnectionFactory) Messaging.lookup(“QueueConnectionFactory”); //取得用于 pub/sub?TopicConnectionFactory TopicConnectonFactory topicConnectionFactory; Context messaging = new InitialContext(); topicConnectionFactory = (TopicConnectionFactory) messaging.lookup(“TopicConnectionFactory”);   注意Q用于P2P的代码和用于PublishSubscribe的代码非常相伹{?

  如果session被标Cؓ(f)transactional的话Q确认消息就通过认和校正来自动地处理。如果session没有标记?transactionalQ你有三个用于消息确认的选项?

  · AUTO_ACKNOWLEDGE session自动地认收到一则消息?

  · CLIENT_ACKNOWLEDGE 客户端程序将认收到一则消息,调用q则消息的确认方法?   · DUPS_OK_ACKNOWLEDGE q个选项命o(h)session“懒散?#8221;认消息传递,可以惛_Q这导致消息提供者传递的一些复制消息可能会(x)出错。这U确认的方式只应当用于消息消费程序可以容忍潜在的副本消息存在的情c?queueSession = queueConnection.createQueueSession(false, session.AUTO_ACKNOWLEDGE);//P2P topicSession = topicConnection.createTopicSession(false, session.AUTO_ACKNOWLEDGE); //Pub-Sub

  注意Q在本例中,一个session目的从连l中创徏Q非值指出session是non-transactional的,q且 session自动地认收到一则消息?

  JMS现在有两U传递消息的方式。标Cؓ(f)NON_PERSISTENT的消息最多投递一ơ,而标Cؓ(f)PERSISTENT的消息将使用暂存后再转送的机理投递。如果一个JMS服务ȝQ那么持久性消息不?x)丢׃是得{到q个服务恢复联机时才?x)被传递。所以默认的消息传递方式是非持久性的。即使用非持久性消息可能降低内务和需要的存储器,q且q种传递方式只有当你不需要接收所有的消息时才使用?

  虽然 JMS规范q不需要JMS供应商实现消息的优先U\U,但是它需要递送加快的消息优先于普通别的消息。JMS定义了从0?的优先路线U别Q?是最低的优先U?则是最高的。更Ҏ(gu)的是0?是正怼先的变化幅度,??是加快的优先U的变化q度。D例来_(d)(x) topicPublisher.publish (message, DeliveryMode.PERSISTENT, 8, 10000); //Pub-Sub ?queueSender.send(message, DeliveryMode.PERSISTENT, 8, 10000);//P2P   q个代码片断Q有两种消息模型Q映递送方式是持久的,优先Uؓ(f)加快型,生存周期?0000 (以毫U度?)。如果生存周期设|ؓ(f)Ӟq则消息永q不?x)过期。当消息需要时间限制否则将使其无效Ӟ讄生存周期是有用的?

  JMS定义了五U不同的消息正文格式Q以及调用的消息cdQ允怽发送ƈ接收以一些不同Ş式的数据Q提供现有消息格式的一些别的兼容性?

  · StreamMessage -- Java原始值的数据?

  · MapMessage--一套名U?值对

  · TextMessage--一个字W串对象

  · ObjectMessage--一个序列化?Java对象

  · BytesMessage--一个未解释字节的数据流

  JMS应用E序接口提供用于创徏每种cd消息和设|荷载的Ҏ(gu)例如Qؓ(f)了在一个队列创建ƈ发送一个TextMessage实例Q你可以使用下列语句Q?TextMessage message = queueSession.createTextMessage(); message.setText(textMsg);   以异步方式接收消息,需要创Z个消息监听器然后注册一个或多个使用MessageConsumer的JMS MessageListener接口。会(x)?主题或队?负责产生某些消息Q这些消息被传送到使用onMessageҎ(gu)的监听者那里?import javax.jms.*; public class ExampleListener implements MessageListener { //把消息强制{化ؓ(f)TextMessage格式 public void onMessage(Message message) { TextMessage textMsg = null; // 打开q处理这D|?} }   当我们创建QueueReceiver和TopicSubscriberӞ我们传递消息选择器字W串Q?//P2P QueueReceiver QueueReceiver receiver; receiver = session.createReceiver(queue, selector); //Pub-Sub TopicSubscriber TopicSubscriber subscriber; subscriber = session.createSubscriber(topic, selector);   Z启动消息的交付,不论是Pub/Subq是P2PQ都需要调用startҎ(gu)?TopicConnection.start( ); //pub-sub QueueConnection.start( ); //P2P TopicConnection.start ( );// pub-sub QueueConnection.start ( );// P2P

  当一条消息被捕捉Ӟq条消息做ؓ(f)一条必被强制转化为适当消息cd的普通Message对象到达。这是一个被用来提取或打开消息内容的getterҎ(gu)。下列代码片D用StreamMessagecd?private void unPackMessage (Message message) { String eName; String position; double rate; StreamMessage message; Message = session.createStreamMessage( ); //注意下面的代码必L照我l出的顺序书?message.writeString(eName); message.writeString(position); message.writeDouble(rate); //实现处理消息的必要的E序逻辑 }

  停止消息的传递,无论是Pub/Subq是P2PQ都调用stopҎ(gu)?TopicConnection.start( ); //pub-sub QueueConnection.start( ); //P2P TopicConnection.start ( );// pub-sub QueueConnection.start ( );// P2P   其他的J2EElg--servlet或EJB--可以当作消息生者;然而,它们可能只能同步操作Q这可能是因为它们的h-应答的性质军_的。虽然XML目前q不是被支持的消息类型,发送一个XML文g和创Z条文本类型消息以及把XML文gd到消息的有效负蝲都一L(fng)单,都是以非专有的方式传送数据。值得注意的是Q一些JMS供应厂商已经提供了可用的XML消息cd。但是用非标准的消息类型可能会(x)出现可移植性问题?String reportData; //reportData内容为XML 文档 TextMessage message; message = session.createTextMessage(); message.setText (reportData);

  消息驱动lg(MDB)是一个当消息到达时被容器调用的异步消息消费程序。和entity和session EJB不同QMDB没有本地和远E接口ƈ且是匿名的;它们对于客户是不可见的。MDB是JMSpȝ的一部分Q作为消费者实现服务器上的商业逻辑E序?一个客L(fng)序可能通过使用JNDI定位一个与MDB相关联的JMS?例如Q?Context initialContext = new InitialContext(); Queue reportInfoQueue = (javax.jms.Queue)initialContext.lookup (“java:comp/env/jms/reportInfoQueue”);   MDB是由Beancd相应的XML部v描述W组成?Bean cd现MessageDriveBean 接口Q?import javax.ejb.*; import jms.Message.*; public interface MessageDriveBean { public void ejbCreate(); public void ejbRemove(); public void setMessageDrivenContext(MessageDrivenContext ctx); }   消息监听器接口:(x) import javax.jms.*; public interface MessageListener { public void onMessage( ); }

  部v描述W?Q?DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd"Q?Qejb-jarQ?Qenterprise-beansQ?Qmessage-drivenQ?Qejb-nameQMDBQ?ejb-nameQ?Qejb-classQMDBQ?ejb-classQ?Qtransaction-typeQContainerQ?transaction-typeQ?Qmessage-driven-destinationQ?Qjms-destination-typeQjavax.jms.QueueQ?jms-destination-typeQ?Q?message-driven-destinationQ?Qsecurity-identityQ?Qrun-as-specified-identityQ?Qrole-nameQeveryoneQ?role-nameQ?Q?run-as-specified-identityQ?Q?security-identityQ?Q?message-drivenQ?Q?enterprise-beansQ?Q?ejb-jarQ?  既然我们现在已经有了一些基本的JMS知识Q那么我们可以用JMS做什么呢QQ何事情都可以?  例如Q分别用于销售、库存、客h务和账目处理的系l。这些部门之间的pȝ很可能已l存在了很长旉Q这些处理要求把事务Ud到系l中去,qƈ不是一个小的工作。这是消息服务适用的地炏V?

  当售货员完成销售的时候,一条消息被发给库存pȝQ一旦订单消息发送给收发货h员,可以按照订单出货了。当订单成功地发货,pȝ通知֮服务和会(x)计系l这个订单已l成功的交易了。所有对应的每个子系l都自动地根据收到的消息q行更新?

  JMS一般都不是用来整合一个系l,而是整合许多可能参与消息驱动环境的系l。JMS是一个用于开发和集成企业应用E序的重要的工具。因多公叔R有以前遗留下来的pȝ和新q开发的pȝl合h的系l,消息的用是整合整个企业的重要的步骤?



Masen 2007-04-07 12:06 发表评论
]]>
վ֩ģ壺 츾һ| Ļþۺ| þþƷƵ| ŷղһëƬ| ޵Ӱѹۿ| Ƶһ| ޳ɫwwwþվҹ| žƷƵվ| ӰԺѹۿ| òƵ| ѿĿһ| ɫWWWƷƵ| ȫƵѸ| 鶹˾Ʒ| ѹۿ˵ŮƵ| ĻƵѹۿ| baoyu777Ƶ| ˳ɻҳ߹ۿձ| 99Ƶ߿| þøԴվѿ| ĻӰwwwĻ| ѹۿAVƬ| Ұһ | ۺһ | ձvƬһ| ҹƵ| Ƶۿwww | ھƷ鶹վ91鶹 | ߹ۿ| ޹պƷ| ޹߹ۿ| 91ҹƷһ| һƷ| պĻۺ| լоƷһ߹ۿ| ƷպAV | ҹAVƬ| ޾Ʒ߹ۿƵ| ޾Ʒվ| žžžƷƵ| 88avѹۿ|