??xml version="1.0" encoding="utf-8" standalone="yes"?>99久久99久久精品国产片,久久精品国产精品国产精品污,久久久久久午夜成人影院http://www.shnenglu.com/prayer/category/8126.html在一般中L卓越zh-cnMon, 14 Jan 2019 17:07:35 GMTMon, 14 Jan 2019 17:07:35 GMT60tpcallhttp://www.shnenglu.com/prayer/archive/2019/01/14/216197.htmlPrayerPrayerMon, 14 Jan 2019 05:55:00 GMThttp://www.shnenglu.com/prayer/archive/2019/01/14/216197.htmlhttp://www.shnenglu.com/prayer/comments/216197.htmlhttp://www.shnenglu.com/prayer/archive/2019/01/14/216197.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/216197.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/216197.htmlint tpcall(char *svc, char *idata, long ilen, char **odata, long *olen, long flags)
描述Q客L(fng)同步调用服务?/a>的名为svc的SERVICEQ?/div>
参数Q?/div>
*svcQSERVICE的名U?/div>
char *idataQ?输入~冲区的地址Q客L(fng)传给服务端的参数攑֜该缓冲区?/div>
long ilenQ?输入~冲区的长度——只有~冲区类型ؓCARRAY时才指定长度Q其他情况传0
char **odata 输出~冲区的地址Q服务端传给客户端的l果攑֜该缓冲区?/div>
long *olenQ输出缓冲区的长?/div>
long flagsQ?调用标志Q由以下几个Q?/div>
TPNOTRAN
如果调用svc的客L(fng)当前在TRANSACTION方式下,那么svc不参与当前的TRANSACTION?/div>
TPNOCHANGE
如果服务?/a>q回的缓冲区cd与客L(fng)定义的缓冲区(odata)cd不一_默认情况下,odata会{换成与服务端q回的缓冲区cd一致的cdQ如果设|了该FLAGQ那么当出现q种情况Ӟ不进行缓冲区cd转换Qƈ且会报错?/div>
TPNOBLOCK
默认情况? 如果客户端有d条g存在Q如CLIENT的TCP/IP中的~冲区满,盘I(y)/O忙等Q,那么客户端会d在那里,直到d消除或超时出错。如果设|了 TPNOBLOCK,当客L(fng)有阻塞条件存在时,TPCALL()会立刻返回ƈ报错. 注意TPNOBLOCK只对发送请求时起作?如果在接收服务端q回的结果时有阻塞条件存?客户端会在那里等?直到d消除或超时出?/div>
TPNOTIME
如果客户端有d条g存在Q客L(fng)会一直阻塞在那里Q即使到了超时时间也不返回,但如果该客户端是在TRANSACTION模式下,当到?/div>
事务的超时时_q是会报时错误q返回?/div>
TPSIGRSTRT
如果在进行系l调用时Q被信号中断Q该pȝ调用会重新进行?/div>
调用成功q回0,p|q回-1, 错误号保存在全局变量tperrno中?/div>

Prayer 2019-01-14 13:55 发表评论
]]>q行tuxedo自带例子simpappQ测试tuxedo安装http://www.shnenglu.com/prayer/archive/2019/01/11/216189.htmlPrayerPrayerFri, 11 Jan 2019 08:53:00 GMThttp://www.shnenglu.com/prayer/archive/2019/01/11/216189.htmlhttp://www.shnenglu.com/prayer/comments/216189.htmlhttp://www.shnenglu.com/prayer/archive/2019/01/11/216189.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/216189.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/216189.htmlhttps://blog.csdn.net/konglongaa/article/details/76855034

?.../simpapp目录下共?个文Ӟ分别是README simpserv.c(客户端源E序) simpcl.c(服务器端源程? ubbsimple(配置文g)

1. 讄环境变量

1.1 tuxedopȝ在编译服务器或客L(fng)shirt都需要一些环境变量。可一个setenv文g内容为:
. /home/tuxedo/bea/tuxedo9.1/tux.env
APPDIR=/home/tuxedo/bea/tuxedo9.1/samples/atmi/simpapp;export APPDIR
TUXCONFIG=$APPDIR/tuxconfig;export TUXCONFIG
WSNADDR=//192.1.1.121:9999;export WSNADDR
Ҏ(gu)实际情况自己讑֮?br style="box-sizing: border-box; outline: 0px; word-wrap: break-word; line-height: normal !important;" />W一行是tux.env所在目?br style="box-sizing: border-box; outline: 0px; word-wrap: break-word; line-height: normal !important;" />W二行是simapp所在目?br style="box-sizing: border-box; outline: 0px; word-wrap: break-word; line-height: normal !important;" />W三行是simapp的二q制配置文g

1.2 执行环境变量
cd到setenv所在目录,假设?/home/tuxedo/bea/tuxedo9.1/samples/atmi/simpapp
$. ./setenv

2. 配置文g

除了客户端和服务L(fng)序以外,tuxedoq需要一个配|文件来描述一个tuxedo应用pȝ所包含的系l资源。修改simpapp下的ubbsimple的内容,改好后ؓQ(注意U色部分Q?/p>

#       (c) 2003 BEA Systems, Inc. All Rights Reserved.
#ident "@(#) samples/atmi/simpapp/ubbsimple    $Revision: 1.5 $"

#Skeleton UBBCONFIG file for the TUXEDO Simple Application.
#Replace the <bracketed> items with the appropriate values.

*RESOURCES
IPCKEY         123456

#Example:
#IPCKEY         123456

DOMAINID        simpapp
MASTER          simple
MAXACCESSERS    10
MAXSERVERS      5
MAXSERVICES     10
MODEL           SHM
LDBAL           N

*MACHINES
DEFAULT:
               APPDIR="/home/tuxedo/bea/tuxedo9.1/samples/atmi/simpapp"
                TUXCONFIG="/home/tuxedo/bea/tuxedo9.1/samples/atmi/simpapp/tuxconfig"
                TUXDIR="/home/tuxedo/bea/tuxedo9.1"
#Example:
#               APPDIR="/home/me/simpapp"
#               TUXCONFIG="/home/me/simpapp/tuxconfig"
#               TUXDIR="/usr/tuxedo"

happy   LMID=simple

#Example:
#beatux         LMID=simple

*GROUPS
GROUP1
        LMID=simple     GRPNO=1 PENINFO=NONE

*SERVERS
DEFAULT:
                CLOPT="-A"

simpserv        SRVGRP=GROUP1 SRVID=1

*SERVICES
TOUPPER


如果没改直接q行W?步,常有以下错误提示Q?br style="box-sizing: border-box; outline: 0px; word-wrap: break-word; line-height: normal !important;" />2.1 IPCKEY          <
                syntax error
CMDTUX_CAT:866: ERROR: tmloadcf: Severe error found. Stop syntax checking.
解决Ҏ(gu)Q对<>按照exampleq行修改

2.2 CMDTUX_CAT:868: ERROR: tmloadcf cannot run on a non-master node
解决Ҏ(gu)Qubbsimple 文g中将<Machine-name>改ؓ你的机器名,在windows下?br style="box-sizing: border-box; outline: 0px; word-wrap: break-word; line-height: normal !important;" />echo %computername% 昄机器名,在unix下?uname -n 。注意在windows ?通过hostname 或?%COMPUTERNAME% 查出来的机器名不论是大小?在ubb中设|成大写.其实我用写也执行成功了?/p>

3. ~译与执?/p>

3.1 生成二进刉|文?长出现问题看2.1 2.2
      $tmloadcf -y ubbsimple
3.2 ~译客户端程?br style="box-sizing: border-box; outline: 0px; word-wrap: break-word; line-height: normal !important;" />      $buildclient -o simpcl -f simpcl.c
3.3 ~译服务器程?br style="box-sizing: border-box; outline: 0px; word-wrap: break-word; line-height: normal !important;" />      $buildserver -o simpserv -f simpserv.c -s TOUPPER
      此处生成的可执行文g名要与ubbsimple中的相匹?br style="box-sizing: border-box; outline: 0px; word-wrap: break-word; line-height: normal !important;" />      否则Q出w?Can't send request to service TOUPPER
3.4 启动tuxedo应用pȝ
     $tmboot -y
3.5 q行客户?br style="box-sizing: border-box; outline: 0px; word-wrap: break-word; line-height: normal !important;" />     $./simpcl hello
      昄Returned string is: HELLO表示成功
3.6 关闭tuxedo应用
     $tmshutdown -y



Prayer 2019-01-11 16:53 发表评论
]]>tuxedo客户端测试程?/title><link>http://www.shnenglu.com/prayer/archive/2019/01/11/216188.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Fri, 11 Jan 2019 07:53:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2019/01/11/216188.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/216188.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2019/01/11/216188.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/216188.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/216188.html</trackback:ping><description><![CDATA[     摘要: https://blog.csdn.net/zistxym/article/details/51533774client.c=====================================================#include <stdio.h>#include "atmi.h" /*包含TUXEDOpȝ的头文g"atmi.h", 以便引用TUXEDO的函数和变量?..  <a href='http://www.shnenglu.com/prayer/archive/2019/01/11/216188.html'>阅读全文</a><img src ="http://www.shnenglu.com/prayer/aggbug/216188.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2019-01-11 15:53 <a href="http://www.shnenglu.com/prayer/archive/2019/01/11/216188.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tmshutdown: internal error: CMDTUX_CAT:764: ERROR: can't attach to BBhttp://www.shnenglu.com/prayer/archive/2010/11/01/132012.htmlPrayerPrayerMon, 01 Nov 2010 09:27:00 GMThttp://www.shnenglu.com/prayer/archive/2010/11/01/132012.htmlhttp://www.shnenglu.com/prayer/comments/132012.htmlhttp://www.shnenglu.com/prayer/archive/2010/11/01/132012.html#Feedback5http://www.shnenglu.com/prayer/comments/commentRss/132012.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/132012.html

$ tmshutdown -y
Shutting down all admin and server processes in /home/billklmy/cfg/tuxconfig

tmshutdown: internal error: CMDTUX_CAT:764: ERROR: can't attach to BB
 
解决办法Q执行ipcs -qms |  grep billklmy | grep -v 'grep' |  awk '{ print "ipcrm -"$1" "$2}' |sh
然后再tmboot -y卛_了?br> 
厂方解释原因是执行了大的报表查询E序D的,很少出现?/p>



Prayer 2010-11-01 17:27 发表评论
]]>五大开源ESB目http://www.shnenglu.com/prayer/archive/2010/03/16/109844.htmlPrayerPrayerTue, 16 Mar 2010 11:02:00 GMThttp://www.shnenglu.com/prayer/archive/2010/03/16/109844.htmlhttp://www.shnenglu.com/prayer/comments/109844.htmlhttp://www.shnenglu.com/prayer/archive/2010/03/16/109844.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/109844.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/109844.html?1CTO快译】ESBQ英文全UEnterprise Service BussesQ直译ؓ企业U服务列车)Q是一U可以让你在Web服务上创行在不同q_上的商务程的Y件?/p>

 

下面列出五大开源ESB目Q排名不分先后:

 

JBoss ESBQJBossQ?/strong>

JBoss 

在GA版本中有着成熟的组Ӟ没有厂商l定之类的特征?/p>

Apache ServiceMixQApacheQ?/strong>

Apache 

Apache ServiceMix 4ZOSGiQ提供了一个与XML标准集成的选项?/p>

OpenESBQSun/OracleQ?/strong>

Sun 

OpenESB与Glassfish应用服务器以及NetBeans有着紧密的集成,因此学习(fn)曲线很简单?/p>

MuleESBQMuleSoftQ?/strong>

MuleSoft 

Mule是当下用最多的开源集成^台。MuleESBh低廉Q配|、扩展简单,而且灉|性强Q得它非常行?/p>

WSO2 ESBQWSO2Q?/strong>

WSO2 

相比其他使用了JBI规范的重量ESBQW(xu)SO2q个新来者带来了一个轻量的ESB。这是因为,W(xu)SO2 ESB以Web服务标准作ؓ集成的焦炏V?/p>

Prayer 2010-03-16 19:02 发表评论
]]>
ESB架构W记http://www.shnenglu.com/prayer/archive/2010/03/16/109843.htmlPrayerPrayerTue, 16 Mar 2010 10:55:00 GMThttp://www.shnenglu.com/prayer/archive/2010/03/16/109843.htmlhttp://www.shnenglu.com/prayer/comments/109843.htmlhttp://www.shnenglu.com/prayer/archive/2010/03/16/109843.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/109843.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/109843.htmlESB是什?/h2>

    ESB是一个服务的中介QŞ成服务用?>ESB服务Proxy->服务提供者的生物链,中介的作用在不同应用中各有不同:

  • 解耦中?/strong> Q客户对实际服务提供者的w䆾、物理位|、传输协议和接口定义都是不知道也不关心的Q交互集成代码提取到了业务逻辑之外Q由ESBq_q行中央的宣告式定义?br>              ESBq_实现协议转换 (WebServiceQHttpQJMS...)Q?strong>消息转换 (转换、充实、过?Q?strong>消息路由 (同步/异步、发?订阅、基于内容\由、分支与聚合...)?strong> 
  • 服务中介 QESBq_作ؓ中介提供服务交互中的基础服务?br>              ESBq_实现SLA (可靠性保证,负蝲均衡Q流量控Ӟ~存Q事务控Ӟ加密传输)Q?strong>服务理监控 (异常处理Q服务调用及消息数据记录Q系l及服务的状态监控,ESB配置理)Q?strong>l一安全理 (q个有点理想M)?/strong>
  • 服务~排 Q多个服务进行编排Ş成新的服务?br>              ESB支持一个直观的形式定义新组合服务的程(工作、BPEL ?代码U编??

       ~点是天然的额外中转性能消耗,中央ESB的性能瓉和高可用性问题?/p>

ESB实现

开源ESB实现

开源轻量ESB

商业ESB

  • BEA AquaLogic  Q作为ESB?忉|MuleUaQ同时用JMS作ؓmessage flow的底层,在Weblogic上实现HAQ群集和监控理界面。但路由~排再次C囑Ş~程+XML Context(XQuery)的老\Q相当鸡肋?
  • IBM(Message Broker, Websphere ESBQDataPower),


Prayer 2010-03-16 18:55 发表评论
]]>ESB产品要解决的问题http://www.shnenglu.com/prayer/archive/2010/03/16/109842.htmlPrayerPrayerTue, 16 Mar 2010 10:54:00 GMThttp://www.shnenglu.com/prayer/archive/2010/03/16/109842.htmlhttp://www.shnenglu.com/prayer/comments/109842.htmlhttp://www.shnenglu.com/prayer/archive/2010/03/16/109842.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/109842.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/109842.html
    ׃是给非专业h士看的,没有把ESB全部的功能都列上Q只把最常用的也是最Ҏ(gu)理解的功能,l写了写Q不一定完全正,但有助于理解?

    原文贴在下面Q供对ESB不是很熟(zhn)的朋友建立一个最初的概念?

