Tuxedo数据缓冲区buffer基本类型VIEW(VIEW32)详解_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3673 | 回复: 0   主题: Tuxedo数据缓冲区buffer基本类型VIEW(VIEW32)详解        下一篇 
shun.zhang
注册用户
等级:上士
经验:305
发帖:14
精华:0
注册:1970-1-1
状态:离线
发送短消息息给shun.zhang 加好友    发送短消息息给shun.zhang 发消息
发表于: IP:您无权察看 2014-9-25 9:59:41 | [全部帖] [楼主帖] 楼主

VIEW缓冲区

      类似与C中的结构,该结构中的类型可以是short char long float double STRING和CARRAY。要在一个文件中定义该VIEW(VIEW32)结构,然后才能使用。VIEW有子类型,子类型为该VIEW(VIEW32)的名字,在调用tpalloc()分VIEW(VIEW32)缓冲区时要制定该子结构。

《tuxedo 中间件的开发与配置》这本书虽然比较老了,但自我感觉对tuxedo初学者很好,以下是该书在此处的一个小错误及解决方法。在讲到tuxedo数据缓冲VIEW类型的时候:

VIEW使用过程:

(1)定义VIEW的定义文件aud.v

VIEW aud
$/* VIEW sturcture for audit information*/
#type   cname   fbname    count   flag   size   null
long     b_id      BHANCH_ID 1        -       -      0
float     balance BALANCE    2        -       -      0.0
string   ermsg   STATLIN     3        -       80    ""
=================================================


type该字段的数据类型

cname该字段的名字

fbname转化成FML或FML32时相应字段的名字

count该字段的位置值

flag该字段的一些标志,对转化成FML(FML32)相关

size该字段的大小,只对SRTRING和CARRY有用

null该数据段为空时的默认值

$注释出现在*.h文件中

#注释,不出现在*.h文件中

-默认值

=================================================

(2)用viewc -n aud.v进行编译,生成对应的aud.h和aud.V

viewc: (6) error: CMDFML_CAT:13: ERROR: Unexpected end of file
0 Warning(s)
1 Error(s)


Do you want to continue? (y or n) 如果选择y,可以生成这两个文件,但不是预期的结果

生成的aud.h如下

struct aud {
      /* VIEW sturcture for audit information*/
      long b_id;
      float balance[2];
      char ermsg[3][80];
      long line6;
};


============================修改的地方===================================

aud.v文件修改:

==============
VIEW aud
$/* VIEW sturcture for audit information*/
#type cname fbname count flag size null
long b_id BHANCH_ID 1 - - 0
float balance BALANCE 1 - - 0.0
string ermsg STATLIN 1 - 80 ""
END
==============
[tuxedo@happy viewapp]$ viewc -n aud.v
# ... processing aud.v ...
[tuxedo@happy viewapp]$ ls
aud.h aud.v aud.V
[tuxedo@happy viewapp]$ vi aud.h
struct aud {
      /* VIEW sturcture for audit information*/
      long b_id;
      float balance;
      char ermsg[80];
};


============================另外注意点===================================

VIEW aud
$/* VIEW sturcture for audit information*/
#type   cname   fbname    count   flag   size   null
long     b_id      BHANCH_ID 1        -       -      0
float     balance BALANCE    1        -       -      0.0
string   ermsg   STATLIN     1        -       80    ""
END


之间不能有空行,否则报:

viewc: (3) error: CMDFML_CAT:11: ERROR: Viewfile line does not have at least 6 columns; skipping line


解决方法:必须去掉空行;

====================环境变量设置部分=======================

set VIEWFILES=aud.V
set VIEWDIR=%APPDIR%


设置的方法:在tux.env的配置文件中增加:

VIEWFILES=aud.V; export VIEWFILES
VIEWDIR=/home/tuxedo/tuxedo11gR1/Myserver; export VIEWDIR


执行tux.env文件;

========================================================

测试代码中的修改处:

if(tpcall("VIEWDEMO", (char *)audv, sizeof(struct aud), (char **)&audv,&rcvlen,(long)0)==-1)
==========
tpcall("TOUPPER", (char*)audv, sizeof(struct aud), (char**)&audv, &rcvlen, (long)0) == -1


因为要对应Services中的服务




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