最近换了一份工作,新公司使用tuxedo来简化应用的开发,而我参加工作这么多年,虽说略懂c++的开发,但是也没有用过tuxedo这种古老的东西。既然没有接触过,那就学学吧。
先描述一下道路的曲折性吧。

我的本机环境为操作系统:64位的windows 10 专业版、内存:8G,C++的开发工具是:Microsoft Visual Studio 2010 Ultimate 。我开始觉得,为了和操作系统更匹配,我应该下载一个64位的tuxedo,于是选择了tuxedo111120_64_win_2k8_x86_VS2010.exe,所有的安装到没有什么问题,在编译TUXEDO_HOME里面的samples\atmi\simpapp中的例子,执行“buildclient -o simpcl -f simpcl.c”和“buildserver -o simpserv -f simpserv.c -s TOUPPER”的时候,总是提示各种莫名其妙的错误。这两个命令的本质是调用MS VC中的编译器cl.exe去编译连接程序。我们可以找到对应的64位的cl.exe和使用MS VC中的对应的64位的库去连接目标文件,但是最终还是各种错。罢了罢了,于是我决定选择32位的tuxedo。下面就是我使用32位的tuxedo来做的了解。

软件环境
操作系统:64位的windows 10 专业版
C++的开发工具是:Microsoft Visual Studio 2010 Ultimate
tuxedo的版本信息:tuxedo111120_32_win_2k8_x86_VS2010.exe

对tuxedo的安装到没有什么特别注意的地方,一路走下去就是了。然后做环境变量的配置。具体如下:
INCLUDE=C:\bea\tuxedo11gR1_VS2010\include;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include;
LIB=C:\bea\tuxedo11gR1_VS2010\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib;
这两个环境变量其实与tuxedo没有关系,而是MS VC在编译程序时用到的。通常,我们使用MS VC这个IDE来开发程序,通过菜单就可以完成编译连接和运行。实际上,我们也可以使用一个叫做cl.exe的程序来编译,在命令行中使用cl.exe来编译程序的时候,需要像g++那样设定include的目录和库文件的目录,这样的话,cl.exe后面跟的参数一般比较多。通过设置这两个环境变量,在命令行中使用cl.exe的时候,就可以简化一下命令的写法,去掉include和lib库文件的路径指定。

下面就是根据例子初学tuxedo了。
现在对“$TUXEDO_HOME\samples\atmi\simpapp”中的例子做个复制。阅读其中的README.nt,这个就是快捷了解如何编译和使用tuxedo的方式。

文档中要求设定环境变量,我设置的环境变量如下:
TUXDIR=C:\bea\tuxedo11gR1_VS2010 #我的tuxedo的安装目录
APPDIR=C:\bea\tuxedo11gR1_VS2010\samples\atmi\simpapp_baby #我的例子的应用目录
Path=C:\bea\tuxedo11gR1_VS2010\bin;C:\bea\tuxedo11gR1_VS2010\samples\atmi\simpapp_baby;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE;C:\bea\tuxedo11gR1_VS2010\bin;C:\bea\tuxedo11gR1_VS2010\jre\bin\server;C:\bea\tuxedo11gR1_VS2010\jre\bin; #实际上我的主机的环境变量比这个多,我只列举了与tuxedo和MS VC有关的。
TUXCONFIG=C:\bea\tuxedo11gR1_VS2010\samples\atmi\simpapp_baby\tuxconfig #我的例子中的tuxedo的配置文件。
WSNADDR=127.0.0.1:3050 #
实际上,我设置的环境变量还有下面的:
NLSPATH=C:\bea\tuxedo11gR1_VS2010\locale\C #这个是生成tuxconfig文件的时候用的,没有它,“tmloadcf ubbsimple”这个命令会报错。

然后我修改了setenv.cmd中的内容,并运行了一下这个脚本文件。好像,这个设置和手工在环境变量里面设置,重复了。
网上说,有的主机还要运行一下VC安装目录中的vcvars32.bat这个脚本文件,我也运行了一下。其实他也是设置环境变量的,打开稍微阅读一下,就发现他是设置INCLUDE和LIB和LIBPATH的。这个和最上面的环境变量的设置,本质是一回事。