附:ESB产品要解决的问题

一、金蝶ESB产品?

    金蝶ESB产品作ؓSOA的实玎ͼ主要目的是整合不同应用系l中的数据,而不这些应用系l运行在什么样的硬件^台和软gq_上,不管q些数据存储在什么样的数据库中,也不这些应用系l是׃么Y件厂商基于什么开发语a开发的?

    数据整合是金蝶ESB产品当前最主要或者说是应用最多的功能。此外还有业务流E整合等功能Q目前国内由于信息化发展的现Ӟ应用相对较少Q在来可能会有较多应用?

二、数据整合的要求

    随着我国信息化的发展Q无论是政府q是企业Q都已经了很多的信息pȝ。这些信息系l徏成后Q在每个信息pȝ内部都实C信息和数据的整合Q但是这些系l之间还都是怺孤立的,不能互相通信Q数据也不能怺整合?

    举例来说Q作Z同的政府部门Q工商局、地E局、国E局、质监局、劳动与C会保障局可能都徏立了自己的系l,一个企业的不同斚w的信息分别在工商局、地E局、国E局、质监局、劳动与C会保障局的信息系l里得到体现Q比如关于企业的注册登记信息在工商局的信息系l里Q企业纳E信息在地税局和国E局的信息系l里Q等{。每个系l都有同一个企业的一部分信息Q但是每个系l里的信息也只是q个企业信息的一部分?

    随着信息化的发展和社会发展,把分散在q些不同的信息系l(如工商局信息pȝ、地E局信息pȝ、国E局信息pȝ{)里的不同斚w的数据整合v来,形成一份完整的数据Q其重要性和紧迫性日益突出。比如已l有很多地方政府开始着手和已经着手打?#8220;企业基础数据信息交换q_”?#8220;企业基础信息数据?#8221;Q目的就是要把分散在工商局、地E局、国E局、质监局{不同信息系l里的关于企业不同方面的数据整合C个统一?#8220;企业基础信息数据?#8221;里,q基于这个统一的数据库一?#8220;企业基础数据信息交换q_”?

    作ؓ企业Q在信息化的q程中,不同部门也可能徏设了自己的信息系l,如OApȝ、胦务信息系l、h力资源管理系l、客户关pȝ理系l等Q企业员工的日常考勤、薪水发放、W效考核、客户开拓等信息分别分散在这些不同的pȝ中,也需要把分散在这些信息系l中的数据有机整合v来?

三、数据整合面临的问题

    要把q些分散在不同信息系l里的数据有机的整合hQ面临一pd的问题:

1、这些由不同单位的信息系l,很可能运行在截然不同的硬件^台和软gq_上。比如工商局的信息系l可能是q行在IBM的小型机上,操作pȝ是UNIXQ而地E局的信息系l可能是q行在普通的PC服务器上Q操作系l是windowsQ等{?

2、这些不同的信息pȝQ数据可能保存在不同的数据库pȝ甚至文gpȝ上。比如地E局的数据保存在oracle数据库中Q国E局的数据保存在sql server数据库中Q等{?

3、这些不同的信息pȝQ是׃同的软g厂商、基于不同的开发语a开发的。比如有的信息系l可能是用J2EE架构的,有的信息pȝ可能?NET架构的,q有的信息系l可能是采用VB、Delphi{开发的Q等{?

4?#8230;…

针对q些问题Q金蝶ESB产品相应有自q应对Ҏ(gu)和解x案?

四、金蝶ESB产品解决Ҏ(gu)

    金蝶ESB产品作ؓ一ƾ成熟的产品Q通过部v、实施、定制的方式来解决面临的一pd问题Q不需要开发,大大降低数据整合的工作量和风险,同时具备高度的灵zL,可以随需应变?

1、金蝶ESB产品采用JAVA开放,具备良好的跨q_性,可以L部v在不同的g服务器和操作pȝ之上?

2、金蝶ESB产品针对L数据库和txt、excel{,提供了数据适配器,可以L跟各U数据库打交道?

3、金蝶ESB产品采用SOA架构Q能够方便跟各种开发语aq行数据通信?

4、金蝶ESB产品提供可视化的设计工具Q非常容易学?fn),大大减少部v实施工作量?

……

五、数据整合D?

    假设我们要把地税局的数据整合到某个l一的中心数据库里,只需要在可视化的设计工具里,l过单配|,形成如下图所C的一个流E,卛_L实现?



  • 大小: 110 KB
http://zydky.javaeye.com/blog/580185

Prayer 2010-03-16 18:54 发表评论
]]>
IBM ESB 产品之间的比较及应用场景: W?1 部分QIBM ESB 产品之间的比?/title><link>http://www.shnenglu.com/prayer/archive/2010/03/16/109841.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Tue, 16 Mar 2010 10:52:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2010/03/16/109841.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/109841.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2010/03/16/109841.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/109841.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/109841.html</trackback:ping><description><![CDATA[<table class=content id=table1 cellSpacing=0 cellPadding=0 width=333 border=0> <tbody> <tr> <td class=left-nav-highlight>本文内容包括Q?/td> </tr> <tr class=left-nav-child-highlight> <td> <ul> <li><a class=left-nav-child href="http://www.uml.org.cn/soa/200907201.asp#1. 企业服务ȝ ESB 的介l?|outline" cmImpressionSent="1">企业服务ȝ ESB 的介l?</a> <li><a class=left-nav-child href="http://www.uml.org.cn/soa/200907201.asp#2.IBM ?ESB 产品 |outline" cmImpressionSent="1">IBM ?ESB 产品 </a> <li><a class=left-nav-child cmImpressionSent="1">三款产品的比?</a> <li><a class=left-nav-child cmImpressionSent="1">ȝ </a> <li><a class=left-nav-child cmImpressionSent="1">参考资?</a></li> </ul> </td> </tr> </tbody> </table> <blockquote>本文首先介绍了企业应用E序的发展以?ESB 的定义;随后Q分析了 ESB ?SOA 解决Ҏ(gu)中所L(fng)作用Qƈ比较介绍了三?ESB 产品在支持实C?ESB 解决Ҏ(gu)中所L(fng)作用?/blockquote> <h3><a name="1. 企业服务ȝ ESB 的介l?|outline"><span id="erupzcc" class=atitle>企业服务ȝ ESB 的介l?</span></a></h3> <p><a name=N100A0><span id="xhvutew" class=smalltitle>企业应用的发展概q?</span></a></p> <p>在介l企业服务ȝ之前Q有必要׃些笔墨来介绍企业应用架构的发展和变迁。企业应用架构的发展经历了以下几个阶段Q?/p> <ol type=1> <li>独立应用pȝ <li>EAI 阶段 <li>SOA 阶段 </li> </ol> <p><strong>独立应用阶段 </strong></p> <p>20 世纪 60 ?70 q代Q企业应用处于独立应用系l阶D,当时的企业应用是一U用来替代重复性劳动的单设计,其目的是用计机代替孤立的,体力性质的工作环节,相兌的企业信息或数据理h。这些系l大部分是独立的pȝ——有独立的数据库、应用服务器、用L(fng)面。因此有时候这cd用也?#8220;竖井?#8221;的应用?/p> <p>但是Q随着业务和信息的不断扩展Q独立应用系l渐渐不能满企业对 IT 的需求,表现在大量的信息冗余Q因为在建立一个新的应用的时候需要重新徏立一套数据库Q功能的重新设计Q相似的功能存在于多个系l中Q例如,客户信息在一个公怸可能有多个拷贝分别存在于多个数据库中Q不同时期徏立的应用pȝ所使用的技术也会不同。对于获取客戯料这L(fng)功能Q必然存在于多个pȝ中,而且在不同的pȝ中其实现方式可能?Java/J2EE、Delphi、C/C++?/p> <p><strong>EAI 阶段 </strong></p> <p>20 世纪 80 ?90 q代Q一些公司或集成商意识到应用集成的h(hun)值和必要性。EAI 是一U将多个不同q_、用不同Ҏ(gu)建立的异构的应用集成的一U技术和Ҏ(gu)。它的目标包括以下几个方面:各个分离的系l间的相互通讯Q消除信息孤岛,实现信息的共享。从功能的角度来看,EAI 包括信息接收、{换、翻译、\由、传播和业务程理。从架构上看有两U方式:Hub/Spoke 方式?Bus 方式?/p> <p>?1 所C的 Hub/Spoke l构使用一个中心代理(HubQ和多个适配器(SpokeQ将 Hub 和应用连接v来。适配器负责将应用的数据格式{换成 Hub 可以理解的格式,Hub 数据再转换成目标系l可以理解的格式Qƈ执行消息的\由。Hub/Spoke 方式的弊端在于只有一个代理中心,当连接的应用U类增加或者消息量增大Ӟ代理中心的性能成为整个系l的瓉Q在可扩展性方面也存在着一定的问题?/p> <a name=N100CB><strong>?1 . Hub/Spoke l构?EAI 集成 </strong></a><br><img height=384 alt="" src="http://www.uml.org.cn/soa/images/imabnge003.jpg" width=495> <p>?2 所C的 Bus l构使用一个中心ȝQ应用程序通过 Adapter 消息发送给ȝQȝ负责消息的\由,接受方的应用E序也有自己?Adapter 来{换接受到的消息。Bus l构?Hub/Spoke l构的最大区别在于在 Bus l构中,Adapter 位于应用E序中,?Hub/Spoke l构中,Adapter ?Hub 来统一理。这样在 Bus l构中,加入一个新的应用变得很单,可扩展性得C很大的提高,但是应用E序方的负担加重了?/p> <a name=N100DC><strong>?2. Bus l构?EAI 集成 </strong></a><br><img height=331 alt="" src="http://www.uml.org.cn/soa/images/imabnge005.gif" width=503> <p><strong>SOA 阶段 </strong></p> <p>SOA 应用资源看成一个个独立的,自包含ƈ良好定义的服务,通过q些服务的组装,~排可以产生新的应用。每一个服务可以完成一个独立业务功能,q且不依赖于业务上下文或者其他服务的状态。服务的定义是标准的且被q泛支持的,比如 Web Service。在 SOA 的架构中Qh们都用标准的方式来封装自q服务Q得Q何一个客L(fng)E序都可以容易的和后台系l实施连接。?ESB ?SOA 架构中的一个核心基矻I在几乎所有的 SOA 架构中,都将 ESB 攑֜核心的位|。图 3 ?IBM SOA Reference architectureQ从中我们可以看?ESB 在一?SOA 架构中的CQ对该图的详l解释不在本文介l范围之内,有兴的读者可以参考一?IBM SOA 专区的相x章?/p> <a name=N100F1><strong>?3. IBM ?SOA 参考架?</strong></a><br><img height=331 alt="" src="http://www.uml.org.cn/soa/images/imabnge007.gif" width=524> <p>下面我们来介l一?ESB?/p> <p><a name=N10100><span id="mhkbabo" class=smalltitle>什么是 ESB?</span></a></p> <p>什么是 ESBQESB 严格来说不是某一个品,而是一U框Ӟ设计模式。不同的提供商对 ESB 的理解也各有不同?</p> <p><em>“ESBs are essentially integration systems, not SOA systems. SOA is about tearing down application silos, but integration systems reinforce those silos. [...] an ESB is especially good for bridging to legacy applications, and therefore it is a useful component in a services infrastructure”</em></p> <p>----Anne Thomas Manes, Research Director with Burton Group </p> <p><em>“An Enterprise Service Bus (ESB) is a distributed middleware system for integrating enterprise IT assets using a service-oriented approach.”</em></p> <p>----Ron Ten-Hove , Sun Microsystems and JBI Spec Lead</p> <p><em>“A Web-services-capable infrastructure that supports intelligently directed communication and mediated relationships among loosely coupled and decoupled business components.”</em></p> <p>--Gartner </p> <p>IBM ?ESB 是这hq的Q?/p> <p>“<em>An enterprise service bus (ESB) is a pattern of middleware that unifies and connects services, applications and resources within a business. Put another way, it is the framework within which the capabilities of a business' applications are made available for reuse by other applications throughout the organization and beyond. The ESB is not a new software product ?it's a new way of looking at how to integrate applications, coordinate resources and manipulate information </em>”</p> <p>?IBM 的立场来_ESB 不仅仅是一个概念,而是一U中间g模式Q它不是某个产品Q而是一U全新的集成应用Q协调资源和操纵信息的框架?/p> <p>下面来介l?ESB 或可以称?ESB 的中间g产品保护一些特征,有些是必ȝQ有些是可选的Q?/p> <ol type=1> <li><strong>q接?</strong> <p>ESB 必须提供一U支持服务交互的桥梁Q它必须支持多协?(protocol) 之间的连接。不仅要提供Ҏ(gu)息和面向事g的中间g的支持,q要提供和现?EAI 技术的q接。连接性是 ESB 不可~少的特征之一?</p> <li><strong>服务交互 </strong> <p>服务交互可以理解?ESB 的一个目的之一QESB 作ؓ SOA 架构的核心,必然要支持服务的交互Q要在服务的h者和提供者架起一个坚实的桥梁Q让服务的请求者和提供者只需要关心各自的业务逻辑Q而不需要在发布和消Ҏ(gu)务的环节花很大力气。服务交互也?ESB 的必备特征?</p> <li><strong>集成 </strong> <p>集成的概忉|对于pȝ而言的,ESB 不仅要能集成那些很容易封装服务的pȝQ也要集成不能方便地装服务的系l,例如 SAP, ERP, CRM, Siebel {?EAI pȝ、遗留系l。集成也?ESB 的核心特征之一?</p> <li><strong>消息处理 </strong> <p>在集成的q程中,必须要面对的是消息处理,在不同的应用pȝ中,消息的描q格式是不一L(fng)。在集成环境中,必须要提供一U统一的格式来处理pȝ间的交互Q从 ASBO(Application Specific Business Object ) ?GBO(Generic Business Object) 之间的互转是 ESB 的核心特征之一?</p> <li><strong>理 </strong> <p>对于一个具?ESB 特征的品,理也是一个重要的斚w。例如,当一个服务从一个地址切换到另一个地址Q在l构{不发生M改变的时候,ESB 产品应该提供一个方便的途径适应q种改变?</p> <li><strong>QoS</strong> <p>对于服务交互来说QQoS 也是一个重要的特征Q比如针对不同的服务h者提供不同质量的服务响应。有些服务的h需要在事务中完成,有些服务的交互需要保证其可靠性。一?ESB 产品应该提供l开发者定?QoS 的接口?</p> <li><strong>安全 </strong> <p>安全的必要性不a而喻Q系l和pȝ之间的交互必焉要认证,授权Q加密,{֐{安全性。一个优U?ESB 产品应该提供可靠的,可灵z配|的安全支持?</p> </li> </ol> <h3><a name="2.IBM ?ESB 产品 |outline"><span id="fwkjeph" class=atitle>IBM ?ESB 产品 </span></a></h3> <p>IBM 有三?ESB 产品QWebSphere ESB (WESB)QW(xu)ebSphere Message Broker(WMB)QDataPower。这三款 ESB 产品都提供了 ESB 所必备的特征,但是它们各有侧重QW(xu)ESB 主要构徏?WebSphere Application Server 之上Q侧重于Ҏ(gu)准协议和消息的支持,更适合?J2EEQW(xu)eb-Service Z要特征的集成环境QWMB 提供了一个高U的 ESBQ它构徏?WebSphere Message Queue 之上Q提供了癄以上协议的连接和数据格式的{换机制。Datapower 是一ƾ比较新?ESB 产品Q除了提供必备的 ESB 的特性之外,Datapower 更侧重于安全。众所周知Q在 XML 的环境中Q安全对于性能的媄响是巨大的,Datapower l企?ESB 提供了强大的安全保障。下面分别介l这三款 ESB 产品?/p> <p><a name=N10171><span id="arflonf" class=smalltitle>WebSphere ESB</span></a></p> <p>从图 4 中可以看?ESB 构徏?WAS ND 之上Q它使用?WAS ND ?WAS 对于安全Q用h册表Q事务,消息引擎的支持,在其之上增加了对服务集成、消息流处理、徏模以?ESB ~程模型的支持等{。从图中q可以看?WebSphere Process Server 是构Z WESB 之上Qƈ扩展了服务编排和程理斚w的支持?/p> <a name=N1017C><strong>?4. WESB ?WAS 产品U的位置 </strong></a><br><img height=315 alt="" src="http://www.uml.org.cn/soa/images/imabnge009.gif" width=524> <p>下面介绍?WESB 上实C?SOA ESB 解决Ҏ(gu)上的以下?ji)个斚w的特点,q九(ji)个方面的特点来源于上文中介绍?ESB 的特性,或者特性的l化Q?/p> <ol type=1> <li><a name=OLE_LINK1></a><strong>消息转换 </strong> <p>WESB 所处理的消息ؓ XML 格式的数据,对于?XML l构的数?WESB 不能处理。对?XML l构的数据,?WESB 的消息流中数据以 SMO(IBM ?SDO 的扩展,参见参考资料部分了?SDO 的规?) 形式存在QW(xu)ESB 可以?XML 消息?wi)的内容q行修改Q包括改变某个节点的内容Q增加新的节点以及删除某个节点等{?</p> <li><strong>支持的协?</strong> <p>WESB 支持W合 SOA 标准的协议,比如 SOAP/HTTP、SOAP/JMS、WSDL V1.1、UDDI V3.0QW(xu)ebSphere MQ {。也是?WESB 目前只支?SOAP 方式来描q服务,传输协议可以?HTTP、JMS 记忆原生?WebSphere MQ 的连接。对于多传输协议的基Q徏议?MB 来做 ESB 的解x案,参?MB 的介l部分?</p> <li><strong>消息路由 </strong> <p>消息的\由在 WESB 中有良好的支持,开发环?WID 中提供了一个节点专门来负责消息路由QW(xu)ID 也提供了良好的对路由规则定义的开发支持,开发h员可以很Ҏ(gu)的定制负责的路由规则。若要实现动态\q功能Q则需要和一个服务的存储单元中来动态的查找服务Q目?WSRR 是一ƾ优U的提供该功能的工P参见参考资料部分了?WSRRQ。WESB ?V6.1 开始提供了 Endpoint lookup 节点来支?WSRR 的集成,化了开发过E。如果要实现单的动态服务\q功能Q则可把服务的定义存攑֜数据库中Q在 WESB 中通过 DB lookup 来查找服务的 Endpoint, 然后注入到消息流中,W(xu)ESB V6.1 之前的版本就已经支持与数据库的集成?</p> <li><strong>?Web Service 的支?</strong> <p>WESB 天生q行?J2EE 的环境里面,?Web Service 有着天然的支持?</p> <li><strong>事g处理 </strong> <p>在消息流中,我们需要跟t消息各节点的状态,以满统计和出错处理的要求,?WESB 中,通过 CEI 机制来处理消息。(CEI 的介l请参见参考资料部分) </p> <li><strong>与遗留系l的集成 </strong> <p>WESB 通过 Adapter 与遗留系l进行集成,支持 IBM Websphere Adapter ?JCA AdapterQ通过 JCA 我们可以将遗留pȝ里面的服务和数据通过标准QSCA/SDOQ的形式整合到集成环境中?</p> <li><strong>安全斚w的支?</strong> <p>WESB 没有对安全做Ҏ(gu)的处理,使用 WAS 的安全支持来实现 ESB 的安全?</p> <li><strong>性能 </strong> <p>WESB 是一个纯 Java 的应用,q行效率上有些限Ӟ同时可以处理的消息流的数量为几十到几百之间?</p> <li><strong>开发和部v </strong> <p>开发工h WIDQ一?ESB 的消息流?WID 中被UCؓ Mediation ModuleQ它是一?J2EE 应用Q开发和部v工作无异于普通的企业U应用?</p> </li> </ol> <p><a name=N101D8><span id="uaorbit" class=smalltitle>Message Broker</span></a></p> <p>WMB ?IBM 的应用整合中间gQ是 IBM ESB 架构重要的品组成部分之一Q用于企业应用整合领域。WMB 目前的版本是 6.1.2Q它的前w是 MQSeries Integrator。本质上看,W(xu)MB ?MQ 的衍生品,它?MQ 作ؓ内部通信的机制。然后,W(xu)MB 提供的接入方式远不止 MQ 一U,包括 JMS、HTTP(S)、SCADA {常见的C代接口规范。在消息转化q程中,W(xu)MB 能够识别 XML、C l构、SOAP {各U自定义的消息格式?/p> <p>如图 5 所C,W(xu)MB 可以分ؓ开发环境和q行环境两大部分。其中开发环境由开发工PToolkitQ和调试环境QRational Agent ControllerQ组成,q行环境?WMB 核心Q也?Broker DomainQ由三部分组成,配置理器(Configuration ManagerQ、用户名服务器(User Name ServerQ和代理QBrokerQ?/p> <a name=N101E6><strong>?5. WMB lg </strong></a><br><img height=331 alt="" src="http://www.uml.org.cn/soa/images/imabnge011.jpg" width=523> <ul> <li>代理QBrokerQ:消息代理?WMB 的消息处理引擎,它提?WMB 的所有运行服务,?Windows pȝ上它是一个系l服务,?Unix q_上表Cؓ一个后台进E。应用系l利用与 MQ 的连接和队列消息发送到消息代理。代理与代理之间Q代理与配置理器之间通过普通的 MQ 发生和接受类型的消息通道q行通信。在一个主Z我们可以创徏一个或者多?BrokerQ每?Broker 会关联一个数据库Q利用数据库存储 Broker 需要和相关的信息,每个 Broker q需要一个队列管理器Q多?Broker 之间不能׃n同一个队列管理器Q每?Broker 必须有自q定的、唯一的队列管理器。每?Broker 只能被一个配|管理器控制? <li>配置理器(Configuration ManagerQ:配置理器是整个 WMB q行环境中的控制中心Q它l护整个 Broker Domain 的配|信息,配置和管理所有代理,增、删、启动、停止消息流Q所有的开发工具也是通过配置理器来部v~译l果的。配|管理器也负责与用户名服务器联系Q配|和理各种用户权限。配|管理器和其他各个部件之间的接口?MQQ所以配|管理器也必LZ MQ 队列理器而运行的? <li>用户名服务器QUser Name ServerQ:用户名服务器?WMB q行环境中的可选部分,它可以提供应用程序的接入认证以及订阅主题的访问控制服务。用户名服务器本w是不需要数据库Q但必须依赖于队列管理器与其他组仉信。用户名服务器中的用户信息来自认证数据文件? <li>开发工PToolkitQ:开发工hZ Eclipse 3.0 的集成开发环境,我们可以在其中开发消息流、消息集、ESQL 代码、Java 代码、映规则等。通过内置?MQ Client 与配|管理器q接Qƈ开发好的执行组仉|到相关的代理中。Eclipse 环境׃同的视图QPerspectiveQ组成,我们?WMB 中常用的有代理开发视图、代理管理视囄? <li>调试工具QRational Agent ControllerQ:q是 IBM Rational 开发工h准的调试工具。一般安装在代理所在的服务器一边,开发工具可以连?RACQ通过它来控制和调试消息流的运行。需要注意的是,Toolkit 可以q行开发,但是对于同一个执行组不能q行调试Q因 RAC 的调试过E是排他的。在 WMB6.0 之后 RAC 不需要再单独安装?</li> </ul> <p>下面从九(ji)个方面来介绍 WMB 在实C?SOA ESB 解决Ҏ(gu)上的支持的特点:</p> <ol type=1> <li><strong>消息转换 </strong> <p>WMB 在消息处理方面功能非常强大,?XML 格式的消息或?XML 格式的消息,?C HeaderQCOBOL {都有很好的支持。实际上Q通过开发消息对应的消息集(Message SetQ,可以在消息流中对L格式的消息进行修攏VWMB 提供了内|的 mapping ?database 节点Q用户可以通过囑Ş化的方式方便的实现消息的转换或与数据库的交互?</p> <li><strong>支持的协?</strong> <p>WMB 支持所?WESB 支持的传输协议,除了常用?HTTP、JMS {,q对 FTP、Socket、Mobile、Telemetry、Biztalk ?Tuxedo {有良好的支持。WMB ?MQ 有着紧密的联p,?MQ 的支持不在话下。WMB 内置的功能节点对q些协议提供了很好的支持Q仅需配置卛_Q如?6 所C?br><a name=N1021B><strong>?6. Message Broker 的内|开发节?</strong></a><br><img height=225 alt="" src="http://www.uml.org.cn/soa/images/imabnge015.gif" width=534> <br>  </p> <li><strong>消息路由 </strong> <p>WMB 提供了很多功能强大的内置节点支持消息的\由,?Filter 节点、Label 节点{,在新版本?WMB 中又引入?Router 节点Q该节点几乎?WESB 中的 Router 节点一栗若需要实现动态\由,可以使用 WSRR 作ؓ服务的存储,W(xu)MB ?WSRR 有很好的集成Q通过 RegistryLookup ?EndpointLookup 我们可以在消息流中实现动态\由。另外需要指出的是,W(xu)MB 可以提供一个消息输入,多个消息输出的功能,可以实现一个消息同时\由到多个输出端?</p> <li><strong>?Web Service 的支?</strong> <p>?WMB 中,消息可以作?Web Service 暴露出去供外部调用,也可以作为客L(fng)调用外部提供?Web Service。WMB 不仅提供了内|的 SOAPRequest、SOAPInput {节点实现对 Web Service 的支持,而且?WS 扩展Q如 WS-Security ?WS-Addressing 也有良好的支持?br><br><img height=348 alt="" src="http://www.uml.org.cn/soa/images/imabnge016.gif" width=475> <br>  </p> <li><strong>事g处理 </strong> <p>?WMB 中我们可以通过 Trace Service 来记录所发生的事件。Trace 分两U,一U是 User Trace 记录消息别的事gQ另一U是 Service TraceQ可以记录整?WMB 的事Ӟ?Broker 的部|执行。WMB 提供?Trace 内置节点Q可以实时的记录程中消息内容的变化?</p> <li><strong>与遗留系l的集成 </strong> <p>WMB 寚w留系l有良好的支持。对 SAPQPeopleSoft {大型的 EIS pȝQ直接提供了内置的节点,通过 JCA Adapter 配置的方式和 EIS pȝ交互。对于比较特别的遗留pȝQ如 CICS、VSAM {,W(xu)MB 提供了丰富的 SupportPacsQ客户可以下载ƈ安装?</p> <li><strong>安全斚w的支?</strong> <p>WMB 本n提供了两个层ơ上的安装,一个是部v时安全性,理部v bar 文g?Broker 以及q行 WMB 理命o的权限控Ӟ另一个是q行时安全,涉及的权限控制包括发送消息到相应的消息流Q以及消息流可以讉K哪些 MQ 资源和非 MQ 资源Q如数据库系l?</p> <li><strong>性能 </strong> <p>WMB 底层是?C++ 开发的Q在性能上相对于 WESB 有很大的提高。同时可以处理的消息数量Uؓ几千到几万之间?</p> <li><strong>开发和部v </strong> <p>开发工h WMB ToolkitQ我们开发的消息和消息集被打成 bar 文g通过配置理器部|到 Broker 中?</p> </li> </ol> <p>ȝ来说QW(xu)MB ?IBM 久经考验的一ƾ消息中间g产品Qؓ异构?IT 环境提供了统一的连接和转化Q其优势如下Q?/p> <ul> <li>利用 WebSphere MQ 作ؓ企业消息传递主qԌ提供了很好的q发性和可靠? <li>不仅支持各种标准协议Q而且支持?WebSphere 企业应用E序适配器进行集? <li>支持多种数据格式之间的{换,包括 XML、遗留系l、行业标准和自定义消息格? <li>针对大量数据处理q行了优化,极大提高了处理速度?</li> </ul> <p><a name=N1027F><span id="vqewrgy" class=smalltitle>Datapower</span></a></p> <p>DataPower 是一个硬件品,看v来像一个盒子。目?IBM 有三?Datapower 产品供用户选择。按照进入市场的先后ơ序Q它们分别是QDatapower Accelerator XA35QDatapower Security Gateway XS40Q?Datapower Integration Appliance XI50Q见?7?/p> <p><a name=N1028B><strong>?7. IBM ?Datapower 产品U?</strong></a><br><img height=69 alt="" src="http://www.uml.org.cn/soa/images/imabnge017.jpg" width=570> </p> <ul> <li>XA35 的主要侧重点?XML 加速,众所周知Q在 SOA 的环境中QXML 是应用最q泛的,而对 XML 的解析,加密Q解密这些操作让应用服务器来做的话,q是一个很大性能开销Q?XA35 是要替应用服务器的分担q些 XML 相关的工作,让应用服务器专注于处理业务逻辑Q? <li>XS40 的主要侧重点是安全,卌责提供安全的企业|关Q及?XML d的防范? <li>XI50Q从名字上看Q主要侧重点是集成功能,是一NU?ESB 产品Q提供了多种协议和数据格式的路由和解析的功能?</li> </ul> <p>虽然三款产品各有侧重Q但是三ƾ品的功能也具有包含关p,XS40 包含 XA35 的功能,XI50 包含 XS40 的功能?</p> <p>我们依然从以下九(ji)个方面来介绍 Datapower 在实?ESB 解决Ҏ(gu)中的特点?/p> <ol type=1> <li><strong>消息转换 </strong> <p>Datapower ?XML 消息有强大的支持Q但?Datapower l不仅仅支持 XMLQ我们可以在 Policy 中?Transformation 节点来对消息q行L我们需要的转换Q其原理是?XSLT 来实现的Q开发h员定义自?XSLT Stylesheet q在 Transformation 节点中指定,Datapower 负责转换?</p> <li><strong>支持的协?</strong> <p>Datapower 支持和以下传输协议,HTTPQHTTSQW(xu)ebSphere MQ <br>WebSphere JMSQTIBICO EMSQFTP Poller, FTP Server, NFS {等?Datapower ?MPGW 是一个处理不同协议的应用pȝ的互联的服务对象?</p> <li><strong>消息路由 </strong> <p>Datapower 支持Ҏ(gu)务和消息的\由,Ҏ(gu)消息中的上下文q接消息动态的分发C同的消息提供者。但?Datapower 的动态\由和 WESB 以及 MB 的动态\p是有区别的,Datapower 的动态\由需要由开发者定义\q MapQ?WESB ?MB 支持在消息头的属性里动态的讄 Endpoint 的地址。目?Datapower 可以?WSRR 集成来定?WS-ProxyQDatapower 中的一U服务对象)Q但不支持直接和 WSRR 联合实现动态访?Endpoint 的功能?</p> <li><strong>?Web Service 的支?</strong> <p>Datapower ?XMlFirewall ?WS-Proxy 提供了强大的?Web Service 的支持,而且 datapower 提供了细_度的对 Web Service 的控Ӟ可以从服务 (Service)Q端口 (port)Q绑定 (binding)Q操作 (operation) 来对消息体进行控制。此外,?WS-Security 也提供了强大的支持?</p> <li><strong>事g处理 </strong> <p>Datapower 中可以通过 Probe 的方式来跟踪消息的中间状态,?Probe 中,可以看到消息的每个节点的消息内宏VProbe 一般用于开发调试过E,在生产模式下一般不使用Q因Z?Probe 会牺牲一定的效率。Datapower 不支持与 CEI cM消息发送到其他应用pȝ的机制?</p> <li><strong>与遗留系l的集成 </strong> <p>Datapower 不支持和 Adapter 的连接,若要与遗留系l的集成Q则需要通过其他中间件{换在遗留pȝ?Datapower 之间做而桥梁来q接?</p> <li><strong>安全斚w的支?</strong> <p>Datapower 的强大之处在于其对安全方面的强有力的支持Q它提供?XML-attack 的原生支持(关于 XML-attack 的知识参见参考资料)Q此外,Datapower 可以?Web Service 提供l粒度的安全支持Q包括加?(Encryption)Q解?(Decryption)Q签?(Sign) 和确?(Verify)Q以?HTTS 斚w的支持。这些支持在 Datapower 上开发v来都异常单?</p> <li><strong>性能 </strong> <p>Datapower 无疑是三?ESB 产品中性能最高的Q对 XML 的处理速度辑ֈUK,下图是一l测试结果。如果去处网l传输在其中的比例,?XML 的处理性能所提高的倍数可达C癑ր?/p> <table class=content id=table7 cellSpacing=0 cellPadding=0 width=751 border=1> <tbody> <tr> <th scope=col colSpan=2>Software Solution </th> <th scope=col colSpan=2>DP Solution </th> </tr> <tr> <td>Avg. response time ( TimeP / N ) </td> <td>XML processing time ( TimeX ) </td> <td>Avg. response time ( TimeP / N ) </td> <td>XML processing time ( TimeX ) </td> </tr> <tr> <td>106 ms </td> <td>96 ms </td> <td>19 ms </td> <td>11ms </td> </tr> </tbody> </table> <li><strong>开发和部v </strong> <p>Datapower 的没有相应的开发工P但是提供?Web GUI 的管理控制台?CLI 方式的管理支持。我们在 Web GUI 下开发消息流Q开发即部v?/p> <p>高速的 XML 处理能力和强大的安全支持Q是 Datapower 作ؓ SOA 应用中的 ESB 的重要特Ԍq个特点使得 Datapower 成ؓ一ƾD重的 ESB 产品?</p> </li> </ol> <h3><a name=N1032C><span id="vfahrcq" class=atitle>三款产品的比?</span></a></h3> <p>从上面的介绍我们可以看出Q三ƾ品都提供?ESB 的必ȝ功能Q但各有侧重Q?/p> <ul> <li>WESB 是一个轻量?ESBQ侧重于标准协议QSOAP,JMS {应用的基础Q构Z WASND 基础之上Q提供了?J2EE 应用很好的集成功能;同时׃ WESB 是一个纯 Java 的应用服务器Q在性能上也是相对较差一点的 ESBQ可q发执行?Mediation Flow 的数量在几十个左右。WESB 适合使用于对性能要求不是很高Q且遵@标准协议?SOA 整合环境中。WESB 的优势是提供了和程服务?WPS 以及 J2EE 服务?WAS 良好的整合。WESB 的应用场景见?8Q?</li> </ul> <a name=N1033C><strong>?8. WESB 的应用场?</strong></a><br><img height=270 alt="" src="http://www.uml.org.cn/soa/images/imabnge019.gif" width=524> <ul> <li>WMB 是一NU的 ESBQ提供了?WESB 多很多的传输协议Q数据格式的支持Q它所支持几乎大部分常用的数据格式和协议。ƈ?WMB 提供了良好的扩展功能Q开发h员可以在 WMB 基础上开发自q数据格式解析的节炏VWMB 使用 C/C++ ~写Q在处理性能上比 ESB 也要高出很多倍,可ƈ发执行的可以达C百个或上千个。从?9 可以看出 WESB ?WMB 在支持的协议上的区别?</li> </ul> <a name=N10350><strong>?9. WESB ?WMB 的比?</strong></a><br><img height=300 alt="" src="http://www.uml.org.cn/soa/images/imabnge021.gif" width=524> <p>WMB 应用于对性能要求相对较高Q多U复杂协议存在的集成环境中。另外,W(xu)MB 构徏?WebSphere Message QueueQWMQQ之上?WMQ 提供了对异步消息提供了可靠的传送机Ӟ比较适合于信息传输量较大Q信息交互频J的场景中。如?10 所C:</p> <p><a name=N10362><strong>?10. WMB 的用场?</strong></a><br><img height=258 alt="" src="http://www.uml.org.cn/soa/images/imabnge023.gif" width=524> </p> <ul> <li>Datapower ?SOA 中的又一重要?ESBQ在 WESB ?WMB 中都是用软g来实?XML 解析和安全支持的Q?Datapower 使用g?XML 解析和加速器Q在性能上有了很大的提高。在很多 SOA 的环境里Q安全和性能是天q的两端Q增加安全势必要牺牲性能Q而提高性能则需要牺牲安全。所以在安全和性能要求都比较高的环境中QDatapower 是一首?ESBQ因?Datapower 可以在实现高性能的同时也保证安全。图 11 是一U?Datapower 的应用场景: </li> </ul> <a name=N10376><strong>?11. Datapower 的用场?</strong></a><br><img height=324 alt="" src="http://www.uml.org.cn/soa/images/imabnge025.gif" width=524> <h3><a name=N10382><span id="twvjipw" class=atitle>ȝ </span></a></h3> <p>Z上文对三ƾ品做了详l的比较Q我们可以做如下ȝQW(xu)ESB 适用?J2EE 环境下,Ҏ(gu)能要求不是很高的,标遵循标准协议的 SOA 集成QWMB 应用更复杂的集成环境Q表Cؓ数据格式多种Q传输协议多P性能要求很高Q而在安全和性能要求都很高的应用场景下,选择 Datapower 无疑是最好的选择。下面的图表再次Ҏ(gu)中的描述q行ȝ?/p> <table class=content id=table14 cellSpacing=0 cellPadding=0 border=1> <tbody> <tr bgColor=#f9f9f9> <th scope=col>ESB 功能特点 </th> <th scope=col>WESB 的支?</th> <th scope=col>MB 的支?</th> <th scope=col>Datapower </th> </tr> <tr bgColor=#ffffff> <td><strong>消息转换 </strong></td> <td>XML </td> <td>XML、非 XML </td> <td>XML、非 XML </td> </tr> <tr bgColor=#ffffff> <td><strong>支持的协?</strong></td> <td>HTTP,JMS, WMQ {?</td> <td>多达上百U?</td> <td>介于前二者之?</td> </tr> <tr bgColor=#ffffff> <td><strong>消息路由 </strong></td> <td>强大Q灵z?</td> <td>功能强大Q灵z?</td> <td>灉|度比前二者稍?</td> </tr> <tr bgColor=#ffffff> <td><strong>Web Service</strong> </td> <td>强大的支?</td> <td>支持 WS 扩展 </td> <td>强大的支?</td> </tr> <tr bgColor=#ffffff> <td><strong>事g处理 </strong></td> <td>CEIQ可以和外部事g消费pȝ监控 </td> <td>Trace Service </td> <td>用于调试 Probe </td> </tr> <tr bgColor=#ffffff> <td><strong>遗留pȝ的集?</strong></td> <td>Adapter </td> <td>丰富?SupportPac </td> <td>特定的遗留系l?</td> </tr> <tr bgColor=#ffffff> <td><strong>安全 </strong></td> <td>依赖 WAS 的安?</td> <td>部v和运行时两个U别的安?</td> <td>强的安全支?</td> </tr> <tr bgColor=#ffffff> <td><strong>性能 </strong></td> <td>几十到几百每U?</td> <td>几千到几万每U?</td> <td>辑ֈUK?</td> </tr> <tr bgColor=#ffffff> <td><strong>开发和部v </strong></td> <td>WID 集成开发环?</td> <td>WMB Toolkit </td> <td>WebGUI </td> </tr> </tbody> </table> <p>在本文的<a target=_blank cmImpressionSent="1">W?2 部分</a>中,我们用一个简化的实际案例来描qC?ESB 产品在实C的差异?/p> <h3><a name=resources><span id="ojxwvjb" class=atitle>参考资?</span></a></h3> <strong>学习(fn)</strong> <ul> <li><a target=_blank cmImpressionSent="1">CEI 的介l?/a>Q从q里(zhn)可以了?Common Event Infrastructure 相关的内宏V? <li><a target=_blank cmImpressionSent="1">EAI vs. SOA vs. ESB</a>Q?本文向?zhn)讲解了这三个概念之间的关pd相关的内宏V? <li><a target=_blank cmImpressionSent="1">WebSphere Enterprise Service Bus 的品文中?/a>Q?在这里?zhn)可以扑ֈ所有和 WESB 产品相关的资源? <li><a target=_blank cmImpressionSent="1">WebSphere Message Broker 的品文?/a>Q?在这里?zhn)可以扑ֈ所有和 WebSphere Message Broker 产品相关的资源? <li><a target=_blank cmImpressionSent="1">WebSphere Enterprise Service Bus 资源中心</a>Q?q里拥有 developerWork 中所有和 WESB 相关的内容,让?zhn)可以更全面地了解和学习(fn)这个品? <li>IBM developerWorks <a target=_blank cmImpressionSent="1">SOA and Web services 专区 </a>提供了大量的文章Q以及关于如何开?Web 服务应用E序的初U、中U和高教程? <li>使用 <a onmouseover=linkQueryAppend(this) target=_blank cmImpressionSent="1">IBM SOA Sandbox</a> q行试验Q通过 IBM SOA q行实际的亲手实跉|提高(zhn)的 SOA 技能? <li><a onmouseover=linkQueryAppend(this) target=_blank cmImpressionSent="1">IBM SOA |站 </a>提供 SOA 的概qͼq介l?IBM 是如何帮助?zhn)实?SOA 的? <li>了解关于 <a target=_blank cmImpressionSent="1">developerWorks 技术事件和|络q播 </a>的最新消息。请特别x以下 SOA ?Web 服务技术讲座: <ul> <li><a onmouseover=linkQueryAppend(this) target=_blank cmImpressionSent="1">SCA/SDO:To drive the next generation of SOA</a> </li> </ul> <li>讉K <a onmouseover=linkQueryAppend(this) target=_blank cmImpressionSent="1">Safari 书店 </a>Q浏览有兌些技术主题以及其他方面的书籍? <li>查看快速的 <a onmouseover=linkQueryAppend(this) cmImpressionSent="1">Web 服务按需演示 </a>? <li>获取 <a target=_blank cmImpressionSent="1">SOA and Webservices 专区?RSS</a>。(了解关于 <a target=_blank cmImpressionSent="1">RSS</a> 的更多信息。) </li> </ul> <strong>获得产品和技?/strong> <ul> <li>使用 <a target=_blank cmImpressionSent="1">IBM 试用软g </a>开发?zhn)的下一个项目,可下载或索取 DVD 光盘?</li> </ul> <strong>讨论</strong> <ul> <li>参与 <a onmouseover=linkQueryAppend(this) target=_blank cmImpressionSent="1">developerWorks Blog</a>Q从而加入到 developerWorks C֌中来Q其中包括以下与 SOA ?Web 服务相关?BlogsQ? <ul> <li>Sandy Carter ?<a onmouseover=linkQueryAppend(this) target=_blank cmImpressionSent="1">Service Oriented Architecture -- Off the Record</a> <li>Ali Arsanjani ?<a onmouseover=linkQueryAppend(this) target=_blank cmImpressionSent="1">Best Practices in Service-Oriented Architecture</a> <li>Bobby Woolf ?<a onmouseover=linkQueryAppend(this) target=_blank cmImpressionSent="1">WebSphere SOA and J2EE in Practice</a> <li>Eoin Lane 博士?<a onmouseover=linkQueryAppend(this) target=_blank cmImpressionSent="1">Building SOA applications with patterns</a> <li>Kerrie Holley ?<a onmouseover=linkQueryAppend(this) target=_blank cmImpressionSent="1">Client Insights, Concerns and Perspectives on SOA</a> <li>Simon Johnston ?<a onmouseover=linkQueryAppend(this) target=_blank cmImpressionSent="1" doneOnce="true">Service-Oriented Architecture and Business-Level Tooling</a></li> </ul> </li> </ul> <img src ="http://www.shnenglu.com/prayer/aggbug/109841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2010-03-16 18:52 <a href="http://www.shnenglu.com/prayer/archive/2010/03/16/109841.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tuxedo执行tmloadcf问题解决http://www.shnenglu.com/prayer/archive/2010/01/19/106025.htmlPrayerPrayerTue, 19 Jan 2010 08:56:00 GMThttp://www.shnenglu.com/prayer/archive/2010/01/19/106025.htmlhttp://www.shnenglu.com/prayer/comments/106025.htmlhttp://www.shnenglu.com/prayer/archive/2010/01/19/106025.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/106025.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/106025.html执行 tmloadcf -y ubbsimple 出现的问题解?1. CMDTUX_CAT:868: ERROR: tmloadcf cannot run on a non-master node
解决Ҏ(gu)Qubbsimple 文g中将改ؓ你的机器名,在windows下?echo %computername% 昄机器名,
在unix下?uname -n ?br>注意在windows ?通过hostname 或?%COMPUTERNAME% 查出来的机器名不论是大小?在ubb中设|成大写.

 



Prayer 2010-01-19 16:56 发表评论
]]>
TUXEDO监视pȝq行tmadmin命ohttp://www.shnenglu.com/prayer/archive/2010/01/13/105574.htmlPrayerPrayerWed, 13 Jan 2010 07:44:00 GMThttp://www.shnenglu.com/prayer/archive/2010/01/13/105574.htmlhttp://www.shnenglu.com/prayer/comments/105574.htmlhttp://www.shnenglu.com/prayer/archive/2010/01/13/105574.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/105574.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/105574.htmlTUXEDO监视pȝq行

q入linuxpȝQ在linuxpȝdos输入面中输入tmadmin

q入tmadmin的监环境,输入下面的命令即?/p>

启动tmadmin
tmboot  -y

1查看服务信息psr
(1) 命o: printserver ?psr
(2)  psr [-m machine] [-g groupname] [-i srvid] [-q qaddress]
-m machine LMID?machine的所有服务进E?br>-g groupname l名为groupname的所有服务进E?br>-I srvid SRVID为srvid的服务进E?br>-q qaddress 消息队列为qaddress的所有SERVERS查看server的信?br>(3) l果CZ:
Prog Name     Queue Name   Grp Name      ID   RqDone  Load Done  Current Service
---------    ----------    --------      --    ------  ---------  ---------------
rz_Ecsb        00004.04000   APGP2       4000    0        0       (  IDLE )
BBL            70020         simple         0     1       50       (  IDLE )
IFMTMS         APGP2_TMS    APGP2      30001     1       50       (  IDLE )
ftpserv32      00002.00001  FTPGP          1    60      3000     (  IDLE )
l果说明:
列号  描述
1. 服务的可执行文g?br>2. 服务q接的队列名
3. l名
4. 服务的数字id
5. 服务已经处理的请求数(该SERVER的所有service的负载因子d)
6. 服务处理的全部请求的参数和,如果当前没有service被调用,则ؓIDLE
2查看交易信息psc
(1)  命o: printservice  ? psc
psc [-m machine] [-g groupname] [-I srvid] [-q qaddress]
[-s service] [-a {0|1|2}]
-s service 昄名ؓsevice的service信息
-a {0|1|2} 昄pȝ的隐含的service
其他参数与psr命o相同
(2)  l果CZ:
Service Name   Routine Name   Prog Name  Grp Name   ID   Machine   # Done   Status
------------   ------------     -------    --------   --   -------   ------   ------
416701         rz_Ecsb         rz_Ecsb     APGP2     4000    simple    0      AVAIL
416601         rz_Ecsb         rz_Ecsb     APGP2     4000    simple    0      AVAIL
416501         rz_Ecsb         rz_Ecsb     APGP2     4000    simple    0      AVAIL
(3)  l果说明:
列号    描述
1. Service Name :服务?br>2. Routine Name :函数?采用TUXEDO服务的别名机?一个函数可以对应多个服务名)
3. Prog Name :service 所在的SERVER?br>4. Grp Name :l名
5. ID Qserver的ID?br>6. Machine :server所在的LMID
7. # Done Qservice被调用的ơ数
8. Status :service的状态。AVAIL表示可用
3查看队列信息pq
(1) 命o: printqueue ?pq [PADRESS]
(2) l果CZ:
pq 00004.05062
Prog Name      Queue Name  # Serve  Wk Queued  # Queued  Ave. Len    Machine
---------    ------------  ------   ---------  --------  --------    -------
CCS_GEDAIPC_50 00004.05062     1         0        0       0.0       simple
(3) l果说明:
列号    描述
1. Prog Name :队列q接的服务的可执行文件名
2. Queue Name :字符队列名,是RQADDR参数或一个随机?br>3. #Serve :q接的服务数
4. Wk Queued :当前队列的所有请求的参数?br>5. #Queued :实际h?br>6. Ave.Len :q_队列长度
7. Machine :队列所在机器的LMID
4查看客户端信息pclt
(1) 命o: printclient ?pclt
-m machine 昄LMID号ؓmachine上的客户端连?br>-u username 昄用户名ؓusername 的客L(fng)q接
-c ctlname 昄用户q程为ctlname的客L(fng)q接
(2) l果CZ:
  LMID        User Name       Client Name    Time    Status  Bgn/Cmmt/Abrt
---------- --------------- --------------- -------- ------- -------------
simple          ccsmis          WSH        17:42:47   IDLE      0/0/0
simple          ccsmis          tmadmin    0:44:28    IDLE      0/0/0
(3) l果说明:
列号  描述
1. 已经d的客L(fng)机器的LMID
2. 用户名,由tpinit()提供?br>3. 客户端名Q由tpinit()提供?br>4. 客户端连接后l过的时?br>5. 客户端状?br>6. IDLE——表C客L(fng)目前没有M交易?a onclick="javascript:tagshow(event, '%B9%A4%D7%F7');" href="javascript:;" target=_self>工作
7. IDLET——表C客L(fng)启动了一个交?br>8. BUSY——表C客L(fng)在工作中
9. BUSYT——表C客L(fng)正在交易控制下工?br>10. 启动/提交/中断的交易数

5查看部分l计信息bbs
(4) 命o: bbstats  写:bbs
> bbs
Current Bulletin Board Status:
Current number of servers: 335
Current number of services: 2324
Current number of request queues: 27
Current number of server groups: 11
Current number of interfaces: 0

6观察某个节点的进E信息default
(5) 命oQdefault –m
> default -m SITE13

SITE13> psr
Prog Name      Queue Name  Grp Name      ID RqDone Load Done Current Service
---------      ----------  --------      -- ------ --------- ---------------
BBL            30004.00000 SITE13         0  22827   1141350 ..ADJUNCTBB
BRIDGE         836437      SITE13         1      0         0 (  IDLE )
GWADM          00021.00019 BGWGRP1+      19      0         0 (  IDLE )
GWTDOMAIN      00021.00020 BGWGRP1+      20 123826         0
GWADM          00022.00021 BGWGRP2+      21      0         0 (  IDLE )
GWTDOMAIN      00022.00022 BGWGRP2+      22      0         0 (  IDLE )
GWADM          00025.00027 GWGRP1_+      27      4       200 (  IDLE )

7查看消息发送状态pnw
(6) 命oQprintnetwork ?pnw
> pnw SITE12

SITE12                         Connected To:  msgs sent    msgs received
                                      SITE14      61904            62319
                                      SITE13      61890            62288
                                      SITE11      15972            13564
8退出管理模式q
(7) 命o: quit  写:q




Prayer 2010-01-13 15:44 发表评论
]]>
tuxedo中间件不能启动异常故障解x?/title><link>http://www.shnenglu.com/prayer/archive/2009/01/21/72413.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Wed, 21 Jan 2009 04:44:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2009/01/21/72413.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/72413.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2009/01/21/72413.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/72413.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/72413.html</trackback:ping><description><![CDATA[<div id="advbwgy" class=articleContent id=articleBody> <div> <wbr>早晨前台报告不能登陆了,后发C间g不能正常tmshutdown,错误信息如下Q?/div> <div> <p><font style="BACKGROUND-COLOR: #ffffff" face=宋体>$ tmshutdown -y<br>Shutting down all admin and server processes in /home/billklmy/cfg/tuxconfig</font></p> <p><font style="BACKGROUND-COLOR: #ffffff" face=宋体>tmshutdown: internal error: CMDTUX_CAT:764: ERROR: can't attach to BB<br></font></p> </div> <div> <wbr></div> <div><font style="BACKGROUND-COLOR: #ffffff" face=宋体>解决办法Q执?font style="BACKGROUND-COLOR: #ffffff" face=宋体>ipcs -qms | <wbr> grep billklmy | grep -v 'grep' | <wbr> awk '{ print "ipcrm -"$1" "$2}' |sh</font></font></div> <div>然后再tmboot -y卛_了?/div> <div> <wbr></div> <div>厂方解释原因是执行了大的报表查询E序D的,很少出现?/div> </div> <img src ="http://www.shnenglu.com/prayer/aggbug/72413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2009-01-21 12:44 <a href="http://www.shnenglu.com/prayer/archive/2009/01/21/72413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tuxedo基本命ohttp://www.shnenglu.com/prayer/archive/2008/12/15/69470.htmlPrayerPrayerMon, 15 Dec 2008 02:09:00 GMThttp://www.shnenglu.com/prayer/archive/2008/12/15/69470.htmlhttp://www.shnenglu.com/prayer/comments/69470.htmlhttp://www.shnenglu.com/prayer/archive/2008/12/15/69470.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/69470.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/69470.html#1.讄环境变量TUXDIR,APPDIR,TUXCONFIGQLANG(跟OS相关),LD_LIBRARY_PATH(跟OS相关)
#2.~译ubb文本生成二进刉|文Ӟtmloadcf –y ubbconfig
#3.所有机器上q行tlisten,具体见文档中NETWORK一?br>#4.启动tmboot –y
#5.关闭tmshutdown –y
参数Q?br>-A在所有机器上启动/关闭理的Serverq程
-M只在MASTER机器上启?关闭理的Serverq程
-isrvid  启动/关闭某个server id指定的Serverq程
-ggrpname启动/关闭某个server group名字指定的Server Group
-S启动/关闭所有应用服务器QLMIDQ?br>-sserver-name 启动/关闭某个server名字指定的Serverq程
-llmid option 在指定的机器上启?关闭所有TMSq程和应用服务器QLMIDQ?br>-Tgrpname 启动/关闭指定的server group中所有的TMSq程
-Blmid 在指定的机器上启?关闭BBLq程
-ecommand 指定一个程序可以当在MASTER机器上启动Q何一个进E失败时执行
-c计算出当前UBB配置的Tuxedo启动最要占用的系lIPC资源
#用tmunloadcf > generated.ubb 可以得出目前配置得UBB文g所有得参数|没有讄的有~省|
#用tmloadcf –c或tmboot –c可以计算出当前UBB配置的Tuxedo启动最要占用的系lIPC资源?/font>


