TUXEDO8.1例子程序bankapp要点提示_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 5016 | 回复: 0   主题: TUXEDO8.1例子程序bankapp要点提示        上一篇   下一篇 
liujia
注册用户
等级:上士
经验:283
发帖:26
精华:0
注册:2012-3-15
状态:离线
发送短消息息给liujia 加好友    发送短消息息给liujia 发消息
发表于: IP:您无权察看 2014-9-18 9:39:18 | [全部帖] [楼主帖] 楼主

TUXEDO带的bankapp在使用的时候会碰到一些问题,做少量修改就可以使用。

现把一些关键之处进行说明。

注:

 详细的使用说明请参考TUXEDO8.1的文档“Tutorial for bankapp, a Full C Application”一节。

 此处只针对可能出错的地方进行说明。

环境:

 TUXEDO8.1,windows2000,安装microsoft Visual Studio.NET(VC7)。

一:对使用Tuxedo sql Resource Manager(默认)要注意的问题: 

设置环境变量:

 脚本bankvar中作如下设置:

set MSDEV=D:Program FilesMicrosoft Visual Studio .netVc7
set PATH=%PATH%;%MSDEV%in;%MSDEV%PlatformSDKin
set INCLUDE=%INCLUDE%;%MSDEV%include;%MSDEV%PlatformSDKinclude;%MSDEV%atlmfcinclude
set LIB=%LIB%;%MSDEV%lib;%MSDEV%PlatformSDKlib;%MSDEV%atlmfclib
MAKEFILE:


 对bankapp tclientclient.mak做如下更改:

 原始:

bankappn.rbj: bankappw.res
cvtres -machine:$(MACH) -nologo bankappw.res -out:bankappn.rbj


 改为:

bankappn.rbj: bankappw.res
cvtres -machine:$(MACH) -nologo -out:bankappn.rbj bankappw.res


 说明:

 cvtres的参数要按顺序,否则会报错,可以用cvtres/?查看参数格式。

 不必单编译每个应用,如果你的MAKEFILE名为bankapp.mak,则使用如下命令编译:

nmake -f bankapp.mak


 注意:由于如D:Program Files..形式的目录中含有空格,在MAKEFILE中如使用-I$(INCLUDEDIR)等形式的声明,

 则解析时会在遇到空格处截断,造成编译失败。所以,如果遇到这样的问题,尽量使用-I"$(INCLUDEDIR)"的形式。

Create Database: (user Tuxedo Sql resource manager)
Create TLOG:
Boot bankapp:


 如果建库的时候出错,删掉文件bankdl1,bankdl2,bankdl3,TLOG,

 清除IPC资源(采用命令:ipclean, 用ipcs查看IPC情况),

 重新运行:

crbank
crtlog -m


 如果这两步都正确了。运行tmboot,如果应用boot失败,则用ipcs看看IPC占用情况,

 用ipclean清除所有IPC资源,再tmboot试试。

 boot成功后运行bankappn.exe可以弹出一个WINDOWS界面的客户端程序。

二:对使用ORACLE8(XA RM)要注意的问题:

环境:Oracle817, 安装在本机,其他环境同上。

在MAKEFILE中变量设置:

 Oracle817中precompile的目录在$(ORACLE_HOME)precomp,而不是$(ORACLE_HOME)pro80,应做相应改正。 

 precompile的程序是$(ORACLE_DIR)proc,而不是$(ORACLE_DIR)proc80,应做相应改正。 

对程序的修改:

 bankapp的程序需要做如下修改方可使用Oracle编译:

 1.所有的*.ec文件中增加以下三行:

#include <sqlda.h>
#include <sqlca.h>
#include <sqlcpr.h>


 删除 

#include <sqlcode.h>


 2.在文件bankflds.h中增加如下定义:

#define SQLCODE sqlca.sqlcode
#define SQLNOTFOUND -100
#define SQL_OK 0
#define QLDEADLOCK -43 /* killed because of timeout or deadlock */


 出现SQLCODE没有定义等错误就是由于没有定义这几个宏。

 3.在util.c中增加:

#include "bankflds.h"


 4.在文件TLR.ec中增加:

#include <Uunix.h>


避开文件冲突:

 TUXEDO带有sqlca.h,sqlda.h,sqlcode.h,可能会与Oracle的相同文件冲突,

 建议将$(TUXDIR)include目录下的这三个文件改名。

做好上面的修改,就可以按照Tutorial的说明进行编译了。

创建数据库:

BOOT应用:

 tmboot,如果TMS_ora fail, 检查ULOG文件,若出现如下信息:

150049.LHL!BBL.1500.1608.0: 06-11-2003: Tuxedo Version 8.1 32-bit Windows.
150049.LHL!BBL.1500.1608.0: LIBTUX_CAT:262: INFO: Standard main starting
150049.LHL!TMS_ORA.1984.1936.0: 06-11-2003: Tuxedo Version 8.1 32-bit Windows.
150049.LHL!TMS_ORA.1984.1936.0: LIBTUX_CAT:262: INFO: Standard main starting
150103.LHL!TMS_ORA.1984.1936.0: CMDTUX_CAT:409: ERROR: xa_recover() returned -3 for group BANKB1
150103.LHL!TMS_ORA.1984.1936.0: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
150103.LHL!tmboot.1280.1504.-2: 06-11-2003: Tuxedo Version 8.1 32-bit Windows.
150103.LHL!tmboot.1280.1504.-2: CMDTUX_CAT:825: ERROR: Process TMS_ORA at SITE1 failed with /T tperrno (TPESYSTEM - internal system error)


 则可能是运行crbank-ora8.sql创建的Oracle用户user1,user2,user3没有被赋予select的权限,

 使用Oracle的工具(如dbaSTUDIO)对用户赋予SELECT ANY TABLE的权限。

 使用tmshutdown,ipclean清除IPC,重新启动tmboot,现在应该可以BOOT起来了。

运行TRANSACTION:

 在WINDOWS上运行TRANSACTION的脚本是gt.cmd,而不是运行driver,打开这个脚本看看就明白了。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论