Google

Saturday, October 16, 2004

Glance of BEA Tuxedo

Viewpoint from ITPUB

Wednesday, October 13, 2004

Demo of Delphi calling Tuxedo

procedure TForm1.Button1Click(Sender: TObject);
LongInt ): Pointer; stdcall;
var
SndBuf : PTFbfr;
RcvBuf :PTFbfr;
ret :integer;
lBillCount :longint;
fRecNum :single;
fDeposit:single;
lNumLong:longint;

BILLCOUNT,RECNUM,DEPOSIT,NUMLONG :FLDIDD32;
SvcName:array[1..20] of char;
Ilen: LongInt;
Olen: PLongInt;
lFlag :longint;
Tpinfo: PTTpinit;
begin
tuxputenv('WSNADDR=//wsy:6060');
Tpinfo :=nil;
ret := tpinit(Tpinfo);
if (ret < 0) then
begin
application.MessageBox(pchar(inttostr(ret)),'tpinit error',MB_OK);
application.MessageBox(pchar (inttostr(gettperrno)),'tpinit error',MB_OK);
end;
SndBuf := tpalloc('FML32',nil,1024);
if (SndBuf = nil) then
begin
application.MessageBox('','error in tpalloc SndBuf',MB_OK);
tpterm();
exit;
end;
RcvBuf := tpalloc('FML32',nil,1024);
if (RcvBuf = nil) then
begin
application.MessageBox('','error in tpalloc RcvBuf',MB_OK);
tpfree(pchar(Sndbuf));
tpterm();
exit;
end;

BILLCOUNT :=33556580;
lBillCount := 1680;
Value: Pointer; Len: FLDLEN32 ): Integer; stdcall;
ret :=Fchg32(SndBuf,BILLCOUNT,0,@lBillCount,0);
if (ret < 0) then
begin
application.MessageBox('Fchg32 long error','Fchg32 long error',MB_OK);
tpfree(pchar(SndBuf));
tpfree(pchar(RcvBuf));
tpterm();
exit;
end;
RECNUM := 100665536;
fRecNum := 60.96;
ret :=Fchg32(SndBuf,RECNUM,0,@fRecNum,0);
if (ret < 0) then
begin
application.MessageBox('Fchg32 long error','Fchg32 double RECNUM error',MB_OK);
tpfree(pchar(Sndbuf));
tpfree(pchar(RcvBuf));
tpterm();
exit;
end;
Ilen := 0;
Olen := 0;
lFlag :=0;
{
strcopy(@SvcName,pchar( 'FMLTMP'));
ret := tpcall (@SvcName,pchar(SndBuf),Ilen,@SndBuf,Olen,TPNOTRAN);
}
ret := tpcall ('FMLTMP',pchar(SndBuf),0,@SndBuf,0,0);
if (ret < 0) then
begin
application.MessageBox(pchar(inttostr(ret)),'tpcall error',MB_OK);
application.MessageBox(pchar (inttostr(gettperrno)),'tpcall error',MB_OK);
application.MessageBox(tpstrerror(gettperrno),'tpcall error',MB_OK);
tpfree(pchar(SndBuf));
tpfree(pchar(RcvBuf));
tpterm();
exit;
end;
DEPOSIT := 100665348;
ret := Fget32(SndBuf,DEPOSIT,0,@fDeposit,0);
if (ret < 0) then
begin
application.MessageBox(pchar(inttostr(ret)),'Fget32 float DEPOSIT error',MB_OK);
application.MessageBox(pchar (inttostr(gettperrno)),'Fget32 float DEPOSIT error',MB_OK);
application.MessageBox(tpstrerror(gettperrno),'Fget32 float DEPOSIT error',MB_OK);
tpfree(pchar(SndBuf));
tpfree(pchar(RcvBuf));
tpterm();
exit;
end;
application.MessageBox(pchar(floattostr(fDeposit)),'Fget32 float DEPOSIT value ',MB_OK);

NUMLONG := 33556847;
ret := Fget32(SndBuf,NUMLONG,0,@lNumLong,0);
if (ret < 0) then
begin
application.MessageBox(pchar(inttostr(ret)),'Fget32 long NUMLONG error',MB_OK);
application.MessageBox(pchar (inttostr(gettperrno)),'Fget32 long NUMLONG error',MB_OK);
application.MessageBox(tpstrerror(gettperrno),'Fget32 long NUMLONG error',MB_OK);
tpfree(pchar(SndBuf));
tpfree

Relationship between Tuxedo and Weblogic Server in B/S environment

中间件技术已经非常成熟了,并且出现了不同层次、不同类型的中间件产品,可以分为这么几类:消息中间件(Message Orient Middleware, MOM),交易中间件(Transaction Processing, TP),对象中间件(Object Momitor),应用服务器(Application Server),企业级应用集成(Enterprise Application Intergration, EAI),安全中间件。