Prayer 2008-12-15 10:09 发表评论
]]>server端ATMI http://www.shnenglu.com/prayer/archive/2008/12/11/69171.htmlPrayerPrayerThu, 11 Dec 2008 07:48:00 GMThttp://www.shnenglu.com/prayer/archive/2008/12/11/69171.htmlhttp://www.shnenglu.com/prayer/comments/69171.htmlhttp://www.shnenglu.com/prayer/archive/2008/12/11/69171.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/69171.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/69171.html索引Q?br>1.TPSVCINFO
2.buffer理
3.server的client角色
4.tpadvertise
5.tpunadvertise
6.tpreturn
7.tpforward
8.
tpsvrinit/tpsvrdone

--------------------------------------------------------------------------------

在server?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">tuxedo
本n提供了一个标准的main()函数Q它负责完成一些必要的工作。server端编E只需要编写service处理函数Q进行service的请求处理和回应处理。所以,在server端不需要调用tpinit()和tpterm()?/font>


1.TPSVCINFO
每个service函数都有l一的Ş式:
void tpservice (TPSVCINFO *svcinfo);

只有一个参敎ͼ该参数是指向TPSVCINFOl构的指针(atmi.hQ。该l构定义如下Q?br>struct tpsvcinfo {
  char name[32]; /*service名(最?5个字W)*/
  long flags; /* client调用时指定的flags */
  char *data; /* 接收的数据地址 */
  long len; /* 数据长度 */
  int cd; /* 会话方式下的q接描述W?*/
  long appkey; /* 应用认证的key */
  CLIENTID cltid; /* client ID */
};


--------------------------------------------------------------------------------
2.buffer理
在service函数里,一样可以调用tpalloc()、tpfree()、tprealloc()处理自定义的buffer?/font>
通过TPSVCINFO参数传递的buffer是用tpalloc()分配的,所以可以对它用tprealloc()?/font>

要注意的是在service函数里自p用tpalloc()分配的空间在退释放Q除非该I间作ؓtpreturn()或tpforward()的参数。如果分配的I间不释放,最l会耗尽该server的内存资源?/font>

对于TPSVCINFO传递的buffer不用手动释放?/font>

使用举例Q?br>void
BAL (TPSVCINFO* input)
{
  char* f, f1, f2;
  f=input->data;
  f1=tpalloc (“STRING”, NULL, 80);
  f2=tpalloc (“STRING”, NULL, 120);
  . . .
  tpfree ((char *) f2);
  tpreturn (TPSUCCESS, 0, f1, 0, 0);
}
可以使用tptypes()查看buffer的类型。如Q?br>void ABAL(TPSVCINFO *transb)
{
  char type[20], subtype[20];
  long len;
  len = tptypes(transb->data, type, subtype);
  if (len == 0) {
    /*error*/
    userlog(“NULL message sent...\n”);
    ...
  }
  if (strcmp(type, “FML”) == 0) {
    /* convert FML to aud VIEW; */
  } else if (strcmp(type, “VIEW”) == 0) {
    if (strcmp(subtype, “aud”) != 0) {
        /*error*/
        userlog(“Wrong VIEW subtype...”);
        ...
    }
  } else {
    /*error*/
    userlog(“Invalid buffer type ...”);
    ...
  }
}


--------------------------------------------------------------------------------
3.server的client角色
tuxedo的机制允怸个serverE序作ؓclientQ调用tpcall()去请求别的service服务。这样做可以避免代码的冗余,但效率上会有牺牲?/font>
q样做时有一些情况要注意Q?/font>

如果一个server要把负责q回接收到的bufferQ则不要使用q个buffer作ؓ参数来请求别的service服务。可以分配辅助性的buffer来处理,q样做可以避免在tpcall()q程中改变了输入buffer的内容和cd?
一个server不能h一个只被它本n发布的service。这样做会导致死锁。例外是h时指定TPNOREPLY标志?

--------------------------------------------------------------------------------
4.tpadvertise
service可以在启动时发布Q也可用tmadmin或用tpadvertise动态发布?/font>
int tpadvertise (char *svcname, void (*func)(TPSVCINFO *));

参数说明Q?br>svcnameQ要发布的service名;
funcQ该service对应的处理函数指针;


如果该service用func已经发布Q则函数立即成功q回。如果调用server是MSSQ集的一员,则该MQSQ中的所有server都发布这个service。失败时q回-1?/font>

出错原因Q?/font>

该service已经用别的函数发布了Q?
过了最大允许发布的service数量QMAXSERVICESQ;
参数错误Q有为NULL的)Q?
协议错;
操作pȝ错等?

