风之语

posts(201) comments(182) trackbacks(1)
  • BlogJava
  • 联系
  • RSS 2.0 Feed 聚合
  • 管理

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • ajax(1)
  • android(1)
  • apache(1)
  • AppFuse(1)
  • BIRT(1)
  • iText(1)
  • JSF(8)
  • kettle(1)
  • linux(5)
  • mac(1)
  • maven(1)
  • MSTR(3)
  • Open XML(1)
  • Oracle(21)
  • RCP
  • Struts(2)
  • Struts2(2)
  • SybaseIQ(6)
  • tapestry
  • tomcat(2)
  • weblogic(1)
  • webservice(1)
  • weka(1)
  • 云计算(1)
  • 收藏(31)
  • 数据仓库(11)
  • 架构设计(3)
  • 生活(2)
  • 集群(1)
  • 项目管理(6)

随笔档案

  • 2012年12月 (4)
  • 2012年11月 (1)
  • 2012年7月 (2)
  • 2011年8月 (1)
  • 2011年7月 (1)
  • 2011年3月 (1)
  • 2010年12月 (2)
  • 2010年11月 (4)
  • 2010年10月 (3)
  • 2010年9月 (5)
  • 2010年8月 (1)
  • 2010年7月 (4)
  • 2010年3月 (1)
  • 2010年2月 (3)
  • 2009年12月 (3)
  • 2009年11月 (4)
  • 2009年9月 (3)
  • 2009年6月 (5)
  • 2009年5月 (3)
  • 2009年4月 (2)
  • 2009年3月 (5)
  • 2009年2月 (4)
  • 2009年1月 (2)
  • 2008年11月 (2)
  • 2008年9月 (1)
  • 2008年7月 (2)
  • 2008年6月 (4)
  • 2008年5月 (6)
  • 2008年4月 (1)
  • 2008年3月 (1)
  • 2007年12月 (2)
  • 2007年11月 (5)
  • 2007年10月 (2)
  • 2007年9月 (3)
  • 2007年8月 (3)
  • 2007年4月 (1)
  • 2007年3月 (2)
  • 2007年2月 (2)
  • 2007年1月 (2)
  • 2006年12月 (3)
  • 2006年8月 (2)
  • 2006年7月 (2)
  • 2006年6月 (2)
  • 2006年4月 (2)
  • 2006年3月 (1)
  • 2006年2月 (3)
  • 2006年1月 (6)
  • 2005年12月 (6)
  • 2005年11月 (4)
  • 2005年10月 (17)
  • 2005年9月 (25)
  • 2005年8月 (16)
  • 2005年7月 (8)

相册

  • 技术图片

收藏夹

  • java

link

My wife

  • My wife's blog

最新随笔

  • 1. apache修改最大连接并用ab网站压力测试
  • 2. Vm虚拟机访问本地硬盘文件
  • 3. NFS文件无法写入的权限问题
  • 4. weblogic设置上传文件访问权限
  • 5. 在android上动态实现ichartjs的3D柱形图
  • 6. 使用Oracle trunc 来指定精确的年月日时分秒
  • 7. Quartz 2.1.5 web应用配置
  • 8. LoginAny 使用笔记
  • 9. MyEclipse 无响应的几种解决办法
  • 10. java.sql.SQLException: No more data to read from socket

搜索

  •  

积分与排名

  • 积分 - 403174
  • 排名 - 139

