分类:
2009-11-11 11:56:03
Tuxedo安装license例子和远程客户端配置
摘要:本文总结了Tuxedo的安装、license、例子运行和远程客户端配置四个主要问题,给出了一篇真正可用的Tuxedo入门教程。
Tuxedo是一个很好的交易中间件,包含消息中间件等功能,历史悠久,功能强大,是由BEA开发的,不过现在属于Oracle了。网上的Tuxedo入门教程千千万万,几乎没有一个可用的。尤其是在licsence和远程客户端配置这两个问题上,都没有交代清楚。很符合中国的IT教程特色:“懂得人看得懂,但是并没有更懂;不懂的人更加不懂了!”。
本文集中讨论了四个问题:
l Tuxedo的安装;
l SDK和RTC的License;
l Simpapp例子
l 远程客户端配置
好了,开始吧,我的开发环境如下,如果开发环境不同,也许本教程不适合你:
l Tuxedo8.1
l VC6
l 服务器:windows XP
l 客户端:Windows XP(VMWARE上)
本文的源代码在这里,你也许要根据下面的教程修改后才能成功运行:
1. Tuxedo8.1安装
Tuxedo8.1下载地址如下:
Microsoft Windows (32 bit)
下载完成后直接双击就可以安装了,可以选择安装服务器或者客户端。安装的时候需要选择bea的home目录和Tuxedo的目录,都可以采用默认配置。服务端还需要指定tlisten密码。其他都暂时不需要配置,包括license都可以留到后面配置。
2. License
Tuxedo的license分为SDK和RTC两种,SDK即开发版,RTC即发布版。我刚开始就是得到了一个RTC,兴高采烈的run例子的时候编译不过,告诉我“你没有一个合法的SDK license”。其实bea已经公布了所有的license,直接去官方网站下载就可以了,不要到处找所谓的无限制xx license,Tuxedo8.1的SDK license地址如下:
下载后解压,将文件名改为lic.txt,然后拷贝到TUXEDO_HOME\udataobj目录下面就可以了。我的TUXEDO_HOME是C:\bea\tuxedo8.1。
拷贝完成后license马上生效。
3. Simpapp例子
Simpapp是Tuxedo自带的一个简单例子,只有服务器版本带有例子程序。我的例子在C:\bea\tuxedo8.1\samples\atmi\simpapp。将该例子拷贝到另外一个目录,例如:C:\tuxedo_test\simpapp。
例子中有如下几个文件:
l README和README.NT,是说明文件,但是我认为说得不详细,起码license和远程客户端配置就没说清楚;
l setenv.cmd,设置环境变量的批处理文件;
l ubbsimple,Tuxedo的应用程序配置文件,它会被编译为二进制的配置文件,所有服务端程序都需要该配置文件;
l simpapp.nt,makefile文件,用来编译服务器和客户端程序;
l simpcl.c,客户端源程序;
l simpserv.c,服务端源程序;
要编译运行Simpapp例子,需要六个步骤:1)设置环境变量;2)修改编译配置文件;3)编译源程序;4)启动服务;5)运行客户端;6)关闭服务。
注意:这是本地客户端的步骤,若是远程客户端,还有一些变动。
设置环境变量
首先,把本文的系统相关变量列举如下,大家要根据自己的情况在下面的各种配置文件中更改:
Tuxedo目录:C:\bea\tuxedo8.1
Tuxedo应用程序目录:C:\tuxedo_test\simpapp
服务器IP:192.168.222.1
客户端IP:192.168.222.2
修改setenv.bat文件:其解释已经在源代码中
rem 设置TUXEDO目录
set TUXDIR=C:\bea\tuxedo8.1
rem 设置TUXEDO应用程序目录
set APPDIR=C:\tuxedo_test\simpapp
rem 设置系统path
set PATH=%TUXDIR%\bin;%APPDIR%;%PATH%
rem 设置TUXEDO应用程序配置文件
set TUXCONFIG=%APPDIR%\tuxconfig
然后打开一个windows控制台,将目录变更为tuxedo应用程序所在目录,即C:\tuxedo_test\simpapp,运行setenv.bat。
C:\tuxedo_test\simpapp>setenv
修改编译配置文件
在修改配置文件前,先得到自己的计算机名称,运行:
C:\tuxedo_test\simpapp>echo %computername%
就可以得到自己的计算机名称,一般都是大写的。
Ubbsimple是本程序(即simpapp)的配置文件,将其修改为:
*RESOURCES
IPCKEY 123496 #这个数字可以自己定
DOMAINID simpapp
MASTER simple
MAXACCESSERS 10
MAXSERVERS 5
MAXSERVICES 10
MODEL SHM
LDBAL N
*MACHINES
DEFAULT:
APPDIR="C:\tuxedo_test\simpapp"
TUXCONFIG="C:\tuxedo_test\simpapp\tuxconfig"
TUXDIR="C:\bea\tuxedo8.1"
"WXB" LMID=simple #注意,把”WXB”改成自己的计算机名称
*GROUPS
GROUP1
LMID=simple GRPNO=1 OPENINFO=NONE
*SERVERS
DEFAULT:
CLOPT="-A"
simpserv SRVGRP=GROUP1 SRVID=1
*SERVICES
TOUPPER
配置文件是Tuxedo中最繁琐的部分,稍有不对服务就无法发布和执行,所以一定要仔细检查。目前不需要太多了解,按我写的做就可以了。注意,配置文件和源程序的编译链接无关,只和服务发布相关,客户端也不需要配置文件。
修改完配置文件后,就需要将其编译为二进制的配置文件,其名称和目录由系统变量TUXCONFIG决定,该变量已经在setenv.bat中设置了,此处是C:\tuxedo_test\simpapp\\tuxconfig,这个tuxconfig就是服务用来发布时的二进制配置文件。
编译配置文件:
C:\tuxedo_test\simpapp>tmloadcf -y ubbsimple
若成功完成,则会生成tuxconfig。
编译源程序
使用makefile的方式编译源程序,这里我使用的是vc6自带的nmake命令,要确保你的vc相关目录已经正确在windows的path变量中设置。Makefile文件已经写好,不需要更改,即simpapp.nt。执行命令如下:
C:\tuxedo_test\simpapp>nmake -f simpapp.nt
当然,如果你不熟悉makefile,那么可以使用如下两个命令别分编译客户端和服务端,其实这两条命令是我从simpapp.nt中抄出来的:
buildclient -o simpcl -f simpcl.c
buildserver -s TOUPPER -o simpserv -f simpserv.c
若成功,则可发现在目录下出现了simpcl.exe和simpserv.exe文件。
启动服务
启动服务非常easy,如果你前面都做对了的话:
C:\tuxedo_test\simpapp>tmboot -y
启动成功后会告诉你,两个进程已经成功启动。
运行客户端
如下命令:
C:\tuxedo_test\simpapp>simpcl "hello,wenwen"
Returned string is: HELLO,WENWEN
客户端会将一个字符串传送给服务器,服务器返回该字符串的大写形式。为什么是“hello,wenwen”而不是“hello,tuxedo”呢?嗯,因为写到这儿的时候刚好雯雯到我身边来了。
关闭服务
关闭服务很容易,而且不会失败:
C:\tuxedo_test\simpapp>tmshutdown –y
4. 远程客户端配置
好了,重点终于来了。毕竟对于大部分人来说,用中间件就是为了使用远程客户端,本地客户端只是玩玩而已嘛。远程客户端需要服务器端修改一些配置,远程客户端也要进行一些配置。
服务器端
要编译运行Simpapp例子,使其能够为本地客户端提供服务,需要六个步骤:1)设置环境变量;2)修改编译配置文件;3)编译源程序;4)启动服务;5)运行客户端;6)关闭服务。
要编译运行Simpapp例子,使其能够为远程客户端提供服务,需要六个步骤:1)设置环境变量;2)修改编译配置文件;3)编译远程客户端源程序;4)启动服务;5)运行远程客户端;6)关闭服务。
为了不让读者出错,我还是用最详细的方式把这些步骤都完成写一遍,当然,与上面不同的部分会用红色标注出来。
(1)设置环境变量
再次修改seten.bat文件:
rem 设置TUXEDO目录
set TUXDIR=C:\bea\tuxedo8.1
rem 设置WSN地址和端口
set WSNADDR=\\192.168.222.1:8888
rem 设置TUXEDO应用程序目录
set APPDIR=C:\tuxedo_test\simpapp
rem 设置系统path
set PATH=%TUXDIR%\bin;%APPDIR%;%PATH%
rem 设置TUXEDO应用程序配置文件
set TUXCONFIG=%APPDIR%\tuxconfig
注意,其中加入了WSN地址和端口的配置,地址就是本服务器IP地址,端口可以随意指定,只要不冲突就好。
运行setenv
C:\tuxedo_test\simpapp>setenv
(2)修改编译配置文件
再次修改ubbsimple
*RESOURCES
IPCKEY 123496 #这个数字可以自己定
DOMAINID simpapp
MASTER simple
MAXACCESSERS 10
MAXSERVERS 5
MAXSERVICES 10
MODEL SHM
LDBAL N
*MACHINES
DEFAULT:
APPDIR="C:\tuxedo_test\simpapp"
TUXCONFIG="C:\tuxedo_test\simpapp\tuxconfig"
TUXDIR="C:\bea\tuxedo8.1"
"WXB" LMID=simple #注意,把"WXB"改成自己的计算机名称
MAXWSCLIENTS=5 #指定的最大客户端连接数
*GROUPS
GROUP1
LMID=simple GRPNO=1 OPENINFO=NONE
*SERVERS
DEFAULT:
CLOPT="-A"
simpserv SRVGRP=GROUP1 SRVID=1
WSL SRVGRP=GROUP1 SRVID=5 CLOPT="-A -t -- -n //192.168.222.1:8888 -m 2 -M 5 -x 10" #WSL发布地址
*SERVICES
TOUPPER
仅仅增加了两行代码,即最大客户端连接数和WSL的发布地址。其具体意义可以看书,这个倒是很多书都说清楚了。
编译配置文件:
C:\tuxedo_test\simpapp>tmloadcf -y ubbsimple
(3)编译远程客户端源程序
上面已经编译了服务端和本地客户端程序,远程客户端程序的编译下节再说。
(4)启动服务
同上。不过这次会启动三个进程,其中一个是WSL。Look:
C:\tuxedo_test\simpapp>tmboot -y
Booting all admin and server processes in C:\tuxedo_test\simpapp\tuxconfig
INFO: BEA Tuxedo, Version 8.1
INFO: Serial #: 454493271161-2671077484631, Expiration NONE, Maxusers 1000000
INFO: Licensed to: Customer
Booting admin processes ...
exec BBL -A :
process id=2556 ... Started.
Booting server processes ...
exec simpserv -A :
process id=3564 ... Started.
exec WSL -A -t -- -n //192.168.222.1:8888 -m 2 -M 5 -x 10 :
process id=760 ... Started.
3 processes started.
(6)运行远程客户端
下面详细交代。
(7)关闭服务
同上。
远程客户端
运行远程客户端需要三个步骤:1)设置环境;2)修改编译远程客户端程序;3)运行。
首先,将如下文件拷贝到远程客户端计算机:
l Setenv.bat
l Simplecl.c
l Simpapp.nt
(1)设置环境
根据远程客户端的系统相关配置修改setenv.bat,注意WSNADDR要和服务器的一致:
rem 设置TUXEDO目录
set TUXDIR=C:\bea\tuxedo8.1
rem 设置WSN地址和端口
set WSNADDR=\\192.168.222.1:8888
rem 设置TUXEDO应用程序目录
set APPDIR=C:\tuxedo_test\simpapp
rem 设置系统path
set PATH=%TUXDIR%\bin;%APPDIR%;%PATH%
然后执行setenv:
C:\tuxedo_test\simpapp>setenv
(2)修改编译远程客户端程序
为了实现远程初始化,需要在客户端程序的tpinit函数前中加入一行代码:
tuxputenv("WSNADDR=//192.168.222.1:8888");
当然,为了使得程序可移植性更强,可以从系统变量中读取这个字符串。
然后,用makefile生成远程客户端程序:
C:\tuxedo_test\simpapp>nmake -f simpapp.nt wsimpcl.exe
不懂nmake的可以执行如下命令:
buildclient -w -o wsimpcl -f simpcl.c
成功后得到远程客户端执行程序wsimpcl.exe。
(3)运行
C:\tuxedo_test\simpapp>wsimpcl "hello,remote wenwen"
Returned string is: HELLO,REMOTE WENWEN
为什么是”hello,remote wenwen”呢?因为此时雯雯已经和妈妈在卧室睡着了。
5. 总结
但愿此文能够使大家熟悉Tuxedo的时间缩短一点,不要像我一样用了两天时间到处找资料。其中,SDK和RTC license的问题就花了我一个下午;配置远程客户端花了我一天的时间。其实有好的资料的话,所有的安装配置运行估计一个上午就全部搞定了。
愿中国和所有懂中文的Tuxedo初学者省下一天半的时间陪老婆孩子吧!我花了周末的半天时间来写这篇文档,我真的是个好人!
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wxb_nudt/archive/2009/03/14/3991060.aspx