--------------------------------------------------------------------------------
5.tpunadvertise
一个server取消发布一个它已经发布的service?/font>
int tpunadvertise (char *svcname);

参数说明Q?br>svcnameQ操作的service名;

如果调用server是MSSQ集的一员,则该MQSQ中的所有server都取消发布这个service。失败时q回-1?/font>

p|原因Q?/font>

service没有发布Q?
参数错误Q?
协议错等?

--------------------------------------------------------------------------------
6.tpreturn
普通的C函数q回时用return语句。但?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">tuxedoE序里,不能使用returnQ必M用tpreturn()l止当前处理q发送回应给h端;或者用tpforward()把请求传递给别的service处理?/font>
void tpreturn(int rval, int rcode, char *data,long len, long flags);

参数说明Q?br>rvalQ返回|军_该serviceh是否成功。如三个可选|

TPSUCCESSQ成功。tpcall和tpgetrply返回一个非负|如果是会话serviceQ则产生TPEV_SVCSUCC事gQ?
TPFAILQ失败。tpcall和tpgetrply返?1Qtperrno讄为TPESVCFAILQ如果是会话serviceQ则产生TPEV_SVCFAIL事gQ?
TPEXITQ除了TPFAIL的功能外Q该server随后终止,如果配置了重启动Q则该server重新启动?
rcodeQ应用定义的q回码。service向clientq回该数字,tuxedo本n不对其做M解释Q接收端通过全局变量tpurcode得到该|在成功或p|时该值都会返回;
dataQ返回给client端的数据bufferQ?br>lenQ返回数据的长度Q只CARRAYcd有用Q;
flagsQ标志,当前没用?/font>
--------------------------------------------------------------------------------
7.tpforward
调用tpforward的server不向clientq回数据Q而是把更新过的buffer传递给另一个service做更多的处理Q由它处理返回client数据{后l的工作。本w则q回到标准的main程中?/font>
void tpforward(char *service, char *data, long len, long flags);

参数说明Q?br>serviceQ后l的service的名Uͼ
dataQ指向传递的buffer的指针;
lenQbuffer的长度(只CARRAY有用Q;
flagsQ当前没有用;


该函C能用在会话service中?/font>

--------------------------------------------------------------------------------
8.tpsvrinit/tpsvrdone
在一个server的实例启动时会调?strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">tpsvrinit()Q在l束时会调用tpsvrdown()。如果应用没有定义这两个函数Q则使用tuxedo提供的缺省函数?/font>
int tpsvrinit(int argc, char **argv);

参数说明QŞ式类gmain函数的参敎ͼ函数里可以用getopt和全局变量optindq行处理Q配|文件中的CLOPT命o行选项也传递到该函数?/font>

函数成功q回0Q失败返?1?/font>

void tpsvrdone();


Prayer 2008-12-11 15:48 发表评论
]]>Ztuxedo中间件架构的应用研究http://www.shnenglu.com/prayer/archive/2008/12/11/69170.htmlPrayerPrayerThu, 11 Dec 2008 07:46:00 GMThttp://www.shnenglu.com/prayer/archive/2008/12/11/69170.htmlhttp://www.shnenglu.com/prayer/comments/69170.htmlhttp://www.shnenglu.com/prayer/archive/2008/12/11/69170.html#Feedback1http://www.shnenglu.com/prayer/comments/commentRss/69170.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/69170.html ?nbsp; ?/strong>  本文研究了中间g产品BEA TuxedoQTransaction for UNIX has been Extended for Distributed OperationQ的特点和优ѝƈl合具体的例子研I了BEA Tuxedo的客服程序、服务程序的实现Q以及BEA Tuxedo的通信方式?
    关键?/strong>  BEA Tuxedo、中间g
 