BEA TUXEDO属于交易中间件,和消息中间件一样具有跨平台,跨网络的能力,但它的主要功能是管理分布于不同计算机上的数据一致性,协调数据库处理分布式事务,保障整个系统的性能和可靠性。交易中间件所遵循的主要标准是X/Open DTP模型。它适用于联机处理系统,如银行的ATM系统,电信的计费营收系统。其他主要产品有:IBM CICS、东方通科技TongEasy。

BEA WEBLOGIC属于应用服务器中间件,主要用来构造基于WEB的应用,是企业实施电子商务的基础平台。它一般是基于J2EE体系结构,让网络应用的开发、部署、管理变得更加容易,使开发人员专注于业务逻辑。其他主要产品有:IBM webshpere、Borland AppServer等,还有一些开放源代码的J2EE应用服务器,入JBOSS等。

Weblogic Server是市场占有率第一的Java应用服务器,它实现J2EE标准,在电子商务中广泛使用,是首选的电子商务平台(感觉有点儿想做广告)。在很多应用系统中,通常采用Tuxedo实现系统的核心业务,用Weblogic作为系统扩展到Internet的平台,实现电子商务,由Weblogic调用 Tuxedo上的服务(当然,反之也行)。Weblogic与Tuxedo的互连有两种方式,通过BEA公司的Jolt产品或Wtc产品,区别如下:

a.Jolt只能让Weblogic调用Tuxedo,Wtc不仅能让Weblogic调用Tuxedo中的Service,而且还能让Tuxedo调用Weglogic中的EJB。

b.Wtc只能用于Weblogic与Tuxedo之间的互连,Jolt可以使Tuxedo与Websphere等其他Java应用服务器互连。

c.Wtc在Weblogic 6.0之后才提供,如果是Weblogic 6.0之前的版本要与Tuxedo实现互连,只能通过Jolt。

Add servers dynamicly

在Tuxedo中提供了tmconfig命令,用于动态修改Tuxedo应用系统的配置。它的使用方法如下:

(1) 设置环境变量EDITOR:set EDITOR=c:\\winnt\\notepad.exe(当然,也可以指定其它比较流行的文本编译器,以下notepad为例)

(2) 在DOS方式下执行C:\tuxdemo\tmconfig命令。
Section:1)RESOURCES, 2)MACHINES,3)GROUPS, 4)SERVERS
5)SERVICES 6)NETWORK 7)ROUTING q)QUIT 9)WSL
10)NETGROUPS 11)NETMAPS 12)INTERFACES[1]:4

(3) 如果要对SERVERS节中进行操作,选择4。

(4) 在要进行的操作中选择4。
Operation: 1)FIRST 2)NEXT 3)RETRIEVE 4)ADD 5)UPDATE
6)CLEAR BUFFER 7)QUIT [1]: 4

(5) 在提示是否用指定的文本编辑器进行编辑时,选择Y。
Enter editor to add/modify fields [N]? y

(6) 在文本编辑器中输入(这些属性的含义请参考Tuxedo的联机文档):
TA_SERVERNAME D:\\TUXDEMO\\SIMPAPP\\simpserv.exe
TA_SRVGRP GROUP1
TA_SRVID 22

(7) 保存并关闭该文本编辑器。

(8)在下面的提示中选择Y,使改变生效。
Perform operation [y]?y
Return value TAUPDATED
Buffer contents:
TA_OPERATION 4
TA_SECTION 3
TA_STATUS Update completed successfully
TA_OCCURS 1
TA_BASESRVID 22
TA_GRACE 86400
TA_GRPNO 1
TA_MAX 1
TA_MAXGEN 1
TA_MIN 1
TA_RPPERM 438
TA_RQPERM 438
TA_SEQUENCE 10006
TA_SRVID 22
TA_STATE INACTIVE
TA_CLOPT -A
TA_CONV N
TA_ENVFILE
TA_RCMD
TA_REPLYQ N
TA_RESTART N
TA_RQADDR 00001.00022
TA_SERVERNAME D:\\TUXDEMO\\SIMPAPP\\simpserv.exe
TA_SYSTEM_ACCESS FASTPATH
TA_SRVGRP GROUP1

(9) 如果TA_STATE为INACTIVE,可选择4。
Section:1) RESOURCE, 2)MACHINES, 3) GROUPS 4)SERVERS
5)SERVICES 6)NETWORK 7)ROUTING q)QUIT 9)WSL
10)NETGROUPS 11)NETMAPS 12)INTERFACES[1]:4

(10) 选择5,对配置进行修改。
Operation: 1)FIRST 2)NEXT 3)RETRIEVE 4)ADD 5)UPDATE
6)CLEAR BUFFER 7)QUIT [1]: 5