设置完之后就可以编译程序了:
buildclient -o simpcl -f simpcl.c #客户端程序
buildserver -o simpserv -f simpserv.c -s TOUPPER #服务器程序
如果上述INCLUDE和LIB的环境变量没有设置错误的话,这两个程序可以毫无压力地编译通过。如果出错的话,就会有类似下面的错误:
cl.exe /MD -I"%TUXDIR%"\include -I"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include" -Fesimpcl simpcl.c "%TUXDIR%"\lib\libtux.lib "%TUXDIR%"\lib\libbuft.lib "%TUXDIR%"\lib\libfml.lib "%TUXDIR%"\lib\tuxlib.lib "%TUXDIR%"\lib\libfml32.lib "%TUXDIR%"\lib\libengine.lib -link -implib:BC-5054.lib

cl.exe /MD /FA -I"%TUXDIR%"\include -Fesimpserv BS-374c.c simpserv.c "%TUXDIR%"\lib\libtux.lib "%TUXDIR%"\lib\libbuft.lib "%TUXDIR%"\lib\libfml.lib "%TUXDIR%"\lib\libfml32.lib "%TUXDIR%"\lib\libengine.lib wsock32.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib -link -implib:BS-374c.lib
这个错误,就说明了buildclient和buildserver的本质是什么。

修改ubbsimple的配置
有上述配置的经验之后,这个修改也不难。根据提示,把文件中<>内部的东西改了就好了。我的计算机名字中间有个“-”,所以,整个计算机名字,需要用""括起来。

生成tuxconfig文件
根据手册中的操作:tmloadcf ubbsimple就可以生成$TUXCONFIG所指向的配置文件了。如果$NLSPATH没有设置,那么这个命令会提示错误。我也是根据错误提示,在网上找的解决办法。

根据readme.nt中的提示,运行服务器程序
C:\bea\tuxedo11gR1_VS2010\samples\atmi\simpapp_baby>tmboot -y
Booting all admin and server processes in C:\bea\tuxedo11gR1_VS2010\samples\atmi\simpapp_baby\tuxconfig
INFO: Oracle Tuxedo, Version 11.1.1.2.0 with VS2010, 32-bit, Patch Level (none)

Booting admin processes ...

exec BBL -A :
process id=14836 ... Started.

Booting server processes ...

exec simpserv -A :
process id=9204 ... Started.
2 processes started.

启动之后,通过tasklist命令,可以看到新增了两个后台服务:
BBL.exe 18288 Services C:\bea\tuxedo11gR1_VS2010\bin\BBL.exe
simpserv.exe 18320 Services C:\bea\tuxedo11gR1_VS2010\samples\atmi\simpapp_baby\simpserv.exe

然后启动客户端程序
C:\bea\tuxedo11gR1_VS2010\samples\atmi\simpapp_baby>simpcl.exe hello
Returned string is: HELLO

至此,测试完成!
后续,可以停止服务。
C:\bea\tuxedo11gR1_VS2010\samples\atmi\simpapp_baby>tmshutdown -y
Shutting down all admin and server processes in C:\bea\tuxedo11gR1_VS2010\samples\atmi\simpapp_baby\tuxconfig

Shutting down server processes ...

Server Id = 1 Group Id = GROUP1 Machine = simple: shutdown succeeded

Shutting down admin processes ...

Server Id = 0 Group Id = simple Machine = simple: shutdown succeeded
2 processes stopped.