?a
    中间?Middleware)是近q来q?a >发展、壮大v来的一个Y仉域。在pȝ应用的层ơ信息结构中Q他处于操作pȝ和用户应用之间。对应用E序来说Q其主要作用是屏蔽操作系l的异构和实现稳定安全的支撑环境Q以便于不同pȝ间的信息交换。开发h员编E时可以利用中间件品提供的跨^台的、统一的接口,来规避操作系l的差异。这在提高应用程序的可移植性的同时也羃短了应用开发的周期?/div>
    中间件用以提供客h与服务器之间的连接服务,q些服务h标准的程序接口和协议。针对不同的操作pȝ和硬件^収ͼ中间件能提供W合接口和协议规范的多种实现方式。由于标准接口对于可UL性和标准协议对于互操作性的重要性,中间件已成ؓ许多标准化工作的主要部分?/div>
    中间件是一U独立的pȝ软g或服务程序,分布式应用Y件借助q种软g在不同的技术之间共享资源。中间gpȝ理着客户端程序和数据库或者早期应用Y件之间的通讯。而且中间件在分布式的客户和服务之间扮演着承上启下的角Ԍ如事务管理、负载均衡以及基于Web?a >计算{?/div>
1  主要中间件的分类
     中间件包括的范围十分q泛Q针对不同的需求涌现出多种各具特色的中间g产品。由于中间g需要屏蔽分布环境中异构的操作系l和|络协议Q它必须能够提供分布环境下的通讯服务Q我们将q种通讯服务UC为^台。基于目的和实现机制的不同,我们^台分Z下主要几c:
      ?nbsp; q程q程调用QRemote Procedure CallQ?/div>
      ?nbsp; 面向消息的中间gQMessage-Oriented MiddlewareQ?/div>
      ?nbsp; 对象h代理QObject Request BrokersQ?/div>
      q_可向上提供不同Ş式的通讯服务Q包括同步、排队、订阅发布、广播等{。在q些基本的通讯q_之上Q可构筑各种框架Qؓ应用E序提供不同领域内的服务Q如事务处理监控器、分布数据访问、对象事务管理器OTM{。^Cؓ上层应用屏蔽了异构操作系l的差异Q而其上的框架又定义了相应领域内的pȝl构、标准的服务lg{。用户只需告诉框架所兛_的事Ӟ然后提供处理q些事g的代码,事g发生Ӟ框架调用用户的代码。用户代码不用调用框Ӟ用户E序也不用关心框架结构、执行流E、对pȝUAPI的调用等Q所有这些都由框架负责完成。因此,Z中间件开发的应用h良好的可扩充性、易理性、高可用性和可移植性?/div>
2 中间件?/strong>TUXEDO分析
     中间件品TUXEDO是Transaction for UNIX has been Extended for Distributed Operation的简Uͼ卌分布式操作扩展之后的UNIX事务pȝ 。TUXEDO是一个基于消息类型的中间件品,?984q由AT&&T的贝?dng)实验室开发完成的?995q被BEA公司收购。BEA TUXEDO是在企业、Internet q样的分布式q算环境中开发和理三层l构的客?服务器型关键d应用pȝ的强有力工具。它具备分布式事务处理和应用通信功能Qƈ提供完善的各U服务来建立、运行和理关键d应用pȝ。开发h员能够用它徏立跨多个gq_、数据库和操作系l的可互操作的应用系l?TUXEDO中间件的工作原理如图一所C:
Client向System/T发出查询hQ以扑ֈServer消息队列的地址Q?/div>
ClientҎ(gu)扑ֈ的入口地址请求发送到Server的消息队列中Q?/div>

?  tuxedo中间件工作原?/div>
      Server处理hQƈ结果返回给Client的消息队列?System/T是Tuxedopȝ的核心,它实CTuxedo的所有功能和特征Q如C/S数据管理、服务请求的负蝲均衡、全局事务理以保证交易的完整性、同?异步服务h、两阶段提交以确保消息的发送等。System/T提供了一个类似公告栏的服务,用以发布C/S计算机环境中所有服务器、服务和客户机的信息Q供其它分布式计的参与者用?/div>
      中间件品TUXEDO的特?sup>[1]Q?/div>
      ?分布式交易管理:BEA Tuxedo使客h和服务器可参与涉及多个数据库协调更新的分布式交易。ƈ保所有数据库的正更新或恢复到初始状态,从而在Mlg出现故障时均能保证数据的完整性;
      ?高可用性:BEA Tuxedo的一个主要性能是保证对pȝlgq行持箋的监视,查看应用pȝ、交易、网l及g是否出现故障。一旦出现故障,BEA Tuxedo会从逻辑上把故障lg从系l中排除Q管理必要的恢复E序qCؓ消息和交易选择路由Q以使系ll运行。对于最l用戯言Q所有这些都是完全透明的,且不需要中断服务;
      ?动态负载均衡:BEA Tuxedo可以Ҏ(gu)pȝ的负载指C,自动开启和关闭应用服务Q以满对应用系l的高强度用需求。同时还可以均衡所有可用系l的负蝲Q以保无论服务是在同一个节点还是分布在节点之间pȝ都能被^均用资源,辑ֈ负蝲均衡Q?/div>
      ?数据依赖路由(DDR)QBEA Tuxedo可按照消息的传输的关键\׃息来选择消息路由。这样就能够实现交易的高效处理,q发挥最x能Q?/div>
      ?安全性:BEA Tuxedo支持加密(LLE安全机制)Q当跨网l部|BEA Tuxedo应用pȝӞq些安全性机制可保用户数据的保密性。Tuxedoq提供了插gE序机制Q支持公共密钥和数字{֐Q以及连接应用系l的非BEA安全产品Q保证了pȝ的安全性?/div>
      ?应用pȝq行化:BEA Tuxedo通过动态复制整个网l中的分布式应用pȝQ可?a >?sh)?/font>商务应用pȝ发挥最x能。同时Tuxedo允许应用pȝq行处理hQƈ发处理位于不同分布式节点上的业务hQ提高开发效率?/div>
      ?提供Application To Transaction Manager Interface—ATMIQBEA TUXEDO提供?ATMI支持?0多种gq_和操作系l提供了一致的应用~程接口。ATMI让开发h员不用考虑E序所在的g环境Q直接编写BEA Tuxedo应用pȝ?/div>
3 中间件?/strong>TUXEDO开?/strong>
     TUXEDO应用开发主要包括到客户端程序、服务端E序的开发。BEA Tuxedo提供了一个其于C语言的编E接口,卛_用程序事务监控接口ATMIQ以便用于开发客L(fng)序和服务E序。除了C语言接口外,BEA Tuxedoq提?/div> 了COBOL接口。在Bea Tuxedopȝ中的客户端到服务端的通信q程都是通过cd~冲区来完成的,Bea Tuxedopȝ提供了大量的cd~冲区来供用。所有类型缓冲区都必通过Bea Tuxedo的tpalloc(), tprealloc(), tpfree()q些公共ATMI来分配回?sup>[2]?
3.1 创徏BEA TUXEDO客户端程?/div>
      客户E序一般执行如下Q务:
      ?调用tpchkauth()军_加入一?a >应用E序所需的安全别。可能出现的响应包括Q没有安全别,应用E序口oQ应用程序授权,讉K控制列表Q连接加密Q公钥加密,审计。这些可以根据你的需求进行选择Q?/div>
      ?调用tpinit()来连接到一个BEA Tuxedo应用E序Q所需的安全信息作为tpinit()的参Cl了应用E序Q?/div>
      ?执行服务hQ?/div>

      ?调用tpterm()来断开和BEA Tuxedo应用E序的连接?/div>
客户端程序调用流E如?所C:
?  创徏BEA TUXEDO客户端程?/div>
3.2 创徏BEA TUXEDO服务端程?/div>
      服务E序一般执行如下Q务:
      ?在BEA Tuxedo服务E序启动Ӟ执行tpsvrinit()函数Q可以在里面打开一些如数据库之cȝ资源供以后用;
      ?在BEA Tuxedo服务E序关闭Ӟ执行tpsvrdown()函数Q可以在里面关闭tpsvrinit()中打开的资料;
      ?BEA Tuxedo服务E序以服务的形式来响应客L(fng)序的hQ客L(fng)序不是通过名字来调用服务程序的Q而是调用服务Q客L(fng)序不知道处理它请求的服务E序的位|;
      ?服务E序调用tpreturn()函数来结束服务请求,q返回一个缓冲区Q必要时Q将它传l客L(fng)序;

      服务端程序调用流E如?所C:
? 创徏BEA TUXEDO服务端程?/div>
4 BEA TUXEDO通讯~冲区:
     TUXEDO之间通过l一定义的类型缓冲区q行通讯Q类型缓冲区可以使应用跨不?a >|络、不同协议、不同CPU构架以及不同操作pȝ之间得到l一的处理,q就使得开发者在分布?a >计算环境中有效地避开了异构网l和异构计算机系l带来的差异Q只需q行商业逻辑的开发上。通讯~冲区结构如?所C:

?  TUXEDO通讯~冲?/div>
     BEA TUXEDO提供以下几种通讯方式[3]Q?/div>
     ?nbsp;同步h/应答通信
     ?nbsp;异步h/应答通信
     ?nbsp;嵌套调用通信
     ?nbsp;转发调用通信
     ?nbsp;会话通信
     ?nbsp;消息通告通信
     ?nbsp;Z事g通信
     ?nbsp;队列通信
     ?nbsp;事务控制通信
l束语:
     随着pȝ的规模不?a >发展Q对pȝq行有效分布式处理,提高资源利用率的要求来高Q因此从客户/数据库方案{变到三层客户/应用pȝ/数据服务器结构是业界发展的趋ѝ本文讨Z主要中间件架构的优势Qƈ分析了中间g产品BEA TUXEDO的开发模式和特点。分析BEA TUXEDO常见的通讯方式Q包括同步请?应答通信、异步请?应答通信、嵌套调用通信、{发调用通信、会话通信、消息通告通信、基于事仉信、队列通信、事务控刉信的方式,q结合通讯方式分析了TUXEDO的客服程序和服务E序伪代码和部分ATMI函数?/div>
 
1 BEA Tuxedo 8.0 Documentation for the e-generation e-docs.bea.com
2 徐春? TUXEDO中间件开发与配置[M]. 中国?sh)力出版C?/div>
3 Chris Britton. IT体系l构与中间g——徏讑֤型集成系l的{略[M]. 人民邮电(sh)出版C?/div>

Prayer 2008-12-11 15:46 发表评论
]]>BCB 客户?tuxedo 开发实?http://www.shnenglu.com/prayer/archive/2008/12/11/69167.htmlPrayerPrayerThu, 11 Dec 2008 07:07:00 GMThttp://www.shnenglu.com/prayer/archive/2008/12/11/69167.htmlhttp://www.shnenglu.com/prayer/comments/69167.htmlhttp://www.shnenglu.com/prayer/archive/2008/12/11/69167.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/69167.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/69167.htmlBCB 客户?tuxedo 开发实?br>-supermgr

在BCB中怎样使用tuxedo呢?

本文l出了一个例子?/span>

然而,q个例子在后来被证明q是有点问题的,

是在tpcall调用后,无法释放dllQ而且会出错?/span>

q一问题咨询qtuxedoQ多年q去了,我还没有

得到问题的解?/span>

 

tuxedo 的函数很多,所有应用都使用其中子集。这些函数子集包含在开?/p>

包中一定的动态库中。下面以

tpinit,tpcall,tpterm,tpfree,tpalloc,Fget32,Fchg32,FLDOCC32 几个函数?/p>

例介l一下在该子集下的编E方式。(不是很准哟)

1、首?扑ֈq些函数所在的动态库。经q解析发C上函数包?nbsp;       

    在wtuxws32.dllQlibfml32.dll 两个动态库中。多好,有了q两个动

   态库Q应用程序发行时Q带上他们就可以了。再也不会出?操作pȝ弹出

   的动态库定位错误了?且慢Q后l研I发玎ͼ光有q两个dll不行Q他?/p>

   的运行还需如下6个dllQlibbuft.dllQlibengine.dllQlibfml.dllQ?br> 
   libgpnet.dllQlibtux.dllQlibwsc.dll?哈哈。ȝ解析完了?/p>

   好,把这些文件copy出来到自q工程目录下。多。赶紧进入下一步?/p>

2、配|编译环境。这很重要。ؓ使大家编E方便,我们做些动作。在

   BCB 的安装目录下Q即$(BCB)标识的目录)建立tuxedo\目录Q将

   tuxedo开发包中的 \bin\,\include\,\lib\几个目录拯到该目录下?br>  
   然后Q在Option|Directories/Conditionals中设|?br>  
    Include Path :   $(BCB)\Tuxedo\include
    Library Path :   $(BCB)\Tuxedo\lib
   
    好了Q环境设|好了。在你的工程中include :
    #include <atmi.h>
    #include <fml32.h>
    #include <tmenv.h>
   
    哦,他们三个文g实在太重要了Q不包含q来你会后?zhn)?)
   