(11) 在提示是否用文本编辑器进行编辑时,选择Y。
Enter editor to add/modify fields [n]? y

(12) 在文本编辑器中把INACTIVE改为ACTIVE,保存修改并退出文本编辑器。

(13) 在下面的提示中选择Y,使改变生效。
Perform operation [y]?y
Return value TAUPDATED
Buffer contents:
TA_OPERATION 5
TA_SECTION 3
TA_STATUS Update completed successfully
TA_OCCURS 1
TA_BASESRVID 22
TA_GRACE 86400
TA_GRPNO 1
TA_MAX 1
TA_MAXGEN 1
TA_MIN 1
TA_RPPERM 438
TA_RQPERM 438
TA_SEQUENCE 10006
TA_SRVID 22
TA_STATE ACTIVE
TA_CLOPT -A
TA_CONV N
TA_ENVFILE
TA_RCMD
TA_REPLYQ N
TA_RESTART N
TA_RQADDR 00001.00022
TA_SERVERNAME D:\\TUXDEMO\\SIMPAPP\\simpserv.exe
TA_SYSTEM_ACCESS FASTPATH
TA_SRVGRP GROUP1

(14) 选择q退出。
Section:1) RESOURCE, 2)MACHINES, 3) GROUPS 4)SERVERS
5)SERVICES 6)NETWORK 7)ROUTING q)QUIT 9)WSL
10)NETGROUPS 11)NETMAPS 12)INTERFACES[1]: q

(15) 如果要把修改保存到UBBCONFIG文件中,在下面的提示中输入UBBCONFIG文件名。
Unload TUXCONFIG file into backup UBB [y]? n

到此,通过tmconfig动态增加了一个Server。


[注意]:这种方法不是对所有的的修改都可以,如把原来不是MSSQ的改为MSSQ,就无法通过这种方式。

jlot client transaction handling

What is IIOPS

IIOP

Internet Inter-ORB Protocol. A protocol used for communication between CORBA ORBs over the Internet (TCP/IP).

IIOPS

IIOP layered over the SSL protocol.

For more details, refer to http://e-docs.bea.com/tuxedo/tux81/overview/overviea.htm

Number of reply queues for a multithreaded server

Basic Tuxedo Software Architecture

Assignment

Tuesday, October 12, 2004

Tuxedo配置(Win2k版)

安装目录:D:\tuxedo
版本:tuxedo 6.5
方式:单机配置
应用程序目录:E:\ldrk\tuxapp\exe
PC源程序目录:E:\ldrk\tuxapp\proc
fld目录:E:\ldrk\tuxapp\fld
reposirory目录:E:\ldrk\tuxapp\jposirory
1. 设置环境变量(E:\ldrk\tuxapp\proc\setenv.bat)
set ORACLE_HOME=D:\Oracle\Ora81(oracle安装目录)
set TUXDIR=d:\tuxedo(Tuxedo安装目录)
set APPDIR=e:\ldrk\tuxapp\exe(应用程序目录)
set TUXCONFIG=%APPDIR%\UBBSHM(编译后的UBBCONFIG路径及文件名)
set LD_LIBRARY_PATH=%ORACLE_HOME%\lib;%TUXDIR%\lib
set NLSPATH=%TUXDIR%\locale\C
set LANG=C
set FIELDTBLS=ldrkflds(域描述文件名)
set FLDTBLDIR=e:\ldrk\tuxapp\fld(域描述文件所在目录)
set INCLUDE=%ORACLE_HOME%\oci\include;%TUXDIR%\include;%INCLUDE%
set PATH=%TUXDIR%\bin;%ORACLE_HOME%\bin;%PATH%
2. 设置UBBCONFIG文件E:\ldrk\tuxapp\proc\ubbshm
*RESOURCES
IPCKEY 123456(32768~262143)
DOMAINID SZGA.ORG
MAXACCESSERS 250(可选,最大处理进程数,包括服务器本身的,<32768默认为50)
MAXSERVERS 150(可选,最大进程数,<8192,默认为50)
MAXSERVICES 100(可选,最大服务数,<32768默认为100)
MAXCONV 10
MASTER LDRK(逻辑主机 逻辑备份机)
SCANUNIT 10(可选,<32768默认为10)
MODEL SHM(SHM或者MP,单机或多机)
LDBAL Y(可选,负载均衡,默认为Y)
SECURITY MANDATORY_ACL(可选,默认为NONE)
AUTHSVC "..AUTHSVC"