最新评论

  • 1. re: 使用Oracle trunc 来指定精确的年月日时分秒[未登录]
  • 政治
  • --张三
  • 2. re: 干掉流氓软件vrvrf_c.exe,vrvedp_m.exe[未登录]
  • `
  • --1
  • 3. re: 无需刻录DMG光盘,教你在VMWare下安装MAC OS X Snow Leopard 10.6
  • 我走到了换DMG映像的时候,然后就没有反应了,这个是什么情况,是不是我的映像文件有问题,还是。。。。
  • --玉竹常青
  • 4. re: LoginAny 使用笔记
  • 怎么没一个人留言,现在来是不是在挖坟啊
  • --ellipse
  • 5. MSTR web应用的部署[未登录]
  • 请问,如何用oracle Application Server服务器部署mstr web应用?
  • --rocky

阅读排行榜

评论排行榜

什么是云计算?

什么是云计算(cloud computing)呢?云计算是一种基于因特网的超级计算模式,在远程的数据中心里,成千上万台电脑和服务器连接成一片电脑云。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。
 
  那么,it精英们如何看待云计算的呢?IBM的创立者托马斯·沃森曾表示,全世界只需要5台电脑就足够了。比尔·盖茨则在一次演讲中称,个人用户的内存只需640K足矣。李开复打了一个很形象的比喻:钱庄。最早人们只是把钱放在枕头底下,后来有了钱庄,很安全,不过兑现起来比较麻烦。现在发展到银行可以到任何一个网点取钱,甚至通过ATM,或者国外的渠道。就像用电不需要家家装备发电机,直接从电力公司购买一样。云计算就是这样一种变革——由谷歌、IBM这样的专业网络公司来搭建计算机存储、运算中心,用户通过一根网线借助浏览器就可以很方便的访问,把“云”做为资料存储以及应用服务的中心。
 

  狭义云计算是指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的资源(硬件、平台、软件)。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。这种特性经常被称为像水电一样使用IT基础设施。


  广义云计算是指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是IT和软件、互联网相关的,也可以是任意其他的服务。

 
(一)原理:     
 
  云计算(Cloud Computing)是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。

云计算演进过程 


  云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。


  这可是一种革命性的举措,打个比方,这就好比是从古老的单台发电机模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。最大的不同在于,它是通过互联网进行传输的。


  云计算的蓝图已经呼之欲出:在未来,只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。从这个角度而言,最终用户才是云计算的真正拥有者。


  云计算的应用包含这样的一种思想,把力量联合起来,给其中的每一个成员使用。

(二)云计算有哪些好处?      

  1、安全,云计算提供了最可靠、最安全的数据存储中心,用户不用再担心数据丢失、病毒入侵等麻烦。

  2、方便,它对用户端的设备要求最低,使用起来很方便。

  3、数据共享,它可以轻松实现不同设备间的数据与应用共享。

  4、无限可能,它为我们使用网络提供了几乎无限多的可能。

(三)云计算最有利于中小企业?      

  云计算技术将使得中小企业的成本大大降低。如果说“云”给大型企业的IT部门带来了实惠,那么对于中小型企业而言,它可算得上是上天的恩赐了。过去,小公司人力资源不足,IT预算吃紧,那种动辄数百万美元的IT设备所带来的生产力对它们而言真是如梦一般遥远,而如今,“云”为它们送来了大企业级的技术,并且先期成本极低,升级也很方便。


  这一新兴趋势的重要性毋庸置疑,不过,它还仅仅是一系列变革的起步阶段而已。云计算不但抹平了企业规模所导致的优劣差距,而且极有可能让优劣之势易主。简单地说,当今世上最强大最具革新意义的技术已不再为大型企业所独有。“云”让每个普通人都能以极低的成本接触到顶尖的IT技术。

(四)“云”时代      

  目前,PC依然是我们日常工作生活中的核心工具——我们用PC处理文档、存储资料,通过电子邮件或U盘与他人分享信息。如果PC硬盘坏了,我们会因为资料丢失而束手无策。

  而在“云计算”时代,“云”会替我们做存储和计算的工作。“云”就是计算机群,每一群包括了几十万台、甚至上百万台计算机。“云”的好处还在于,其中的计算机可以随时更新,保证“云”长生不老。Google就有好几个这样的“云”,其他IT巨头,如微软、雅虎、亚马逊(Amazon)也有或正在建设这样的“云”。

  届时,我们只需要一台能上网的电脑,不需关心存储或计算发生在哪朵“云”上,但一旦有需要,我们可以在任何地点用任何设备,如电脑、手机等,快速地计算和找到这些资料。我们再也不用担心资料丢失。  

(五)云计算的几大形式      


  1.SAAS(软件即服务)


  这种类型的云计算通过浏览器把程序传给成千上万的用户。在用户眼中看来,这样会省去在服务器和软件授权上的开支;从供应商角度来看,这样只需要维持一个程序就够了,这样能够减少成本。Salesforce.com是迄今为止这类服务最为出名的公司。SAAS在人力资源管理程序和ERP中比较常用。 Google Apps和Zoho Office也是类似的服务


  2.实用计算(Utility Computing)


  这个主意很早就有了,但是知道最近才在Amazon.com、Sun、IBM和其它提供存储服务和虚拟服务器的公司中新生。这种云计算是为IT行业创造虚拟的数据中心使得其能够把内存、I/O设备、存储和计算能力集中起来成为一个虚拟的资源池来为整个网络提供服务。


  3.网络服务


  同SAAS关系密切,网络服务提供者们能够提供API让开发者能够开发更多基于互联网的应用,而不是提供单机程序。


  4.平台即服务


  另一种SAAS,这种形式的云计算把开发环境作为一种服务来提供。你可以使用中间商的设备来开发自己的程序并通过互联网和其服务器传到用户手中。


  5.MSP(管理服务提供商)


  最古老的云计算运用之一。这种应用更多的是面向IT行业而不是终端用户,常用于邮件病毒扫描、程序监控等等。


  6.商业服务平台(如:中国云计算网 www.cloudcomputing-china.cn )


  SAAS和MSP的混合应用,该类云计算为用户和提供商之间的互动提供了一个平台。比如用户个人开支管理系统,能够根据用户的设置来管理其开支并协调其订购的各种服务。


  7.互联网整合


  将互联网上提供类似服务的公司整合起来,以便用户能够更方便的比较和选择自己的服务供应商。

  说了半天相信很多人还没搞清怎么回事,因为单“云计算”这三个字就已经够云里雾里的了。云计算到底有多强大,仍有待时代的检阅!

posted @ 2010-02-09 16:03 风 阅读(333) | 评论 (0) | 编辑 收藏

win7下安装Oracle10g

工具网上的资料改了refhost.xml文件 添加了
<!--Microsoft Windows 7-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>
后来用xp sp3 兼容模式,管理员运行安装,
刚装完 Oracle 10g,然后,进行em后,界面出来了,但报了一个错:
java.lang.Exception: Exception in sending Request :: null
很多功能不能用,提示重新登录

解决方案:找到下面的文件
$ORACLE_HOME\db_1\$HOSTNAME\sysman\config\emd.properties
其中的agentTZRegion缺省是GMT,改为你所在的时区即可,例如:
agentTZRegion=Asia/Harbin
关于时区的列表参考:10.2.0\db_1\sysman\admin\supportedtzs.lst
然后先停止 dbconsole 使时区设置生效并重启OracleDBConsole:
然后先停止dbconsole 在重启dbconsole :
set ORACLE_SID=orcl

emctl stop dbconsole

emctl start dbconsole

posted @ 2010-02-04 00:55 风 阅读(1396) | 评论 (0) | 编辑 收藏

Oracle10g卸载后再次安装,设置的SID相同出现“指定的SID在本机上已经存在。。。解决方法

1、开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。
2、 开始->程序->Oracle - OraHome81->Oracle Installation Products-> Universal Installer 卸装所有Oracle产品,但Universal Installer本身不能被删除
5、 运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。
6、 运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动 这个列表,删除所有Oracle入口。
7、 运行refedit, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application, 删除所有Oracle入口。
8、 开始->设置->控制面板->系统->高级->环境变量 删除环境变量CLASSPATH和PATH中有关Oracle的设定
9、 从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标
10、 删除\Program Files\Oracle目录
11、 重新启动计算机,重起后才能完全删除Oracle所在目录(到这基本可以安装 )                           
12、 删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,删除这个入 口目录及所有子目录,并从Windows 2000目录(一般为C:\WINNT)下删除以下文 件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。                                                                                                            
13、 WIN.INI文件中若有[ORACLE]的标记段,删除该段
14、 如有必要,删除所有Oracle相关的ODBC的DSN
15、 到事件查看器中,删除Oracle相关的日志 说明: 如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装, 安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了。

posted @ 2010-02-04 00:52 风 阅读(833) | 评论 (0) | 编辑 收藏

报表产品1

1.水晶报表 美国BO公司出品http://www.businessobjects.com , 传统条带状报表工具的代表。水晶报表是最早进入中国市场的,有大量的用户。由于其采用模型的局限性,不支持多数据源,不能做复杂的中国报表. 价格拾万圆左右. 没有加密狗.
2.Fine Report 南京帆软软件,美资公司,http://www.fine report.com ,从设计角度,选择多项支持的态度,即Fine Report在一个产品中同时集成三种模型:条带状模型,多点扩散模型,电子表格模型,把选择权交给用户。能够制作复杂的报表,支持多数据源,操作比较简单,适合中国式报表设计的需求。价格壹万圆左右. 没有加密狗.
3.如意报表 深圳明宇公司出品 http://www.soft2web.com, 基于俄罗斯的免费开源的fastreport控件, 功能类似水晶报表, delphi写的使用广泛,基于fastreport控件采用的是西式条带式报表模型,不仅画起来极为费劲,稍复杂一些的报表都要编程才能实现不支持多数据源, 不能制作复杂的中国报表.实际上更适合C/S应用。价格壹万圆左右, 有加密狗.
4.数巨报表 上海炎鼎软件公司出品, 完全本土公司, http://www.maxrpt.com , 和如意报表一样, 也是基于俄罗斯的免费开源的fastreport控件, 功能类似水晶报表, delphi写的使用广泛, 不支持多数据源, 不能制作复杂的中国报表。不过,与如意报表不同的,数巨报表不是一个孤立的产品,而是作为数巨商业智能系统(Max@X Analyser)的一个部分而存在。价格壹万圆左右, 有加密狗.
5.快逸报表 北京润乾公司出品, 完全本土公司, http://www.quiee.com , 06年才出来的, 润乾报表普及版的改头换面产品。使用不多, 纯java,不支持多数据源, 不能做复杂的中国报表, 仅能设计格式最简单的报表,稍复杂的报表就需要通过编写程序来实现。价格壹万圆左右, 有加密狗.
6.润乾报表 http://www.runqian.com,北京润乾软件公司,和快逸报表不同的是 支持多数据源,非线性报表模型, 即可以设计复杂的中国式报表。企业版价格贰拾伍万圆左右. 有加密狗.

posted @ 2009-12-29 15:31 风 阅读(280) | 评论 (0) | 编辑 收藏

BIRT:基于 Eclipse 的报表

安装介绍

对于扩展 Eclipse 的功能,首先当然就是去下载对应的 plugin,BIRT 也不能例外。BIRT 的下载地址:http://download.eclipse.org/birt/downloads/,当前版本是2.0。BIRT 依赖于 Eclipse 的其它几个 plugin(GEF 和 EMF),由于我使用的是 Eclipse WTP(这是 Eclipse 的 WEB 开发工具),在这个工具中那些 plugin 都已预装,因此直接下载 birt-report-framework-2_0_0.zip 就好了。如果没有这些 plugin,请下载。

下载之后,安装非常简单:只需解压然后将对应的features和plugins目录中的内容复制到Eclipse对应的目录下即可。且慢,这只是完成了对于BIRT的基本安装。下一步就是去下载BIRT需要的第三方软件包:

  需要的jar文件 复制位置(都在plugins目录下)
Apache Axis axis.jar
axis-ant.jar
commons-discovery-0.2.jar
jaxrpc.jar
saaj.jar
wsdl4j-1.5.1.jar
org.eclipse.birt.report.viewer_version/birt/WEB-INF/Lib
iText 1.3 itext-1.3.jar org.eclipse.birt.report.engine.emitter.pdf_version/lib
prototype.js v1.4.0 prototype.js v1.4.0 org.eclipse.birt.report.viewer_version/birt/ajax/lib

自此,BIRT的安装大功告成。启动Eclipse,在"project wizard"中会出现一个BIRT的项目类型。





回页首


典型使用

在使用之前,了解一些关于BIRT的基本概念,将会对使用非常有益:

  • 数据源:数据的来源,或提供者。如xml数据源、jdbc数据源等。
  • 数据集:数据集合,它必须与数据源关联,可以理解为查询的结果。
  • 报表以及报表项,报表可视为是针对一组数据集的表现形式,而报表项这是这个表现形式的某个具体的单元。它们之间的关系,与窗体和控件的关系非常类似。报表、数据集、数据源三者间的关系:数据源 --- 数据集 --- 报表。
  • 报表参数:查询参数的表现形式,使用它可以构建更灵活的报表。
  • 模板和库:主要用于复用报表设计,提高报表开发的效率。

本文中的例子都采用jdbc数据源,这是最常见的使用情形,其中涉及的数据关系是一个典型的多对多关系:



1. 简单报表

首先,让我们来看看一个"Hello World"级别的应用:"列出所有用户",以便可以快速的了解BIRT。为了完成这一任务,我们需要:

A. 通过项目向导,创建BIRT工程。工程创建完毕之后,显示BIRT的"报表设计"视图。由于此时没有报表,其它几个视图,如"数据资源管理器",不可用。



B. 在项目上点鼠标右键,选择:"new -> 报表"。在报表类型中,选择"空白报表"。

C. 创建新报表后,数据视图可用。在"数据资源管理器"中创建报表所需要的jdbc数据源。根据向导,可以方便的添加jdbc驱动、数据库url、用户名和密码。

D. 在指定的数据源上,创建数据集,这一步完成产生数据集的查询。在BIRT中支持2种数据集:基于查询语句和基于存储过程。在本例中使用前者,对应的查询语句是:select user.userid, user.username, user.addr from user。

E. 选择刚刚创建的数据集,将它拖至空白报表页上。BIRT会自动为其创建一个报表项,此处是"表"。如下图:



F. 选择预览,就可以看到报表运行的实际结果了。或在报表上点击鼠标右键,选择:"报表 -> 运行报表"。

非常简单,一个显示所有用户信息的报表就完成了。在此基础之上,让我们再来完成一些其它具有挑战性的任务:

1.格式化:这是一个内容广泛的主题,常见的需求:

需求 解决办法(以上为例)
显示报表列头为中文 如:将userid显示为"用户标识"。
选择"userid",输入"用户标识"。
设置报表外观 选择对应的报表项,通过"属性编辑器"调整。
对于报表数据列进行处理 如:将userid和username,显示成:userid:username。双击row["userid"],出现"表达式生成器",输入: row["userid"]+":"+ row["username"]
分页 选择"表":在"属性编辑器"中,选择"分页符",在"分页符间隔"中输入分页大小。
页眉和页脚 在报表设计页,选择"主页",在其中设置页眉和页脚。

2.排序:一种变通的做法是:将数据集排序之后,如在对应的SQL语句中使用order by,再显示。除此之外,也可以在报表设计时来完成:

A. 选择表,此时属性编辑器下方会出现与表相关的选择页。



B. 选择"排序",在对应的页面中选择"添加"按钮之后,出现:



C. 选择需要进行排序的列,以及排序方式。

3.计算列:通过"数据集编辑器"来完成。进入"数据集编辑器后",选择"计算列":输入对应的"列名称"、"数据类型"和"表达式"。

4.报表参数:它为报表的产生带来了极大的灵活性。报表参数一定是与含参数的查询对应的,否则失去了意义。现在,将以上需求改为列出"用户标识大于某一输入的所有用户":

A. 编辑数据集,修改SQL:select user.userid,user.username,user.addr from user where user.userid>?。

B. 在数据集编辑窗体内选择"参数",然后输入对应的"名称"、"数据类型"、"方向"和"默认值"(必须给出默认值)。其中"方向"表示"输入"或"输出"。对于参数,一般选"输入"。完毕之后:



C. 在"数据资源管理器"视图,创建报表参数:"用户标识"。

D. 选择"表",在"属性编辑器"中选择"绑定"。此时,会出现刚才在数据集中定义的参数"id"。在"值"列,选择报表参数"用户标识":



E. 运行报表时,此时会出现报表参数的输入框,填写值后即出现报表结果。

本例虽然只定义了一个报表参数,但是BIRT并没有这样的限制。我们可以创建多个参数,做法很简单:首先,查询有多个参数;定义数据集的参数时,按照查询中参数出现的顺序定义;最后,添加需要的报表参数。

5.分组:以上为例:将用户按地址分组。

A. 选择"表",点击鼠标右键,选择"插入组"。这里有两个选择:"在上面"和"在下面"。

B. 选择任意一种,弹出分组资料窗体。填写其中的:"名称"和"分组依据"。在本例中,"分组依据"是addr列。

C. 选择预览,或运行报表,查看结果。

2. 子报表

子报表是另一种最常见的报表,以上为例:列出所有用户,并列出每个用户所购买的项目,以及项目数。为了完成这种父子关系的报表,需要:

A. 创建新报表和数据源。

B. 创建数据集user,使用SQL:select user.userid,user.username,user.addr from user。

C. 创建数据集items,使用SQL:


select item.itemid,item.itemdesc,item.price,user_item.count from item,user_item
            where item.itemid= user_item.itemid
            and user_item.userid= ?
            

同时在数据集items上创建参数user,它对应SQL中的参数。

D. 从"Palette"视图拖入"列表"到报表中,在"属性编辑器"的"绑定"页中,选择数据集为user。它用来显示主表的信息,在本例中是用户信息。

E. 从"Palette"视图拖入"网格"到"列表"的"明细数据"中,设置网格为1行2列,它用来存放"用户姓名"和"用户地址"。在"数据资源管理器"视图,选择数据集user,将username和addr分别拖入网格的2列中。

F. 在"数据资源管理器"视图,选择数据集items,将它拖入"列表"的"明细数据"中,位于刚刚插入的网格下方。此时,BIRT会生成数据集items对应的"表"。

G. 选择刚刚生成的"表",在"属性编辑器"的"绑定"页中,会出现在items中定义的参数。修改它的值:row["userid"]。于是,父子报表就发生了联系。

H. 选择预览,或运行报表,就可以看到结果了。

很遗憾,到目前为止,另一种最常见的报表"交叉表"还不被BIRT支持。但是,BIRT的官方网站已明确表示,将在未来的版本中支持它。

3. 统计图表

俗话说,"一图顶千言"。没有图的报表是枯燥,且缺乏表现力的。在本例中,我们将使用图表来表示:每个用户的消费总数。

A. 创建新报表和数据源。

B. 创建数据集chart,使用SQL:


select user.username,round(sum(item.price*user_item.count),2)
            from item, user_item, user
            where item.itemid= user_item.itemid
            and user.userid= user_item.userid
            group by user.username
            

C. 从"Palette"视图拖入"图表"到报表中,此时会弹出"编辑图表"窗体。

D. 在"选择图表类型"页,选择图表类型为"条形图"。在"选择数据"页,使用数据集chart,同时选中username列,将其拖入"类别x系列"。对于统计列,同样将其拖入"类别y系列"。在"图表格式"页,分别为x和y系列,填写相应的显示名称。

E. 选择预览,或运行报表,即可看到统计图表。

4. 使用脚本

可以使用脚本,是BIRT的一大特色。在BIRT中,数据源、数据集和报表项,都可以书写脚本。具体做法:选择数据源、数据集和报表项任意一种对象,然后选择"脚本"页面。如选择数据源user后,对应的脚本输入页面:



选择对应的事件,然后在下方的脚本输入框中输入脚本即可。如对于第一个例子,我们需要统计用户地址是"No.5 St."的用户数:

A. 选择数据集,然后选择"脚本",进入数据集的脚本编辑窗口。

B. 选择事件"afterOpen",在脚本窗口内输入:count=0;

C. 选择事件"onFetch",在脚本窗口内输入:if( row["addr"]== "No.5 St.") count++;

D. 选择报表,在脚本窗口选择事件"onRender",输入:this.caption=count;

E. 预览,或运行报表后,会在报表的标题输出count的数值。

另外,BIRT也支持使用java来作为报表项的事件处理程序。具体做法,请参见BIRT的帮助文档。

5. 库和模板

除了脚本使开发者可以自定义报表的行为外,BIRT还提供了库和模板机制来重用设计,加快报表的开发。在TheServerSide上有一篇相当详细的文档:Using Eclipse BIRT Report Libraries and Templates。





回页首


应用集成

BIRT与现有应用的集成非常简单,由于BIRT主要是web应用,本节以web应用为例进行说明。

1. 从Eclipse BIRT官方网站下载birt-runtime-2_0_0.zip。

2. 解压之后,只需要其中的web view example目录下的内容。

3. 复制以下第三方软件包到web view example目录:

  需要的jar文件 复制位置
Apache Axis axis.jar
axis-ant.jar
commons-discovery-0.2.jar
jaxrpc.jar
saaj.jar
wsdl4j-1.5.1.jar
WEB-INF/Lib
iText 1.3 itext-1.3.jar Plugins/org.eclipse.birt.report.engine.emitter.pdf/lib
prototype.js v1.4.0 prototype.js v1.4.0 ajax/lib

4. 将web view example目录发布到web容器中,如tomcat,改名:birtApp。

5. 启动tomcat,并访问birtApp。在首页中选择"View Example",如果成功发布,系统将提示成功。

6. 发布设计完成的报表文件,在birtApp中创建reports目录,用于存放报表设计文件。

7. 在应用中通过:http://localhost:8080/birtApp/frameset?__report=报表文件路径,就可以访问报表了。

这个web应用支持2个动作:

  • frameset,以frameset的形式显示报表。这个界面包含一些frame,如页面导航,报表主体在其中的一个frame中显示;使用形式:
    http://localhost:8080/birtApp/frameset?__report=报表文件路径&参数=........
  • run,报表以一个单独的html页面或pdf显示,由于这种形式没有frmaeset,因此使用者必须自己提供相应的参数,如报表参数,页号等。使用形式:
    http://localhost:8080/birtApp/run?__report=报表文件路径&参数=........

对于以上2个动作,以下列出可用的参数:

选项 说明
__format 报表输出格式:html或pdf,缺省是html。对于frameset不起作用。
__isnull 指明一个参数是null,常用于字符串类型。如果提供参数且值为空: - 对于日期和数字类型,BIRT会将它们当作null处理。 - 对于字符串,BIRT会将它作为空字符串。因此,为了说明某个字符串是null,通常写为:__isnull=参数。
__locale 本地化选项,缺省是jvm的locale。
__report 报表设计文件路径。
报表参数 报表参数参数值对,形式:参数名=参数值。对于frameset,直接在地址栏中输入参数名=参数值后回车,不会影响报表结果。虽然,此时选择"运行报表"时,弹出的参数值已经改变。

虽然本节所说的是针对web应用的集成,但是这种方法同样也可与非web应用集成。此时,我们可以采取一种变通的方法:在非web应用中使用内嵌的web容器,如jetty,也可达到同样的效果。这种做法和Eclipse的做法类似。还记得在报表设计时使用"报表 -> 运行报表"吗?那个弹出的窗体,实际就是一个web页面。





回页首


结论

与一些老牌报表软件相比,BIRT可能仍显稚嫩。然而,它也不乏其独到之处,如脚本控制、库和模板。加之有世界领先的报表厂商Actuate支持,实际上BIRT的ROM(Report Object Model)就是Actuate捐献的,我们有充分的理由对BIRT的前景表示乐观。



参考资料

  • BIRT官方网站 http://www.eclipse.org/birt/phoenix/

  • BIRT and POJOs as datasources example http://tools.osmosis.gr/blog/archives/2005/06/birt_and_object.html

  • Using Eclipse BIRT Report Libraries and Templates http://www.theserverside.com/articles/article.tss?l=EclipseBRT

posted @ 2009-12-08 17:09 风 阅读(610) | 评论 (0) | 编辑 收藏

几种ESB(企业服务总线)介绍

几种ESB(企业服务总线)介绍

ESB(Enterprise Service Bus,即企业服务总线)是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。

企业服务总线ESB就是一种可以提供可靠的、有保证的消息技术的最新方法。ESB中间件产品利用的是Web服务标准和与公认的可靠消息MOM协议接口(例如 IBM的WebSphere MQ、Tibco的Rendezvous和Sonic Software的SoniCMQ)。ESB产品的共有特性包括:连接异构的MOM、利用Web服务描述语言接口封装MOM协议,以及在MOM传输层上传送简单对象应用协议(SOAP)传输流的能力。大多数ESB产品支持在分布式应用之间通过中间层如集成代理实现直接对等沟通。

企业服务总线(Enterprise Service Bus,ESB)的概念是从面向服务体系架构(Service -Oriented Architecture, SOA)发展而来的。SOA描述了一种IT基础设施的应用集成模型,其中的软构件集是以一种定义清晰的层次化结构相互耦合,其中,一个ESB是一个预先组装的SOA实现,它包含了实现SOA分层目标所必需的基础功能部件。

一、ESB的出现改变了传统的软件架构

ESB 是传统中间件技术与XML、Web服务等技术相互结合的产物,ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。

二、企业服务总线(ESB)的用处

ESB 不是万能的,他不是一个应用程序框架,也不是一个企业应用的解决方案.它只是一个基于消息的调用企业服务的通信模块!你可以把它嵌入到你的应用程序框架中,例如嵌入到spring容器里面,或者嵌入到工作流系统中.它的作用是对企业里面的SOA服务的调用提供一个框架和简便的方法.

三、企业服务总线(ESB)的应用特征

大规模分布式的企业应用需要相对简单而实用的中间件技术来简化和统一越来越复杂、繁琐的企业级信息系统平台。面向服务体系架构(SOA)是能够将应用程序的不同功能单元通过服务之间定义良好的接口和契约联系起来。SOA使用户可以不受限制地重复使用软件、把各种资源互连起来,只要IT人员选用标准接口包装旧的应用程序、把新的应用程序构建成服务,那么其他应用系统就可以很方便的使用这些功能服务。

支撑SOA的关键是其消息传递架构-企业服务总线(ESB)。ESB是传统中间件技术与XML、Web服务等技术相互结合的产物,用于实现企业应用不同消息和信息的准确、高效和安全传递。ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务协调运作,实现不同服务之间的通信与整合。ESB在不同领域具有非常广泛的用途:

电信领域:ESB能够在全方位支持电信行业OSS的应用整合概念。是理想的电信级应用软件承载平台。

电力领域:ESB能够在全方位支持电力行业EMS的数据整合概念,是理想的SCADA系统数据交换平台。

金融领域:ESB能够在全方位支持银企间业务处理平台的流程整合概念,是理想的B2B交易支撑平台。

电子政务:ESB能够在全方位支持电子政务应用软件业务基础平台、信息共享交换平台、决策分析支撑平台和政务门户的平台化实现。

四、几种ESB的结构和功能

ESB提供了一种开放的、基于标准的消息机制,通过简单的标准适配器和接口,来完成粗粒度应用(服务)和其他组件之间的互操作,能够满足大型异构企业环境的集成需求。它可以在不改变现有基础结构的情况下让几代技术实现互操作。

通过使用ESB,可以在几乎不更改代码的情况下,以一种无缝的非侵入方式使企业已有的系统具有全新的服务接口,并能够在部署环境中支持任何标准。更重要的是,充当“缓冲器”的ESB(负责在诸多服务之间转换业务逻辑和数据格式)与服务逻辑相分离,从而使得不同的应用程序可以同时使用同一服务,用不着在应用程序或者数据发生变化时,改动服务代码。

1. IBM WebSphere ESB

IBM 提供了三种 ESB 产品:IBM WebSphere ESB、IBM WebSphere Message Broker、IBM WebSphere DataPower Integration Appliance XI50。根据您的需求选择 ESB 来增强您的 SOA。WebSphere ESB 是一种基于平台的 ESB,作为集成的 SOA 平台,针对 WebSphere 应用服务器进行了优化。WebSphere Message Broker 是跨平台的 ESB,是为异构 IT 环境中的统一连接和转换而构建的。WebSphere DataPower Integration Appliance XI50 是一种基于设备的 ESB,是为简化的部署和更强的安全性而构建的。客户面临着从简单到复杂的各式各样的 ESB 需求。WebSphere ESB的结构如图一所示。


图一 WebSphere ESB
2. Microsoft ESB

微软通过其应用平台提供了全面的ESB服务,包括:Windows Server® 2003,.NET Framework, BizTalk® Server 2006 R2. 应用平台提供了一个基础架构,基于此可以灵活和安全地重复使用架构和商业服务,并具有协调原有的服务整合到新的端到端的业务流程中的能力。如图二所示。


图二 Microsoft ESB
微软通过一些列的产品Windows Server 2003, the .NET Framework 3.0, and BizTalk Server 2006作为对企业实现ESB的支撑,Microsoft ESB Guidance是基于BizTalk Server 2006一组应用,它提供以下公用的ESB组件:

l       Message routing (消息路由)

l       Message validation (消息验证)

l       Message transformation (消息转换)

l       Centralized exception management(集中的异常管理)

l       Extensible adapter framework(可扩展的适配器框架)

l       Service orchestration(服务的编制支持)

l       Business rules engine(业务规则引擎)

l       Business activity monitoring(业务活动监视)

微软 ESB 指南提供了架构指导,模式和实践,以及一套BizTalk Server 和 .NET Framework 组件来简化基于微软平台的大型或小规模的ESB解决方案的开发。它还可以帮助开发人员扩展现有的信息和集成解决方案,包括的一些服务和组件。

3. JBOSS SOA Platform

JBoss Enterprise SOA Platform提供了一个基于标准的平台,用以集成应用、SOA服务、业务事件和自动化业务流程。这一SOA平台集成了特定版本的JBoss ESB、jBPM、Drools、和已得到验证的JBoss企业应用平台,把它们组织在一起形成一个单一的企业级发布。如图三所示。



图三 JBOSS SOA Platform
JBoss Enterprise SOA Platform打包了不少流行组件如:
l     JBoss ESB
l     JBoss jBPM jPDL
l     JBoss Rules (Drools)
l     JBoss Application Server
l     Hibernate
l     Hibernate Entity Manager
l     Hibernate Annotations
l     JBoss Seam
l     JBoss Web (嵌入式Tomcat 6.0)
l     JBoss Cache
l     JGroups
l     JBoss Messaging
l     JBoss Transactions
l     JBoss Web Services (JBossWS)
l     JBossXB
l     JBoss AOP
l     JBoss Remoting
l     JBoss Serialization
l     JacORB
4. ServiceMix对ESB的实现

ServiceMix是一个建立在JBI (JSR 208)语法规则和APIs上的开源ESB(Enterprise Service Bus:企业服务总线)项目。

ServiceMix是基于JBI的ESB。它是开源的基于JBI语义和API的ESB和SOA工具包,以Apache许可证方式发布。 它是轻量的ESB实现,易于作为嵌入式ESB使用;集成了对Spring技术的支持;可以在客户端或服务器端运行;可以作为独立的ESB提供者,也可以作为另外ESB的服务组件; 可以在JavaSE或JavaEE服务器中使用;ServiceMix同Apache Geronimo以及JBoss服务器完全集成,并且在Apache Geronimo服务器中可以直接部署JBI组件和服务。

Java Business Integration (JBI,Java业务集成)技术规范定义了SOA的服务导向集成的内核和组成架构。它对公共讯息路径架构、服务引擎与捆绑的插件程序接口,以及复合型服务描述机制等都进行了标准化,这样就将多种服务结合成为一个单一的可执行的和可审核的工作单元。 参见图四。



图4 JBI和ServiceMix关系图
JBI并不是一个为开发者设计的一个接口,更准确的说它是在JBI容器里为集成商提供相互集成的一个体系和一系列的接口。所以人们能集合他们所需要的所有部分,做出一个总体解决。例如在理论你能从BPEL引擎上,EJB容器上或者是数据传输产品上集合一个基础设施,并且能够集成的很合适。

ServiceMix 中包含完整的JBI容器,支持JBI规范的所有功能要求:

l     规范化消息服务和路由

l     JBI管理Beans (MBeans)

l     组件管理和安装的Ant任务

l     对JBI部署单元的完全支持,支持JBI组件的热部署

posted @ 2009-12-07 18:33 风 阅读(710) | 评论 (0) | 编辑 收藏

【王程斯】IBM Message Broker笔记系列(四)

【王程斯】IBM Message Broker笔记系列(四)

前面讲了那么多MB的原理和配置,这一篇blog开始正式讲讲我个人学MB的感受。“假如时间可以重来”,我会怎样利用手头的资源,以最快的速度入手。
体验MB
在安装完WMBT之后,会出现“欢迎”(这个也是eclipse环境安装后都会有的东西,你也可以在“帮助”->“欢迎”里面找到),里面有不少很浅显的例子,让你对MB是如何工作的有个感性认识。强烈建议把里面的“入门”部分看完。
学习开发
看完“入门”后,重点就应该放在“样例”中。在样例库里面,有数十个基础的样例,每个样例都针对某类节点,比如消息映射、JMS、数据库操作、Webservice调用,等等。那么多的例子,当然不可能一下子看完,而且对于一张白纸的新手,里面有些基础知识还不懂,我的建议是:结合之前提到的那本书《精通Websphere Message Broker》,看完一方面的内容,比如数据库操作,你就可以打开“样例库”,将里面的数据库样例导入至WMBT,然后看看其中的ESQL代码、相关节点的设置,等等。一开始会比较枯燥,而且让这些样例跑起来也不是件容易的事情,但坚持下去就会慢慢体会到其中的乐趣了。
掌握Debug利器
一般来说,WMBT会自动帮你配置好样例程序运行所需的环境(比如创建队列管理器、数据库,等等),然后将样例部署到MB的执行组中。这一切都是自动完成的,但有时候出于各种原因,试运行样例的时候不能得到预期的结果。首先排除掉打包和部署时的错误,因为样例程序的源代码通常是没有问题的,那么余下的问题就只能靠debug来解决了。另一方面,当你看了书之后,对InputRoot、Environment、ExceptionList这些东西的结构、细节肯定会很好奇,但是书中提到的很少很零散,最好的方法就是在debug模式下,让消息流挂起在某一点,然后你再慢慢浏览其中的各类变量,很多东西都不言自明了。用IBM工程师的话说,就是“没有debug就根本没法学会MB”。为什么?相关资料太少了,去google有时候还不如直接问MB自己,所以也是很考验你的自学能力的。
配置debug环境
这些内容在《精通》那本书中都有讲到,只是比较粗略,我在这里补充我个人的经验。
首先右键单击某个执行组,“属性”,在“JVM调试端口”中输入一个tcp端口号,不要和其他程序冲突就行,假设9090。再次右键执行组,“调试”->“启用调试9090”。然后,切记,重启执行组所在的broker
重启后,把bar文件部署到该执行组,然后进入“debug”视图,找到下图右下角的那个按钮:

2-1.JPG (14.06 KB)
2008-9-3 17:11

 

如果是该按钮是红色的,说明debug守护程序没有启动;如果是绿色的,鼠标移过去,会显示“debug守护程序正在监听XX端口”,需要注意的是,这里的端口可不是之前在执行组设置的端口,刚好相反,必须和之前的9090不同。单击旁边的下拉箭头,可以启动或者更改守护程序的端口,这里改为9099,不必重启。

接下来,就和一般的eclipse调试一样了,在绿色的小昆虫按钮设置debug参数。新建一个debug,注意这里的“java调试端口”则必须与执行组的一致,你也可以“选择执行组….”,系统会根据你选择的执行组,自动设置端口

2-2.JPG (12.57 KB)
2008-9-3 17:11

 

然后,在“源”选项卡中,添加你要调试的项目。确定之后,就可以运行debug了。
What next?
debug配置成功后,就开始慢慢研究那些样例吧,按照之前我说的思路,“书本+样例”,按照每个人自己的学习习惯和项目开发的需要,将你要学习的样例,一步步调试过去,看看每条ESQL语句的结果,很快的你就知道其中的运行机理了。
小结
由于MB不能像java那样,输出东西到控制台,只能输出到日志文件,而且还得写一堆语句,或者配置trace节点,很麻烦,所以传统的在程序中插入输出语句的方式在这里没太大意义。很多情况下,要依靠debug来观察消息流执行过程中消息的变化,来决定bug的所在。

posted @ 2009-11-04 14:13 风 阅读(392) | 评论 (0) | 编辑 收藏

【王程斯】IBM Message Broker笔记系列(三)

【王程斯】IBM Message Broker笔记系列(三)

安装配置
准备工作

MB的运行依赖于MQ,所以首先要安装MQ,MQ的具体安装过程略,并且以后假设你已经有关于MQ的基础知识,比如队列管理器、队列、通道,等等。

安装好MQ后,创建一个队列管理器(简称QM),名为TESTQM(MQ里面的对象是区分大小写的,为了避免不必要的麻烦,这里统一用大写,以下划线分隔),这个队列管理器是MB运行的基础,当你用MB的脚本创建配置管理器、代理和执行组时,都要指定QM的名字

然后创建运行时数据库,名为TESTDB,MB自带了derby,你也可以选择DB2,注意此处的数据库是指MB自身运行所需的数据库,目前6.1版本只能用derby或者DB2。创建的方法,可以用MB的脚本命令:mqsicreatedb,也可以用对应数据库自身的脚本命令或图形界面来创建。

关于MB的数据库:
配置管理器只能用derby,而代理可以用多种数据库,只是不同数据库的创建命令各自不同(包括在不同平台上也有差异,具体参考红皮书);代理的数据库可以共用,配置管理器也可以和某个代理共用一个derby数据库;使用mqsicreatedb创建数据库时,如果你已经安装了DB2,则默认创建一个DB2数据库,否则derby

以上是为MB的运行创造运行时环境,接下来开始创建MB的实例

首先当然是要安装MB了,过程挺简单的,略去不表。安装完成后,会在“开始菜单”中有个“命令控制台”,如下图:

1-1.JPG (10.27 KB)
2008-9-3 17:09

 

单击它,进入MB的一个命令控制台环境,其实和普通的windows命令控制台没什么区别,主要在于它帮你设好了相关的环境变量,你就可以在里面直接输入MB的命令脚本了

前文提到过,MB的配置管理器是用来统一管理MB的各个运行时组件的,因此首先要创建一个配置管理器
mqsicreateconfigmgr –i user –a password –q TESTQM
指定用户名、密码和队列管理器,用户名密码是你登陆本地机器时输入的,必须要有足够的权限(具体权限就不清楚了,我直接用管理员帐号,深入讨论请参考MB的红皮书)
你会发现这里没有指定数据库的名称,因为配置管理器在创建时会自动新建一个derby数据库,而且只能用derby数据库,用户无法改动
配置管理器的名称也没有指定,在windows下是会创建默认名称的:ConfigMgr

然后是创建代理,名为TESTBROKER
mqsicreatebroker TESTBROKER –i user –a password –q TESTQM –n TESTDB
大部分都和创建配置管理器一样,只是多了一个选项,用于指定数据库,再次提醒,必须是derby或DB2,二选一。

最后,使用“mqsistart组件名” 来启动配置管理器和代理
配置MB toolkit
WMBT本身的安装没什么特殊要求,这里就不啰嗦了

接下来的关键是在WMBT里面连接到刚才创建的配置管理器,其作用就好像你在Eclipse中要配置好应用服务器的实例,才能把你的J2EE项目直接以图形界面的方式部署,而不必自己敲命令

如图,文件->新建->域连接

1-2.JPG (61.8 KB)
2008-9-3 17:09

 

在弹出的窗口中,填入相关参数
这里只需填入队列管理器的名称、域名、端口,注意是队列管理器而不是配置管理器(其实你在创建配置管理器时也没有指定端口,因为它用的就是所在的队列管理器的端口)
此外对于SVRCONN通道名,SYSTEM.BKR.CONFIG是在你创建配置管理器时自动生成的,可以在“MQ 资源管理器”中,通过“显示系统对象”来查看,你也可以自己建一个服务器连接通道,然后在这里输入该通道的名字

1-4.JPG (55.76 KB)
2008-9-3 17:09

 



一切正常的话,就能看到左下角的“域”窗口中,多了一个新的域连接,里面以树形结构显示了你刚才创建的代理(前提是你的代理基于derby数据库,如果基于DB2,则需要在域连接那里显式增加“代理引用”),现在你可以右键单击TESTBROKER,然后创建执行组。等你开发好MB项目后,打个包,拖到执行组里面,就可以部署了

posted @ 2009-11-04 14:11 风 阅读(352) | 评论 (0) | 编辑 收藏

【王程斯】IBM MessageBroker笔记系列(一)

【王程斯】IBM MessageBroker笔记系列(一)

前言
       SOA已经在中国喊了几年,连象牙塔的大学生都知道了,但实施的案例并不多,而作为SOA基础设施的企业服务总线ESB,在国内的应用更是稀少,主要都是银行和电信等大牌企业在使用。我算非常好彩,打工所在的公司恰好要为客户开发一个基于MB和WAS的平台,让我有很多机会接触到MB的应用。现在国内MB的资料非常少,主要是IBM的红皮书,可惜全部都是英文的,看起来颇费力,效率也不高;出版物我所知的只有一本,是陈宇翔先生所著的《精通Websphere Message Broker》【中国水利水电出版社】,也是目前手边唯一的一本参考书。因此希望将这段时间的一些使用心得记下来,作为一个从未接触过SOA和MB(甚至没用过websphere产品)的菜鸟,面对这个上百万人民币的庞然大物,应该怎样下手

书评

先来说说这段时间翻阅的一些MB的书籍,包括纸质和电子版,首先是上文说到的《精通Websphere Message Broker》这本书。本来这种书给人的第一反应就是:一本红皮书的翻译,无非就是从IBM的各个红皮书里面摘抄文字,翻译好之后综合一下的“大杂烩”。老实说这本书里面的确有很多翻译的内容,比如MB toolkit中自带的一些教程,以及MB Information center里面的部分实例,书的后半部分都是附录,包括函数库、命令库,等等。但是不可否认的是,IBM的红皮书、InfoCenter本身就是相当好的教程库,而这本书用到其中的内容也翻译的流畅,所以也是方便了国内读者。而且,作者本身也的确有一些MB的使用经验,书中也有他自己的内容。所以,这本书作为入门的话,实在是比较辛苦,因为没有考虑太多初学者的难处,内容的编排也不太合理,但是作为一本参考书却是不错的选择。在如今没什么资料的情况下,最好咬牙坚持看下去。

再说说IBM提供的电子资源,包括红皮书和网上资料,以及InfoCenter。只要你买了MB的产品,IBM自然会提供一堆红皮书给你,当然你也可以慢慢从网上下载,这些红皮书很多写的不错,但是要从头看太痛苦,作参考比较好。此外如果你购买MB的培训,那么培训机构也会给你一些pdf材料(其实都是IBM出品的),这些材料相对易懂,适合入门。再有就是developerWorks,IBM的官方技术网站,里面提供最新最全的资料,有空多去看看,也可以订阅它的邮件。最后是InfoCenter,其实说白了是网页版的手册,可以在线看也可以下载,相对其他来说,难度介于中等,而且不像网站的资源那么零散,所以也是很好的提高阶段的学习资料。

ESB产品

如果你还不清楚ESB的概念,和IBM的相关产品,可以去IBM网上查查资料,我之前也写了一篇简介http://blog.csdn.net/wangchengsi/archive/2008/02/25/2120316.aspx

作为一个菜鸟我没法全面评论当前的ESB产品,只能记录一下自己的所见所闻(就是跟IBM和BEA公司打交道的时候听到的一些内容)。撇开两者的应用服务器不谈(这方面的口水战已经够多了,国内用BEA的相对多,容易上手适合快速开发,性价比很高),SOA和ESB方面,IBM无疑是走在前面的,这个可以从两者的产品线看出来。BEA的ESB产品只有一款AquaLogicBus,IBM却已经开始划分各类市场、推出不同档次的产品了(但这个也是BEA宣传的好处之一,买一个就能到处用,见仁见智了);其二,BEA自己的销售都对AquaLogic不甚了解,而且在国内尚无成熟应用,这点是很多企业最关注的,没有成熟应用意味着没有好的技术支持,出了问题不知道找谁解决,甚至从没有人遇过这种问题;而IBM这两年在SOA的推广方面做得比较好,广告也做得多,在国内已经有一些成功案例,技术支持也更加完善,我们在广州就能直接联系到工程师,而不必等北京、上海,甚至国外的支持。
       MB在对异构环境的支持方面,做得也比AquaLogicBus好,可以支持几十种通信协议和平台,而且天生和IBM自家的大型机等结合的比较好,AquaLogicBus支持的就相对比较少,主要是基于java平台的SOA流行协议,比如web service,给人感觉更像是websphere ESB的竞争对手。但是BEA的产品向来给人的感觉是除了在IBM的平台,其他平台上都比IBM的同类产品性价比要高,不知道AquaLogicBus是不是也一样表现优秀,这个就需要专业的测试了。

另外很重要的一点,就是BEA的消息中间件做得不如IBM的MQ强大,而MB又是依托于MQ才能有如此强大的功能,这个是BEA的销售也不得不承认的。尽管Web service是当前SOA的主流,但是性能方面却是不敢恭维,在企业内部实施SOA,如果服务组件都用web service连接,虽然更加通用、更加廉价易用,但是往往会有性能瓶颈,关键地方还得靠消息中间件。

最后呢,就是BEA工作人员对于自家的产品,底气明显不足,一方面是不熟悉,另一方面也是国内用的少,也侧面反映了对于这类重量级产品、而且关乎整个系统性能的底层部件,人们还是倾向于选择IBM,将来SOA应用普及了,AquaLogicBus肯定也会遍地开花,就像现在的weblogic一样。只是目前来看,还是选择MB更让人放心。

还有一个不得不提到的有力竞争者是来自开源社区的JBOSS ESB,这个产品我没了解过,但是现在Reahat收购了JBOSS,在JBOSS AS和ESB上也下了相当大力气,誓要在SOA市场与IBM和BEA分一杯羹。很看好JBOSS的潜力,只是开源产品在中国连个服务中心都没有,暂时只能供高手们自己研究着玩了。

posted @ 2009-11-04 14:10 风 阅读(283) | 评论 (0) | 编辑 收藏

【王程斯】IBM Message Broker笔记系列(二)

【王程斯】IBM Message Broker笔记系列(二)

IBM Message Broker笔记系列(二)
赶在这周结束前,再写一篇
MB概述
MB的全称是message broker,即“消息代理”。“消息”一词前几年比较火,消息中间件也卖的很火,当时似乎J2EE的产品都要跟“消息”、“中间件”扯上点关系,以彰显潮流。我觉得初学者只需记住“消息”的异步性即可,也就是“消息”和传统的网络连接、远程方法调用等的最大区别,就是你一旦发出消息以后,不用再管它的死活,中间件会处理一切事务,出了问题也会通知你,这样可以更好的分离业务逻辑。把消息当成邮件的话,那么传统网络连接就是由你去送信,而中间件则好比邮局,它来提供送信服务,并且可以跨国境、跨语言,完全不用你操心(相当于中间件可以连接异构平台),使用者只需等在家门口收信。
在说“代理”之前,先讲一下MQ的基本概念。MQ即message queue,消息队列,也就是IBM的主打消息中间件产品,IBM几乎所有SOA相关的产品,都是构建于MQ之上的,没有MQ强大的消息传输能力,那么IBM很多产品都做不起来。在这里不赘述MQ的功能,初学者只需把MQ当成一个非常可靠的传输通道即可,你只要往里面放东西,MQ就会把消息传到目的地。
那有了强大的MQ还要“代理”干什么呢?如果你用过MQ,或者类似的产品如apache的开源JMS产品“ActiveMQ”,就会发现,尽管用MQ不必考虑网络连接、平台异构,但是你在配置的时候、以及使用MQ编程的时候,都要指定目的地,比如设置IP地址。这样的程序依旧存在很大耦合性,万一某个组件的IP变了,所有跟他相关的组件都得改动,轻则修改配置文件、重则重写代码。这时“代理”的作用就开始凸显了。
所有组件的MQ队列都可以直接连接到MB上,MB相当于一个公共服务中心。MB接收所有消息,然后自动分析其中的内容,找到相应的目的地,进行路由转发,好比你在写信时,只需写明收信人的姓名、身份证,哪怕收信人搬到天涯海角,只要他在MB邮局中登记了,那MB就可以把信交给他,这样进一步地分离了业务和底层通信,我只需要知道业务概念上的“他”,就可以把消息交给他。此外,MB还可以进行消息转换,这就像是自动翻译信件,我现在可以用中文写封信给本拉登,我不需要知道他具体藏在哪里,信件就会自动翻译成阿富汗的文字,送到本拉登手里。
所以,代理的两个核心功能就是:“消息路由”和“消息格式转换”。MB本质上也是一个服务总线,所有的服务组件接入到MB中,服务将消息塞给MB,MB来决定怎么转发,这样让服务愈加成为一个独立的实体,和其他服务的耦合性进一步降低,从而达到SOA的境界。

MB初览
说了那么多大道理,终于开始讲到MB的具体内容了。下面的图片摘自IBM的红皮书,是MB的总体架构,我粗略的描述一下。
A.JPG (68.57 KB)
2008-9-3 17:21


可以看到,MB里面有两大块内容,一个是toolkit,也就是开发环境,后面我们会讲到;还有一个是broker domain,即代理域。代理域里面有两个核心部件,一个是配置管理器configuration manager,一个是代理broker。
配置管理器其实很像MQ的队列管理器,或者是WAS的deployment manager,都是起到一个管理作用,在MB里当然是管理众多的broker了。我们平时对broker的管理、维护操作,其实都是通过配置管理器完成的。
代理broker是真正体现MB设计思想的地方,上面的图片中有像流程图一样的东西,即message flow,是消息的流程图(从什么地方流进来,再从什么地方流出去);还有message set,即消息集,说白了是描述消息长什么样子,它的结构、内容是怎样的。其实,message flow对应了上文所说的“消息路由”,而message set则对应“消息格式转换”,你肯定要清楚两种消息的格式,才能定义互相转换的规则。
b.JPG (9.1 KB)
2008-9-3 17:21


MB的外围是各种类型的应用程序,他们接入MB的方式可以多种多样,可以是Webservice,也可以是数据库、文件、HTTP连接,等等,不一定局限于MQ
圆柱体代表的则是数据库了,这是尽IT人皆知的。因为MB的很多信息,包括配置信息、以及broker的运行时信息都要通过数据库保存。broker本身也可以操作数据库,你可以在流程的某个节点上增删查改某个数据库

下图是WMBT(websphere mb toolkit)的界面
c.JPG (93.08 KB)
2008-9-3 17:21


可以看到,WMBT是基于eclipse的,所以大部分java开发者应该能很快上手。开发MB程序和开发J2EE程序差不多,也是先新建一个项目,然后编辑,最后部署。
1号区域是一个消息流,可以看到非常直观:从MQ读入——计算(转换成web service格式)——发送http请求到web service的url——计算(转换回MQ消息格式)——放入MQ
2号区域是节点选择面板,MB自带了几十种节点给我们选择,同时我们也可以自己创建节点
3号区域是属性面板,当你选择某个节点时,可以在其中编辑节点的属性
4号区域是域连接面板,开发好的消息流和消息格式,必须首先在MBT中连接到对应的配置管理器,再将打包好的流程部署到对应的broker中,这个过程也可以由命令行完成
5号区域则类似eclipse的项目集合,里面是所有的MB项目
总结
还是打个比方。首先,我们把MB看做一个功能超级强大的路由器,它支持多种接入方式,也就是MB路由器上的端口有很多种,MQ是比较常用的一种方式,所以MQ就像常用的RJ45接口的5类双绞线。但同时MB还支持JMS、SCADA等各类接入标准。在MB内部,我们管理员定义好路由规则(编写消息流)。其次,从MQ过来的信号,可以转换成其他网络协议的信号(消息格式转换),这类似于网桥功能,可以跨越不同网络。同时,MB的性能非常好,可以进行大数据量交换,这一点又很像是交换机。最后,MB可以理解业务逻辑,它的路由不仅像路由器那样针对消息头进行路由,还可以根据消息的业务内容进行路由,酷似应用网关。

posted @ 2009-11-04 14:10 风 阅读(358) | 评论 (0) | 编辑 收藏

仅列出标题
共20页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last 
 
Powered by:
BlogJava
Copyright © 风