3、徏立一个tuxedo子集函数l构。ؓ什么这样做呢,直接使用tuxedo函数

   不好吗? q没什么的Q依个h~程环境而定。我?fn)惯于在l构名下
  
   使用q些 外来开发包中的函数Q因Z对他们不是很熟,有时会遗?br>  
   其名Uͼ其攑֜l构中,利用BCB自动提示功能Q你可以很Ҏ(gu)
  
   扑ֈQ想P需要的函数了。我定义的结构如下:
  
 typedef
 struct _FunTuxedo
 {
 
  int
  (_TMDLLENTRY *
  tpcall)(char _TM_FAR *,
   char _TM_FAR *,
   long ,
   char _TM_FAR * _TM_FAR *,
   long _TM_FAR *,
   long );
   
  int
  (_TMDLLENTRY *
  tpinit)(TPINIT _TM_FAR *);
  
  int
  (_TMDLLENTRY *
  tpterm)(void);
  void
  (_TMDLLENTRY *
  tpfree)(char _TM_FAR *);
  
  char *
  (_TMDLLENTRY *
  tpalloc)(char _TM_FAR *,
      char _TM_FAR *,
      long);
  
  int
  (_TMDLLENTRY *
  Fget32)(FBFR32 _TM_FAR *,
     FLDID32,
     FLDOCC32,
     char _TM_FAR *,
     FLDLEN32 _TM_FAR *);
  
  
  int
  (_TMDLLENTRY *
  Fchg32)(FBFR32 _TM_FAR *,
     FLDID32,
     FLDOCC32,
     char _TM_FAR *,
     FLDLEN32);
  FLDOCC32
  (_TMDLLENTRY *
  Foccur32)( FBFR32 _TM_FAR *,
    FLDID32);
  
  HMODULE hLibfml32; // libfml32.dll 动态库句柄
  HMODULE hWtuxws32; // wtuxws32.dll 动态库句柄
 
 }FUNTUXEDO,*PFUNTUXEDO;
 
    q里Q我两个动态库句柄加入Cl构中,是因为我打算动态?br>   
   tuxedo中间件。方便我释放他们。,下一节介l装?释放他们
  