*MACHINES
JIANGLIE(物理主机名,最好大写) LMID=LDRK(主机逻辑名,同MASTER)
TUXDIR="d:\tuxedo"
APPDIR="e:\ldrk\tuxapp\exe"
TUXCONFIG="e:\ldrk\tuxapp\exe\UBBSHM"
TLOGDEVICE ="e:\ldrk\tuxapp\ulog\TLOG"(LOG设备路径)
TLOGNAME = TLOG(LOG设备名)
TLOGSIZE = 200(LOG快大小,默认为100)
MAXWSCLIENTS=100(client连接数)
ULOGPFX="e:\ldrk\tuxapp\ulog\ULOG"

*GROUPS
ORA_GRP GRPNO=1 LMID=LDRK TMSNAME=TMS_ORA(TMS名字)
TMSCOUNT=2(启动TMS数目)
OPENINFO="Oracle_XA(RM名字):Oracle_XA+DB=ldrk(数据库名)
+SqlNet=ldrk(TNSNAME)+Acc=P/szga/szga(登录数据库用户名及密码)+SesTm=30
+LogDir=..\ulog(ULOG路径)"


*SERVERS

DEFAULT: RESTART=Y MAXGEN=10 REPLYQ=Y CLOPT="-A"
JSL SRVGRP=ORA_GRP SRVID=1 CLOPT= " -- -n //10.42.1.3:9000 -m2 -M20 -x10 -I 2"
JREPSVR SRVGRP=ORA_GRP SRVID=2 GRACE=0 CLOPT="-A -- -W -P e:\ldrk\tuxapp\repository\jrepository"
JREPSVR SRVGRP=ORA_GRP SRVID=3 RQADDR=JREPQ GRACE=0 CLOPT="-A -- -P e:\ldrk\tuxapp\repository\jrepository"
JREPSVR SRVGRP=ORA_GRP SRVID=4 RQADDR=JREPQ REPLYQ=Y GRACE=0 CLOPT="-A -- -P e:\ldrk\tuxapp\repository\jrepository"
AUTHSVR SRVGRP=ORA_GRP SRVID=5

(以下为具体应用)
BdsbInsert SRVGRP=ORA_GRP SRVID=6
QcfkInsert SRVGRP=ORA_GRP SRVID=8
BjxxInsert SRVGRP=ORA_GRP SRVID=9

JnryInsert SRVGRP=ORA_GRP SRVID=10
#JnryInsert SRVGRP=ORA_GRP SRVID=100 RQADDR=jnry_req CLOPT="-A -p 1,120:10,30" MIN=2 MAX=10
JwryInsert SRVGRP=ORA_GRP SRVID=11
CzwInsert SRVGRP=ORA_GRP SRVID=12
DwxxInsert SRVGRP=ORA_GRP SRVID=13

ZzzInsert SRVGRP=ORA_GRP SRVID=14
FwrzInsert SRVGRP=ORA_GRP SRVID=15
ZfjgUpdate SRVGRP=ORA_GRP SRVID=16
ZxdjUpdate SRVGRP=ORA_GRP SRVID=17

CzwzfInsert SRVGRP=ORA_GRP SRVID=18
WbzrwInsert SRVGRP=ORA_GRP SRVID=19
ZjdqrwInsert SRVGRP=ORA_GRP SRVID=20
HcdxrwInsert SRVGRP=ORA_GRP SRVID=21
JnrySelect SRVGRP=ORA_GRP SRVID=22

*SERVICES
DEFAULT: LOAD=50 AUTOTRAN=N TRANTIME=30
3. 编写域描述文件
满足base 100+number是唯一值即可,有long、float、String、Carry四种数据类型
如:
*base 100
RYBH 1 string 人员编号
XM 2 string 姓名
4. 编译域描述文件(在E:\ldrk\tuxapp\proc目录下)
mkfldhdr ldrkflds(域描述文件名)生成一个ldrkflds.h文件,以便编译.pc用
5. 编译UBBCONFIG
tmloadcf -y ubbshm
6.修改D:\TUXEDO\udataobj目录下RM文件
注释掉Oracle_XA:xaosw:-L${ORACLE_HOME}/lib行
在最后一行增加:
Oracle_XA;xaosw;d:\oracle\ora81\rdbms\xa\ORAXA8.LIB d:\oracle\ora81\precomp\lib\msvc\oraSQL8.LIB
并敲回车
7.生成TMS(先运行setenv,再运行vcvars32(安装VC后从VC目录中copy到E:\ldrk\tuxapp\proc))
buildtms -o TMS_ORA -r Oracle_XA
8.建LOG
执行命令“tmadmin”,进入控制台
输入命令一“crdl -b 600 -z %TLOGDEVICE%”,和命令二“crlog -m %主机名%”(即MASTER),创建交易日志。
9.建组、用户以及ACL
tpgrpadd [-g gid] grpname(tpgrpadd -g 800 grpszga)
tpusradd [-u uid] [-c client-name] [-g gid] usrname(tpusradd -g grpszga hsh)
tpacladd -g grpszga -t SERVICE JnryInsert

Parameters related to IPCS resources