TUXEDO安装成功后,在TUXEDO的安装目录中有一个samples文件夹(笔者在WINDOWS下的安装目录为E:\tuxedo\tuxedo8.1\samples,在LINUX下安装目录为/home/tuxedo/install/tuxedo10.0)自带着有三种开发接口的实例程序:ATMI、CORBA、JOLT,也就是samples文件夹下的三个子文件夹(atmi,corba,jolt)。
近段时间主要学习TUXEDO的ATMI编程接口,ATMI编程接口用得比较多,它支持多种开发语言(工具)(C、C++、COBOL、VB、DELPHI、PB、.NET等),但服务器程序只能用C语言或COBOL语言开发。
在atmi文件夹下有多个子文件夹,分别对应着不同的应用,其中simpapp是最为基础的实例,看看simpapp实例如何编译并运行起来。
1、设置环境变量。
在simpapp目录(以笔者的机器:%TUXDIR%\samples\atmi\simpapp)下有一个setenv.cmd(在linux/unix下为setenv文件)。在windows下,setenv.cmd的内容设置为:
set TUXDIR=E:\tuxedo\tuxedo8.1
set WSNADDR=localhost:6667
set APPDIR=E:\tuxedo\tuxedo8.1\samples\atmi\simpapp
set PATH=%TUXDIR%\bin;%APPDIR%;%PATH%
set TUXCONFIG=%APPDIR%\tuxconfig
TUXDIR指定TUXEDO的安装目录;
WSNADDR指定连接服务器时的IP地址和端口,IP地址与端口用冒号(:)分隔,端口号必须确保未被占用。该环境变量不是必须的,只有启用了WSL服务器时才用到。
APPDIR指定应用程序的路径;
PATH指定TUXEDO的bin目录和应用程序的路径加到PATH环境变量中;
TUXCONFIG指定TUXEDO应用系统的二进制配置文件路径;
如果是LINUX或者UNIX系统,setenv文件内容可设置为:
export TUXDIR=/home/tuxedo/install/tuxedo10.0
export WSNADDR=localhost:6667
export APPDIR=/home/tuxedo/install/tuxedo10.0/samples/atmi/simpapp
export PATH=%TUXDIR%\bin;%APPDIR%;%PATH%
export TUXCONFIG=%APPDIR%\tuxconfig
这些环境变量只是TUXEDO系统中用到的一部分,但只有TUXDIR、APPDIR、TUXCONFIG这三个环境变量是必须的,其它的环境变量根据应用而定。
在命令提示符下,切换到%APPDIR%目录,执行setenv.cmd文件,让环境变量生效。
在Linux/Unix下,切换到$APPDIR目录下,用shell执行,让环境变量生效: $ . ./setenv。也可以将环境变量配置到~/.profile或~/.bash_profile文件中,让环境变量在用户登陆时就自动生效而不用每次登陆时都需要手动执行。
2、生成tuxconfig文件。
TUXEDO应用系统需要一个配置文件,并且是二进制的,通常命名为tuxconfig,也可以是其它文件名,但要与TUXCONFIG环境变量中的一致。该二进制配置文件可以一个ASCII文件转换得来,也就是面向用户的配置文件,即%APPDIR%目录下的ubbsimple文件,文件内容如下:
# (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 723456
DOMAINID simpapp
MAXACCESSERS 100
MAXSERVERS 50
MAXSERVICES 100
MASTER weihb
MODEL SHM
LDBAL N
*MACHINES
WEIHB LMID=weihb
TYPE="WinNT"
UID=0
GID=0
APPDIR="E:\tuxedo\tuxedo8.1\samples\atmi\simpapp"
TUXCONFIG="E:\tuxedo\tuxedo8.1\samples\atmi\simpapp\tuxconfig"
TUXDIR="E:\tuxedo\tuxedo8.1"
MAXWSCLIENTS=10
#Example:
# APPDIR="/home/me/simpapp"
# TUXCONFIG="/home/me/simpapp/tuxconfig"
# TUXDIR="/usr/tuxedo"
#Example:
#beatux LMID=simple
*GROUPS
GROUP1
LMID=weihb GRPNO=1 OPENINFO=NONE
*SERVERS
DEFAULT:
CLOPT="-A"
simpserv SRVGRP=GROUP1 SRVID=1
*SERVICES
TOUPPER
其中*RESOURCES节点的IPCKEY设置为32768-262143之间的整数,MODEL设置为SHM,MASTER为主机的逻辑名;*MACHINES节点的WEIHB为机器名(windows下可以查看”我的电脑”的属性或者查看%COMPUTERNAME%环境变量;Linux/Unix下可以通过uname –n命令或hostname命令得到),TUXDIR、APPDIR,TUXCONFIG设置要与环境变量中的设置一致;*GROUPS节点的LMID为主机的逻辑名。
在命令提示符下使用tmloadcf命令根据ubbsimple配置文件生成tuxconfig二进制配置文件。如果之前没有设置TUXCONFIG环境变量,则会提示“CMDTUX_CAT:873: ERROR: TUXCONFIG environment variable not set”的错误;如果配置没问题就生成了二进制配置文件了。
3、编译程序:
%APPDIR%目录下有simpserv.c和simpcl.c文件,显而易见前者是服务器代码,后者是客户端程序代码。分别编译这两个程序代码,服务器编译器buildserver,客户端程序编译器buildclient,这两个编译器只是预编译器,最终还要调用安装在该操作系统中的C语言编译器完成编译工作。所以,在windows可以安装VC或.NET编译器。Linux/Unix可以安装gcc编译器。
buildserver –o simpserv –f simpserv.c –s TOUPPER
buildclient –o simpcl –f simpcl.c
buildserver命令跟了s选项的“TOUPPER”参数,TOUPPER是simpserv.c文件中的一个函数,但该函数以TPSVCINFO结构体作为参数,则该函数作为该服务器(simpserv程序)中的一个服务(service),该服务在ubbsimple文件中的*SERVICE节点指定应用系统对外公布该服务。
注:如果安装TUXEDO时没有安装许可文件或许可文件过期,在执行buildserver和buildclient时将提示许可文件不可用的错误信息。
4、运行程序:
执行tmboot –y命令即可启动TUXEDO应用系统。
提示 2 processes started,其中一个进程是BBL,这是TUXEDO自身的一个服务器程序进程;另一个则是simpserv程序进程。
执行客户端程序,调用服务器提供的服务,命令提示符下执行:simpcl (Linux/Unix执行,程序前面加./,即./simpcl)
服务器提供的服务就是将客户端发送来的字符串全部转换为大写。