Bea Tuxedo是在企业、Internet 这样的分布式运算环境中开发和管理三层结构的C/S型应用系统的一种中间件系统。除了正在使用中的Bea Tuxedo 8.1版本之外,随着Bea被Oracle并购,现最新Oracle Tuxedo 10gR3的for developers多平台版本以OTN license发布,也可以免费下载(下载地址,需要注册为OTN用户)用于开发环境的搭建,并且从目前为止的测试来看,和8.1仍然兼容良好。两者的安装配置方法基本一致,下面详细说明Tuxedo 8.1/10gR3的安装配置过程:
一、安装Tuxedo
- 安装前提:
对于Windows平台,Tuxedo完整的服务组件只能运行于NT Server上,因此对Windows的要求就是要为2000、2003的Server系列(2008未测试)。而Client端组件可以在XP上安装。对于UNIX、Linux、Solaris、AIX等平台都有适合各种CPU架构的相应版本。
- 安装Windows版本的Tuxedo
Windows版的Tuxedo是使用InstallAnywhere构建的安装向导,安装过程基本就是点"下一步"的循环。安装组件选择可选择Full Install(8.1完全安装需要90MB,10g需要180MB以上磁盘空间,其中均不包括C/C++源码的编译环境)。在选择安装路径(8.1叫BeaHome;10g叫OracleHome)时,如果曾经没有安装过Bea或Oracle的产品,建议选择使用短文件名的位置,最好是安装在根目录下(如x:/bea或x:/oracle)。tlisten密码用于远程管理,被问到时根据实际情况设置。被问到LDAP的设置时回答No。其中8.1安装完后会被要求导入license文件,可选择导入网上搜索的免费SDK lic文件。
- 安装Linux 64-bit版本的Tuxedo
Oracle官方为Linux提供的下载中只有64位版本,所以要先准备一个64位版本的Linux系统。这里以ubuntu-8.10-amd64为例,要在32位CPU的电脑上通过VMWare一类软件安装64位的Guest OS需要CPU和主板提供VT(Virtualization Technology)支持。对于Intel的i686架构CPU,如果特性中有EM64T和Intel-VT两项,并且只要主板CMOS设置中能找到VT相关支持的选项就可以通过开启它们让我们在32位系统中安装64位的虚拟机。Core或Xeon的很多型号已经支持VT,在CMOS中打开VT支持后要记得冷重启(关闭电源再重开)方可生效。安装好64位的ubuntu后,将下载回来的bin包拷入系统并加上执行权限(chmod +x),直接在终端中运行bin就可以启动InstallAnywhere for Linux的安装向导了(已自带JRE for Linux 64-bit,无需先装。由于有awt界面,所以ubuntu一般要安装有X11的desktop版)。Tuxedo for Linux的安装向导的安装流程和Windows的完全一样。如果没用sudo的话,只需要将OracleHome设置到当前用户有权限访问的位置就可以正确安装了。之后的配置也大同小异,比如要注意"/"全换"/"之类的问题。
- 配置Tuxedo环境变量
Tuxedo服务在运行其间需要在系统中设置以下这些环境变量,可以将它们加入到系统注册表的环境变量项中一劳永逸,也可以编写设置脚本每次需要使用时再调用脚本单独设置。Tuxedo安装好后可以在安装路径/samples/atmi/simpapp目录下找到最简单最经典的ATMI范例,其中就有一份setenv.cmd脚本样例,可以复制到%APPDIR%参考使用。其中的说明如下:TUXDIR=<关键的,Tuxedo安装路径> //如D:/bea/tuxedo8.1 WSNADDR=<可选的,WorkStation Server地址,只有WS远程客户端才需要设置> //如//10.108.69.31:3051 APPDIR=<用户自己开发的服务端应用程序所在路径> //如D:/appdir PATH=<关键的,必须将Tuxedo必要的bin加入PATH搜索列表> //如%TUXDIR%/bin;%APPDIR%;%PATH% TUXCONFIG=<UBB配置文件tuxconfig的路径> //如%APPDIR%/tuxconfig BDMCONFIG=<可选的,Domains配置文件dmconfig的路径> //如%APPDIR%/dmconfig LD_LIBRARY_PATH=<可选的,Tuxedo静态连接库所在路径,和VC的LIB变量不同,在Linux下为必须> //如%LD_LIBRARY_PATH%;%TUXDIR%/LIB SHLIB_PATH=<HP-UX系统专用,用于取代LD_LIBRARY_PATH,指向$TUXDIR/lib>
还有一种方法是写一个Tuxedo专用的TUXEDO.ENV配置文件,并用ENVFILE/WSENVFILE变量指向它,令Tuxedo自动配置那些非关键的,常常变动的环境变量。
- 配置Tuxedo编译环境
对于Windows平台,Tuxedo应用的C/C++编译可以借助Visual C++,因此如果需要在服务器端编译服务应用还需要事先安装Visual C++(8.1建议安装Visual Studio 6.0,10gR3支持Visual Studio .NET 2005)。VS的安装过程就不在此一一描述,下面说明在安装好VS后,需要针对Tuxedo进行哪些配置。UNIX/Linux平台下通常已有GCC编译环境,无需另外安装,配置也只要加上Tuxedo用的PATH即可。- 设置控制台环境变量
要在控制台下编译C/C++源程序也需要设置一组环境变量,这些设置通常已经在安装VS时由安装程序创建了一份脚本,只要在上文Tuxedo环境变量的设置脚本中加上这些脚本即可顺便完成编译环境的设置。对于VS6,脚本是%MSVCDir%/Bin/VCVARS32.BAT文件;对于VS2005,脚本的实现被移到了%VS80COMNTOOLS%vsvars32.bat。根据你安装的Visual Studio版本,只要将脚本拷贝到%APPDIR%下,在setenv.cmd中加入call vcvar32.bat(或vsvar32.bat)即可完成调用。 - 设置UBB配置
关于Tuxedo开发相关的UBB配置请先参考下节有关配置说明后再来确认,此外编译还有一些环境变量可以设置,详情都可以参考官方文档(英文)的说明。
- 设置控制台环境变量
- 设置UBB配置文件tuxconfig
名词解释:要启动Tuxedo中间件服务需要先给服务的各种行为做配置,而配置描述文件就是变量%TUXCONFIG%所指向的文件(通常名为tuxconfig,放在%APPDIR%目录下)。但tuxconfig是一个二进制文件,要产生这个文件需要通过编写文本版的配置描述文件(通常名为ubbconfig,为Windows平台使用方便加上后缀.txt),然后使用Tuxedo提供的配置加载工具将该文本文件"编译"成二进制文件作为Tuxedo的配置文件。
在上文提到的simpapp范例中也有一份UBB配置文件的样例叫ubbsimple,可以将它复制到%APPDIR%下并更名为ubbconfig.txt作为参考模板。UBB文本配置是由若干小节组成的,小节的名称由*号开头,共有9种小节:RESOURCES、MACHINES、GROUPS、NETGROUPS、NETWORK、SERVERS、SERVICES、INTERFACES、ROUTING。除了RESOURCES小节,其它小节都是类似于INI/properties配置一样由KEY=VALUE的格式构成。下面就参考ubbsimple来一一解释其中的主要含意。#资源小节用于描述系统级别的参数 *RESOURCES #6位数字,用于在Tuxedo公告板中区别于其它RESOURCE的主键 IPCKEY 123456 #服务器所在DOMAIN的ID名,用于在DOMAIN中的其它节点提供唯一性标识 DOMAINID simpapp #TUXCONFIG配置的主标识,MP模式中的主配置 MASTER simple #能访问Tuxedo的总的最大访问者数值,范围0至32768,应大于下面设置的所有有关访问的数值 MAXACCESSERS 50 #最大服务器(程序)数,范围0至8192 MAXSERVERS 15 #最大服务(函数)数,范围0至32768 MAXSERVICES 20 #单机模式或多机模式,取值为SHM或MP MODEL SHM #是否使用负载平衡 LDBAL N #机器小节用于配置物理机器的逻辑名称 *MACHINES #DEFAULT标识用于说明以下设置内容为所有机器共通配置 DEFAULT: APPDIR="D:/appdir" TUXCONFIG="D:/appdir/tuxconfig" TUXDIR="D:/bea/tuxedo8.1" #以上3项同环境变量的含意相同 #使用工作站服务时才需要设置,最大工作站客户端数,0至32768 MAXWSCLIENTS=10 #格式是:逻辑地址 必须参数 可选参数 #逻辑地址是本地机器的计算机名称,Windows下就是NBTSTAT -N命令中显示的名称,UNIX系统用uname -n查询。如果名称中有特殊符号需要用双引用将整个名称括起来。 "LIU-CSN" #必须参数,设置用于在其它设置小节标识该逻辑地址的名称。小于30个字符,不能包括逗号,通常和MASTER值匹配。 LMID=simple #必须的参数还有DEFAULT中设置的那3个路径,不过已经在DEFAULT中配置就不必再重复 #分组小节用于将本地服务分组,每个Tuxedo至少配置1个分组 *GROUPS #配置格式:分组名称 必须参数 可选参数 #名称类命名规则都一样,1至30字符,不能以星号开头,不能包含逗号、分号等,LMID和GRPNO是必须参数,分别用于将组关联到机器和设置分组ID号 DMGROUP LMID=simple GRPNO=10 GWGROUP LMID=simple GRPNO=20 GROUP1 LMID=simple GRPNO=1 WSLGROUP1 LMID=simple GRPNO=2 #服务器小节用于提供系统中提供服务的初始条件 *SERVERS #公共设置 DEFAULT: CLOPT="-A" #配置格式:服务程序名 必须参数 可选参数 #服务程序名是tmboot在启动时将要调用的实际程序文件名,通常存放于%APPDIR%或%TUXDIR%/bin下,也会PATH中搜索。 #必须参数有SRVGRP和SRVID,前者设置服务所属分组,后者为服务ID号 #REPLYQ为可选参数,设置服务是否需要建立一个应答队列 DMADM SRVGRP=DMGROUP SRVID=1 REPLYQ=N GWADM SRVGRP=GWGROUP SRVID=1 REPLYQ=N GWTDOMAIN SRVGRP=GWGROUP SRVID=2 REPLYQ=N simpserv SRVGRP=GROUP1 SRVID=1 #CLOPT为可选参数,设置需要传递给服务程序的命令行参数,如果不设置默认就是"-A" WSL SRVGRP=WSLGROUP1 SRVID=1 CLOPT="-A -- -n //10.108.69.31:3051 -w WSH -m 1 -M 10 -x 2" #服务小节用于描述用户应用提供的服务信息 *SERVICES #格式是:服务名称 可选参数,服务名称就是用户的服务应用中将要暴露的服务函数名。 TOUPPER
关于其它小节和各种可选参数的详细信息可以参考官方文档(英文)的说明。
如上文解释中提到的,文本配置文件编辑好后还需要使用Tuxedo提供的工具"编译"成Tuxedo能识别的格式,方法是:tmloadcf -y ubbconfig.txt
其中-y开关是可选参数,表示对是否覆盖原配置文件的提问自动回答Yes。
- 服务应用的编译
在UBB配置中的SERVERS小节中除了配置Tuxedo提供的一些固有服务组件之外,最根本的需要就是将用户编写的业务服务加入Tuxedo中间件。用户服务的程序源码编写好后在编译连接时需要加入必要的Tuxedo库文件,通常可以借助Tuxedo提供的编译工具来编译产生Client和Server的可执行文件。
编译服务器通常用:buildserver -o 输出文件名 -s 服务名称 -f 源程序文件名 //输出文件是服务程序的可执行文件名,对于Windows会自动加上.exe扩展名。 //服务名称是程序提供的服务,该名称将被用于SERVICES小节的配置。 //源程序文件可以指定多个。
编译客户端通常用:
buildclient -o 输出文件名 -f 源程序文件名 [-w] //-w开关用于编译工作站专用的远程客户端,关于"工作站"请参考相关说明。
使用Tuxedo的buildserver和buildclient如果需要专递定制参数给编译器和连接器,需要使用环境变量(如CFLAGS),详情需要参考编译器的有关说明。
- 启动、停止和管理服务
在正确设置好环境并将UBB配置转换为tuxconfig后使用tmboot命令就可以启动Tuxedo中间件了。启动命令形如:tmboot -y
其中可选开关-y开关为自动应答Yes。
要停止Tuxedo中间件服务只需执行:tmshutdown -y
其中可选开关-y开关也为自动应答Yes。通常重新配置Tuxedo时都需要先停止服务,配置完成并重新转换后再重启服务器。不停止服务器的情况下修改配置需要用tmconfig命令,tmconfig会调用EDLIN工具动态修改指定的单项配置。有关tmconfig和EDLIN的用法可以参考相关文档说明。
在Tuxedo服务运行期间有一些管理工具可以对正在运行的服务进行维护。常用的有控制台工具tmadmin:tmadmin
tmadmin是一个命令行子系统,进入后使用help命令可以查看可用命令的简单说明。使用quit命令可以退出tmadmin控制台。常用的tmadmin有:
printserver //可以缩写为psr,列出正在运行的所有服务程序 printservice //可以缩写为psc,列出当前可用的所有服务 to be countinued...
有关tmadmin的使用详情可以参考官方文档(英文)的说明。