在windows环境初步了解tuxedo的更多相关文章

  1. windows环境安装haproxy及初步配置负载均衡使用示例

    安装HaProxy 首先需要下载windows环境下需要文件,这里下载的是一个别人编译好的一个文件,这里省去了编译的过程,使用的版本是haproxy-1.7.8. 下载后直接解压到对应的目录下.示例( ...

  2. windows环境30分钟从0开始快速搭建第一个docker项目(带数据库交互)

    前言 小白直接上手 docker  构建我们的第一个项目,简单粗暴,后续各种概念边写边了解,各种概念性的内容就不展开,没了解过的点击 Docker 教程 进行初步了解. Docker 是一个开源的应用 ...

  3. git新手配置(windows环境)

    windows环境,初步了解git是个什么东西,使用过svn相关软件最佳,否则可以先补一下git的相关概念和用处,相关教程:https://www.liaoxuefeng.com/wiki/89604 ...

  4. windows环境redis主从安装部署

    准备工作 下载windows环境redis,我下载的是2.4.5,解压,拷贝一主(master)两从(slaveof).主机端口使用6379,两从的端口分别为6380和6381, 我本地索性用6379 ...

  5. Android中开发工具Android Studio修改created用户(windows环境)

    最近经常有朋友反馈说我的安卓项目中,在一些类中会出现Created by panchengjia on 2016/12/30的字样,是如何自动实现的(默认一般为Administrator),如下图: ...

  6. windows环境tomcat8配置Solr5.5.1

    前言 前前后后接触Solr有一个多月了,想趁着学习Solr顺便把java拾起来.我分别用4.X和5.X版本在windows环境下用jetty的方式.tomcat部署的方式自己搭建了一把.其中从4.x到 ...

  7. Windows环境搭建Red5流媒体服务器指南

    Windows环境搭建Red5流媒体服务器指南 测试环境:Windows 7 一.   下载安装程序 red5-server 下载地址 https://github.com/Red5/red5-ser ...

  8. 关于docker在windows环境下运行的第一次体验

    关于docker在windows环境下执行的原理 1.1.           首先是Docker Quickstart启动,如果在虚拟机Oracle VM VirtualBox不存在default虚 ...

  9. PHP Windows环境部署

    1. 说明 本文用来在windows环境下手工搭建PHP开发环境,安装的功能模块主要包含MySQL,PHP以及Apache三个,环境如下: l Window7(64位) l MySQL 5.7.14 ...

随机推荐

  1. pc端html页面到移动端等比缩放

    head标签里面加这个<meta name="viewport" content="user-scalable=yes">

  2. Spark机器学习1·编程入门(scala/java/python)

    Spark安装目录 /Users/erichan/Garden/spark-1.4.0-bin-hadoop2.6 基本测试 ./bin/run-example org.apache.spark.ex ...

  3. 大牛是怎么思考设计MySQL优化方案的?

    在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已. 图-MySQL查询过程 一.优化的哲学 ...

  4. Linux安装字体文件

    登录生成验证码的时候使用了monaco.ttf字体,没有安装字体的情况下,会报错:can't open resource Linux安装字体的方式其实很简单,就是调用fc-cache -f -v命令, ...

  5. 史上最详细Windows版本搭建安装React Native环境配置

    说在前面的话: 感谢同事金晓冰倾情奉献本环境搭建教程 之前我们已经讲解了React Native的OS X系统的环境搭建以及配置,鉴于各大群里有很多人反应在Windows环境搭建出现各种问题,今天就特 ...

  6. 安装专业版的linux的方法 图解安装专业版的linux

    按装一个linux系统其实很简单,不再像以前那样光光盘就好些个,一不小心还又可能装错,实在也是一个大问题.现在好了基本上都是简单安装+网络升级先安装主要的后面如果需要什么在装什么?大大简化了流程.不行 ...

  7. Linux系统下wget命令的使用教程

    一.Linux wget简介 wget是linux上的命令行的下载工具.这是一个GPL许可证下的自由软件.Linux wget支持HTTP和FTP协议,支持代理服务器和断点续传功能,能够自动递归远程主 ...

  8. Your app uses or references the following non-public APIs的解决方案

    之前接了一个旧的项目,代码混乱,年代久远,不得不吐槽一波,好不容易改完需求提交代码,说用到了non-public APIs,搞了好久终于找到地方了,下面是我的解决过程,让大家少走弯路: 下面的被驳回的 ...

  9. lua笔记之userdata

    1.一直使用框架里封装好的c库,想着自己一点一点的写些例子,学习下,以后需要c库,可以自己写了. 下边是一个简单的userdata的例子--数组操作. newarray.c #include &quo ...

  10. Merge k Sorted Lists, k路归并

    import java.util.Arrays; import java.util.List; import java.util.PriorityQueue; /* class ListNode { ...