4 装蝲、释放中间g(ZFUNTUXEDOl构)

   哈,q很Ҏ(gu)Q主要用到LoadLibrary,FreeLibrary,GetProcAddress
  
   三个函数。装载代码如下:
  
    PFUNTUXEDO pFun;      
 
    //Loading Fchg32, Fget32 by LIBFML32.DLL
    pFun->hLibfml32 = LoadLibrary(libfml32.dll);
    if (pFun->hLibfml32 == NULL)
    {
     return -1;
    }
   
    (FARPROC &)pFun->Fchg32
     =(FARPROC)GetProcAddress(pFun->hLibfml32,Fchg32);
    (FARPROC &)pFun->Fget32
     =(FARPROC)GetProcAddress(pFun->hLibfml32,Fget32);
 (FARPROC &)pFun->Foccur32
     =(FARPROC)GetProcAddress(pFun->hLibfml32,Foccur32);       
           
    if (pFun->Fchg32 == NULL || pFun->Fget32 == NULL || pFun->Foccur32 == NULL)
    {
     FreeLibrary(pFun->hLibfml32);
        pFun->hLibfml32 = NULL;
     return -2;
    }
 //Loading tpacall, tpalloc, tpfree, tpinit, tpterm by WTUXWS32.DLL
 pFun->hWtuxws32 = LoadLibrary(wtuxws32.dll);
    if (pFun->hWtuxws32 == NULL)
    {
     FreeLibrary(pFun->hLibfml32);
        pFun->hLibfml32 = NULL;       
     return -3;
    }   
       
    (FARPROC &)pFun->tpcall
     =(FARPROC)GetProcAddress(pFun->hWtuxws32,tpacall);                                 
    (FARPROC &)pFun->tpalloc
     =(FARPROC)GetProcAddress(pFun->hWtuxws32,tpalloc);
    (FARPROC &)pFun->tpfree
     =(FARPROC)GetProcAddress(pFun->hWtuxws32,tpfree);
    (FARPROC &)pFun->tpinit
     =(FARPROC)GetProcAddress(pFun->hWtuxws32,tpinit);
    (FARPROC &)pFun->tpterm
     =(FARPROC)GetProcAddress(pFun->hWtuxws32,tpterm);        
                       
    if (pFun->tpcall == NULL || pFun->tpalloc == NULL ||
     pFun->tpfree == NULL || pFun->tpinit  == NULL ||
        pFun->tpterm == NULL)
    {
     FreeLibrary(pFun->hLibfml32);
        pFun->hLibfml32 = NULL;       
        FreeLibrary(pFun->hWtuxws32);
 pFun->hWtuxws32 = NULL;
        return -4;
    }    
  
   释放时很单,只需
        FreeLibrary(pFun->hLibfml32);         
        FreeLibrary(pFun->hWtuxws32);
   卛_?/p>

(注:传统情况下,FreeLibrary(DllHandle) 是不会出问题的。但?/p>

BEA 公司 ?q些dll面前Qms ?FreeLibrary ׃行了Q当应用E序

退出时Q会有非法地址讉K的问题。我查过数次Q只要一l调用tpcall

Q退出时׃有问题?

  折衷的办法是 使用 try-catchQ释放时不用FreeLibrary,

而在应用E序退出时Q最后?FreeLibraryAndExitThread,否则即

你用FreeLibrary 也没法通过 catch 捕捉到异常。呵c?/p>


   
 5、用。例Q?..的内Ҏ(gu)帮助吧?br> 
    PFUNTUXEDO pFun;   
    char *pSendBuff;
    char *pRecvBuff;
    long lRet;
    short sRet;
    int iRet;    
   
   
    //中间件服?br>   
    pSendBuff = pFun->tpalloc(...);
    if (pSendBuff == NULL)
    {
     return ERR_TUXEDO;
    }
   
    pRecvBuff = pFun->tpalloc(...);
    if (pRecvBuff == NULL)
    {
     pFun->tpfree(pSendBuff);
        return ERR_TUXEDO;
    }
   
    try
    {   
    iRet = pFun->Fchg32(...);
    if (iRet == -1)
    {
     throw(1);
    }                   
   
    //建立q接
    iRet = pFun->tpinit(NULL);
    if (iRet == -1)
    {
     throw(2);
    }                       
     
    iRet = pFun->tpcall(...);
    if (iRet == -1)
    {
     throw(3);
    }     
   
    iRet = pFun->tpterm();
    if (iRet == -1)
    {
     throw(4);       
    }
    iRet =pFun->Fget32(...);
    if (iRet == -1)
    {
     throw(4);       
    }                         
   
    pFun->tpfree(pSendBuff);
    pFun->tpfree(pRecvBuff);
   
    }
    catch(int Err)
    {                   
     pFun->tpfree(pSendBuff);
  pFun->tpfree(pRecvBuff);
        return Err;
    }
    catch(...)
    {
     return ERR_UNKNOWN;
    }   

    //q里可以处理接收到的数据l果
    //...  
     
6、编译?/p>

 

注意Q?span id=CommnetList1_CommnetList1_rpCommentList__ctl0_lblContent>q里有一个问题。当tpcall后,释放dllӞ有一炚w烦?/span>

后来发现的?/p>

2003-7



Prayer 2008-12-11 15:07 发表评论
]]>
Tuxedo常用的命?/title><link>http://www.shnenglu.com/prayer/archive/2008/12/09/68931.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Tue, 09 Dec 2008 05:38:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2008/12/09/68931.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/68931.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2008/12/09/68931.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/68931.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/68931.html</trackback:ping><description><![CDATA[<br> <div id="ulznbmh" class=articleText>中间件系l检?br>1.日志查清理。检查Tuxedo日志Q用vi命o查看日志文g内容Q检查有无Tuxedopȝ出错记录Q检查有无服务异帔R误记录;查有无服务被重v记录Q对发现的异常记录进行分析;若无异常情况清除无用的历史日志?br>2. 服务器运行情c检查Tuxedopȝ和应用的服务器的q行情况Q用“ps Qelf|grepserver名”查看q程相关信息Q如q行旉、占用内存大等Q用tmadmin命令检查看服务器运行情况,执行psr监控服务器q?行情况,查看处理的请求数目、忙闲程度?br>3. service运行情c检查serviceq行情况Q用tmadmin命令中的psc命o查看Q_xedo各service的运行情况和处理的交易数?br>4. 队列使用情况。检查Tuxedo队列的使用情况Q用tmadmin命令中的pq命令查看Tuxedo各server队列的用情况,主要查看交易高峰期队列中消息的增加情况,定是否存在d现象Q是否需要对服务数进行调整?br>5. 客户接情c检查TuxedoElient的q接情况Q用tmadmin命令中的pclt命令查看Tuxedo各客户机的q接情况Q检查݋QQLQIQT参数是否_QLicence数是否满_ƈ发要求?br>6 .配置参数配置。检查Tuxed?ubbconfig文件和dmconfig文gQ根据以上各Ҏ(gu)查结果,查看Q_xedo配置文g是否需要调整优化,以中间件^台良好运行,保存配置文gq归档备案?br>7. pȝ核心参数配置。检查操作系l核心参数配|是否满目前应用系l规模要求,是否需要调_Ҏ(gu)具体使用的操作系l提供的命o查看核心参数?/div> <div id="uhgjilz" class=articleText>8. tmunloadcf 可以导出 ubb 文g, tmloadcf 加蝲ubb 文g</div> 9. tmboot 启动, tmshutdown 关闭, 当然q有很多参数 比如 -y -i -s {? <img src ="http://www.shnenglu.com/prayer/aggbug/68931.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2008-12-09 13:38 <a href="http://www.shnenglu.com/prayer/archive/2008/12/09/68931.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tuxedo~译http://www.shnenglu.com/prayer/archive/2008/12/09/68913.htmlPrayerPrayerTue, 09 Dec 2008 02:51:00 GMThttp://www.shnenglu.com/prayer/archive/2008/12/09/68913.htmlhttp://www.shnenglu.com/prayer/comments/68913.htmlhttp://www.shnenglu.com/prayer/archive/2008/12/09/68913.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/68913.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/68913.html~译客户E序

