中间件 定义:中间件是介于应用与操作系统之间的系统软件,是相关应用的基准平台 三大基础软件:操作系统、数据库、中间件 消息中间件MOM(BEA MessageQ、IBM MQSeries、TongLink/Q、Microsoft MSMQ)、交易中间件TPM (Tuxedo、TXSeries、TongEasy)、对象中间件(Corba、COM、MTS)
TPM中间件 Transaction Process Monitor 支持联机交易服务(OLTP) 提供用户实时的交易请求与响应 支持分布式交易服务 支持多个数据源、异种数据源、和分布式协同应用,支持两阶段提交
CICS三层结构
南京医保前台三层结构
分布式系统CICS (TXSeries)的历史 1969年IBM CICS (Customer Information Control System)第一版发布 1993年IBM推出UNIX平台的CICS产品,最终命名为TXSeries 1999年IBM发布WebSphere EE,即TXSeries 4.3 2002年IBM发布TXSeries 5.0 2004年IBM发布TXSeries 5.1 2005年IBM发布TXSeries 6.0 2006年11月IBM发布TXSeries 6.1 2007年底IBM发布TXSeries 6.2
TXSeries 6.2安装 Windows 2003、Windows XP 安装:TXSeriesV62-windows.exe 去掉DCE, Encina等组件 无须再启动DCE,但SFS仍保留 增加Web控制台 XA容错性增强
TXSeries 6.2配置-环境变量 set NLSPATH=C:\opt\cics\MSG\en_US\@N set CICSNLS=C:\opt\cics\MSG\en_US\@N set LANG=zh_CN set CICSPATH=c:\opt\cics set CICS_SFS_SERVER=/.:/cics/sfs/VMWINXP set CICS_SFS_SIZE=128 set ORACLE_HOME=C:\oracle\ora92 set ORACLE_SID=ORA92 set CICS_PROGRAM_PATH=C:\var\cics_regions\CICS01\bin
TXSeries 6.2配置-Region SFS(Windows下会自动创建) 创建 region cicscp -v create region CICS01 DefaultFileServer=%CICS_SFS_SERVER%
TXSeries 6.2配置-监听 icsadd -c ld -r CICS01 L1435 Protocol=TCP TCPAddress="" TCPService="cics_1435" 在 %system32%\drivers\etc\services 中增加 cics_1435 1435/tcp
TXSeries 6.2配置-用户管理 cicsadd -c ud -r CICS01 TEST CICSPassword=TEST
TXSeries 6.2配置-XA nmake –f oracle1pc.mk Oracle cicsadd -c xad -r CICS01 OraXA SwitchLoadFile="oracle1pc" XAOpen="OraXA+Acc=P/Devu@NJYB161/les1028"
分布式事务 XA:XA接口标准是事务处理系统与数据库服务器的事务管理接口 一阶段、二阶段
TXSeries 6.2启动与停止 cicscp -v start sfs_server %CICS_SFS_SERVER% StartType=cold cicscp -v start region CICS01 StartType=cold cicscp -v stop region CICS01 cicscp -v stop sfs_server %CICS_SFS_SERVER%
CICS服务程序开发 #include <time.h> #include "easycics.h" void main(){ struct tm *newtime; time_t aclock; if( InitEasyCics() ) ExitEasyCics(); BeginWrite(); time( &aclock ); /* Get time in seconds */ newtime= localtime( &aclock ); /* Convert time to struct tm form */ SetValue( "TIME", asctime(newtime) ); PrintStatus("GETTIME"); ExitEasyCics(); }
CICS服务程序开发 set EC_SRV=C:\gettime\srv nmake -f easycics.win.mk nmake -f gettime.win.mk cicsadd -B -c pd -r CICS01 gettime PathName="gettime.dll" RSLKey=public
CICS服务程序开发-EasyCICS 参考easycics.h文件 InitEasyCics(); GetValue(); BeginWrite(); RsCreate(); RsAddRow(); RsSetCol(); RsSaveRow(); ExitEasyCics();
CICS客户程序开发 #include "ec.h" void main(){ char s[200]; int r; r= ConnectServer( "NJ_186", "TEST", "TEST" ); printf( "ConnectServer: return code= %d\n", r ); r= CallProgramAndCommit("GETTIME"); printf( "CallProgramAndCommit: return code= %d\n", r ); GetValue( "TIME", s ); printf( "Server Time= %s\n", s ); }
CICS客户程序开发 set EC_CLI=X:\CICS\Client\Get2K set path=%path%;X:\CICS\Client\Get2K nmake -f gettime.nmk
CICS客户程序开发 多线程客户端DllEcx.dll dllCreateHandleX dllConnectServerX dllBeginWriteX dllSetValueX dllCallProgramAndCommitX RsOpen dllRsGetRowNumX、dllRsGetColNumX、dllRsFetchRowX、dllGetValueX、dllRsGetColX RsClose dllDisConnectX dllDestroyHandleX
CTG、CUC CTG:CICS Transaction Gateway CUC:CICS Universal Client CTG包含了CUC和Java Gateway