buildclient -o clnt -f cl.c

 

~译服务E序

buildserver -o simpserv -f srv.c -s TOUPPER

 

启动服务E序

tmboot –y

 

buildclient -o clnt -f cl.c

-o:指定生成的目标文件名

-f:指定要编译的源程?/p>

~译服务E序

buildserver -o simpserv -f srv.c -s TOUPPER

-o:指定生成的目标文件名

-f:源程?/p>

-s:提供pȝ启动时的tuxedo服务名称

说明:buildclient和buildserver没有~译能力,要编译tuxedo应用E序,需要安装第三方的编译器,如cc



Prayer 2008-12-09 10:51 发表评论
]]>
tuxedo客户端程序主要流E?/title><link>http://www.shnenglu.com/prayer/archive/2008/12/09/68908.html</link><dc:creator>Prayer</dc:creator><author>Prayer</author><pubDate>Tue, 09 Dec 2008 02:18:00 GMT</pubDate><guid>http://www.shnenglu.com/prayer/archive/2008/12/09/68908.html</guid><wfw:comment>http://www.shnenglu.com/prayer/comments/68908.html</wfw:comment><comments>http://www.shnenglu.com/prayer/archive/2008/12/09/68908.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/prayer/comments/commentRss/68908.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/prayer/services/trackbacks/68908.html</trackback:ping><description><![CDATA[  <p style="FONT-SIZE: 10pt">客户端程序主要流E:</p> <p style="FONT-SIZE: 10pt">1.tpinitq接TUXEDO服务?</p> <p style="FONT-SIZE: 10pt"></p> <p style="FONT-SIZE: 10pt">2.开辟数据缓冲区 </p> <p style="FONT-SIZE: 10pt"></p> <p style="FONT-SIZE: 10pt">3.要传给service的数据放入缓冲区 </p> <p style="FONT-SIZE: 10pt"></p> <p style="FONT-SIZE: 10pt">4.tpcall调用服务。指定服务名,发送数?q接收返回数据。(q里仅以同步调用ZQ?</p> <p style="FONT-SIZE: 10pt"></p> <p style="FONT-SIZE: 10pt">5.tpfree释放~冲?</p> <p style="FONT-SIZE: 10pt"></p> <p style="FONT-SIZE: 10pt">6.tpterm退出应用,断开q接?</p> <img src ="http://www.shnenglu.com/prayer/aggbug/68908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/prayer/" target="_blank">Prayer</a> 2008-12-09 10:18 <a href="http://www.shnenglu.com/prayer/archive/2008/12/09/68908.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tuxedo介绍http://www.shnenglu.com/prayer/archive/2008/09/01/60589.htmlPrayerPrayerMon, 01 Sep 2008 06:07:00 GMThttp://www.shnenglu.com/prayer/archive/2008/09/01/60589.htmlhttp://www.shnenglu.com/prayer/comments/60589.htmlhttp://www.shnenglu.com/prayer/archive/2008/09/01/60589.html#Feedback0http://www.shnenglu.com/prayer/comments/commentRss/60589.htmlhttp://www.shnenglu.com/prayer/services/trackbacks/60589.html1.1     中间件介l?br>介于客户Z服务器之间的夹层Q它H破了二层C/Sl构的局限性,为构建大?br>模、高性能、分布式C/S应用E序提供了通信、事务、安全、容错等基础服务Q它屏蔽了底层技术细节,使应用程序开发不必再从底层做P以自w的复杂性换来了应用E序开发的单?br>
最早具有中间g技术思想及功能的软g是IBM的CICSQ但׃CICS不是分布式环境的产物Q因此h们一般把Tuxedo作ؓW一个严格意义上的中间g产品。Tuxedo?984q在当时属于AT&&T的贝?dng)实验室开发完成的Q但׃分布式处理当时ƈ没有在商业应用上获得像今天一L(fng)成功QTuxedo在很长一D|期里只是实验室品,后来被Novell收购Q在l过Novellq不成功的商业推q之后,1995q被现在的BEA公司收购。尽中间g的概念很早就已经产生Q但中间件技术的q泛q用却是在最q?0q之中。BEA公司1995q成立后收购Tuxedo才成Z个真正的中间件厂商,IBM的中间gMQSeries也是90q代的品,其它许多中间件品也都是最q几q才成熟h?单提一下东斚wTongLINKQTONGEASY.
TUXEDOZ易中间g?br>1.2 TUXEDO是什?br>TUXEDO名字的由?
Transaction for UNIX has been Extended for Distributed OperationQ即被分布式操作扩展之后的UNIX事务pȝ ?br>BEA TUXEDO是在企业、Internet q样的分布式q算环境中开发和理三层l构的客 ?服务器型关键d应用pȝ的强有力工具。它具备分布式事务处理和应用通信功能Qƈ提供完善的各U服务来建立、运行和理关键d应用pȝ。开发h员能够用它徏立跨多个gq_、数据库和操作系l的可互操作的应用系l?
在当今系l整合、全球应用、永q可用的业务环境中,企业要求分布式事务处理(TPQ的基础l构Q不仅能够充分发挥现有技能和应用资的作用,而且q要具备Z标准的互操作性以化集成?br>BEA Tuxedo 是当?C?C++ ?COBOL 解决Ҏ(gu)的首选^台。它q行着一些最大型的关键Q务事务处理系l,如有U传输、ATM和电(sh)信。它是许多世界领先公司的支柱?br>只有 BEA Tuxedo 才能提供q样强大的^収ͼ满在分布式异构计算环境下运行如此大量应用的需求;它能够事务在全球范围内跨Q何系l,从面向客L(fng)关键d应用延到后台处理?br>BEA Tuxedo 是一U多语言、可L伸羃的事务处理^収ͼ它提供了用户为实C列目标所必需的Q务关键型基础l构Q?
•     增强现有应用的可讉K?
•     整合企业事务处理和消息传递解x?
•     采用Web 服务的核心应?
•     保应用最高的可用性和吞吐?
•     提升处理效率Q改善资源管?
•     降低M拥有成本

用我们更加通俗的语a描述,tuxedo有以下五大功能:
•       应用开发^?br>ATMI函数QAPI接口函数Q?br>•       BUFFER
•       应用部vq_
UBBQTUXEDO的系l信息存攑֜׃n内存Q?br>•       应用q行q_
NATIVE本机
WORKSTATIONQ?WSQ远ECLIENT
MPQClasterQ?br>•           DOMAIN
•       应用理q_
命o行COMMAND LINE
囑Ş理界面GUI
•           MIB理信息?br>•       应用互联q_
JOLT,WTC与WEBLOGIC互联
•           ELINK与已有系l互?br>
1.3 TUXEDO的历史以及现?br>?    1983QBell实验室的AT&T分部
?    命名为UNITSQUnix Transaction SystemQ?br>?    UNITS Q?gt; TUXQTransaction for UNIXQ?br>?    用于构徏AT&T内部ZUNIXpȝ?BSS
?    1984QTUX应用于LMOS目
?    LMOS是一个跟t电(sh)话电(sh)路维修事件的应用E序
?    ׃用户数据量增加,TUX引入了DUXQDatabase for UNIX Q?
?    ׃q发用户数增加,TUX引入了C/S框架l构
?    TUX3.0应用于AT&T内部?B4000计算机时Q正式定名ؓTuxedo
?    1989QAT&TQ?gt;USLQTuxedo正式以商业目的出?br>?    1993QUSL->NOVELLQ用hQ?00
?    1996QNOVELL->BEAQ用hQ?000
?    用户量猛增,占有70%的市Z额,成ؓ交易中间件事实上的标?br>
日前BEA推出了Tuxedo 9.0版本。我们就目前使用最多的8.1版本q行分析。新版Tuxedo实现了对Web服务的全面支持,同时Q凭借与BEA WebLogic Enterprise PlatformTM的良好集成,BEA Tuxedo能够显著化Web服务的开发,q将Tuxedo“面向服务”的体pȝ构g伸至Web。新版BEA Tuxedo延箋了对包括C、C++、COBOL在内的多语言支持Q该产品仍将是BEA产品pd乃至其全面的应用基础架构{略的关键组成部分。借助Tuxedo与WebLogic Server及WebLogic Workshop更ؓ紧密的集成,客户能够L地将其关键业务应用扩展成为标准的Web服务。不仅如此,更加紧密的集成BEA Tuxedo 8.1的操作、管理和l护更加完善Q其中包括对单点d和集中安全管理的支持?br>  8Q?发布增强了比如支持XMLQ加Z全局事务控制Q域QgatewayQDomainQTUXCONFIG{?br>
1.4 TUXEDO的体pȝ?br>面对更大规模的关键业务应用,如要q行有效的分布式处理Q就要求从客?数据库方案{变到三层 客户/应用pȝ/数据服务器结构。以后者ؓ核心的组件Y?模型是客?服务 器计的拓展Q它支持应用分区Q能有效地开发和调度应用业务逻辑Q管理分布式应用的可靠执行?br>BEA TUXEDO 采用三层l构的组件Y件模型。优势如下:
分开表达逻辑Q业务逻辑Q数据逻辑?br>BEA TUXEDO以服务ؓ中心 而不是以SQL(数据)Z?br>大ƈ发用h支持Q三层结构(资源合理调配Q?br>
1.5 TUXEDOpȝ的开放?br>•     M开攑ַ?br>•     M语言
•     M遵@ XA 的资源管理器
•     Mgq_
•     M操作pȝ
•     M|络

1.6 TUXEDOq_支持
BEA TUXEDO是一个非常开攄q_Q支持五十多U硬件和操作pȝq_Q包括大?br>数的 UNIX服务?QW(xu)indowsNT 服务?IBM的S/370,S/390, 加上AS/400?Tandem公司?NonStoppȝ。它的客h持几乎所有的工作站,包括 UNIX,MS-DOS,Windows3.1/95, Windows NT, OS/2,Macintosh{? 
BEA TUXEDO支持X/Openl织 的分布式 事务 ??模型DTPQ事务定界标准TX, 应用E序事务处理接口标准XA TMI以及 和资?理 ?Q像数据库系l)的接口标准XAQƈ且还支持事务处理器之间的互操作标准OSI-TP?BEA TUXEDO的客L(fng)通过DLL 可以和Visual C++、Visual Basic?Power Builder?SQL Windows、Delphi、Develop/2000 以及其他4GL和CASE 工具互连?br>此外QBEA TUXEDOq得到其他第三方开发管理工具厂商的支持?br>无论从市Z额、技术体制、品历双Ӏ成功案例来看,毋庸|疑的世界第一的品;
拥有企业U应用所必须的一切底层功能;极强的动态部|Ӏ自适应调整能力Q完全的W三方独立品,支持业界几乎所有的L、数据库厂商?br>
1.7 WEB服务技术发展现状与WTC介绍
  Web Services领域的两个主要的应用框架J2EE?NET是正面竞争的两个强大的^収ͼ然而在Web Services的技术支持下Q同时它们也是能够互相融合和集成的应用部|环境。Microsoft .NET与Sun J2EE是目前企业Web Servicesq_市场上两个最重要的应用框?Application Framework)?br>  在对Web Services的支持上QMicrosoft?NET在设计之初就紧紧地把q_规范与品胶合在一赗不q随着.NET架构中的C#、CLI{逐渐标准化,.NET也正在向J2EE的模式靠拢?br>  J2EE做ؓ一U开攄规范Q从一开始就得到了众多厂商的支持Q如IBM、BEA、HP、Oracle{在J2EE的实施上都洒下了大笔的投资。目前市Z最好的J2EE Application ServerQƈ不是Sun与Netscape合资的iPlanetQ而是Bea的WebLogic和IBM的WebShpere?br>
WebLogic Tuxedo Connector (WTC):
׃BEA Tuxedo ?BEA WebLogic Platform 之间通过 WebLogic Tuxedo Connector (WTC)实现了紧密集成,因此QIT 部门可以L地扩展和?BEA Tuxedo 服务与新的和现有?J2EE 解决Ҏ(gu)集成在一赗利用双向对{协议, WTC 完全支持BEA Tuxedo C、C++、COBOL 应用?BEA WebLogic Server 、Platform J2EE工具与应用之间的事务和安全性传播(非代理事务)?br>ȝQ?br>通过WTC实现与WEBLOGIC SERVER的集?br>其它JAVA产器可以通过JOLT讉KTUXEDO提供服务
---------------------------------------------------------------------------------------------
相关|站Q?/font>dev2dev的Tuxedo资源


Prayer 2008-09-01 14:07 发表评论
]]> þ˾Ʒһ| 69SEXþþƷ鶹| 㽶99þùۺϾƷլ | þþþþþþþѾƷ | Ʒþҹҹ³³| þ99Ʒþ99ý| ŷƷһƷþ| þþþþùaѹۿ| þþþþþþþþ| AVþþƷɫ| Ʒһþ㽶߿| þҹӰ| þþһƷ99þþƷ66| þúݺɫݺɫۺ| ҹƷþþþ| þþƷ޾Ʒ2020 | 99Ʒ99þþþþ97| 97þþþ޾Ʒר | 뾫Ʒþþþ| һƷ˾þ | ƷѾþþþõӰ| ղƷþþþþþ| ۲ӰԺþ99| Ļþи| Ӱһþҹײ | þ99Ʒ鶹| ľþþƷ| þþþþݴۺϾƷ| Ʒþþþù| þþþþþþþþþƷ| þþþӰԺС| þþƷɧ| þþоƷ| Ʒþþþþ| Ʒþ8xѹۿ| þҹ³˿Ƭϼ| þþWWW| ƷۺϾþõһҳ| ݺɫۺþö| ޾Ʒtvþþþþþþ | þþþþþ|