- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TUXEDO培训
一、TUXEDO简介
在银行、电信、金融等行业的大型计算机应用系统中,中间件的使用日益普及,中间件已与操作系统、数据库并列为三大基础软件。TUXEDO就是BEA公司开发的一种优秀的中间件产品,主要功能是在客户机和服务器之间进行调节,以保证正确地处理事务,通常由tuxedo处理系统的核心业务。
在两层的 C/S 结构中,客户端直接访问数据库,当采用 TUXEDO 中间件后,形成三层结构。这时,客户端不直接访问数据库,而是改为调用中间件 TUXEDO 服务端上的服务,由 TUXEDO 服务端访问数据库,并把结果返回给客户端。 TUXEDO 服务端可以和 ORACLE 在同一台服务器上,也可以在不同的机器上,如果在不同的机器上,在 TUXEDO 的服务端所在的机器要安装一个 ORACLE 的客户端。
二、TUXEDO服务端程序举例介绍
1、Tuxedo通过数据缓冲区和客户端进行交互。
Tuxedo支持string,carry,view,view32,fml,fml32等数据缓冲区,其中fml32类型相对复杂且比较常用,BSS系统采用fml32数据缓冲区开发,首先需要编写fml32数据缓冲区的定义文件,包括fml32数据缓冲区各个字段的名称已经长度等等,并将该文件生成相应的c语言.h头文件,我们在应用程序中需要包含该头文件,这样应用程序中即可以使用fml32数据缓冲区, fml32类型通常在开发数据库应用程序的时候比较常用。
2、例子实现的功能。
根据输入的学生学号从数据库中查询得到该学生的姓名和年龄。
3、定义fml32数据缓冲区文件student_fld文件
*base 10000
# name number type flags comments
student_id 1 long - 学生学号
student_name 2 string - 学生姓名
student_age 3 long - 学生年龄
student_id等3项就是我们自定义fml32类型的域字段,其中每一个字段都对应 一个number,这些number有一个公共的起始值,通过*base 10000定义。
定义之后通过mkfldhdr32 student_fld编译该文件,之后生成student_fld.h头文件,在应用程序中将引用该文件。
头文件:student_fld.h
#define student_id ((FLDID32 /* number: 10001 type: long */
#define student_name ((FLDID32)167782162) /* number: 10002 type: string */
#define student_age ((FLDID32 /* number: 10003 type: long */
4、服务端程序代码
程序名:testServ.pc
#include atmi.h
#include userlog.h
#include sqlca.h
#include fml32.h
#include student_fld.h
EXEC SQL INCLUDE sqlca;
/* 该函数是在启动tuxedo服务时执行,可以在这个函数执行连接数据库或初始化
全局变量等功能 */
#if defined(__STDC__) || defined(__cplusplus)
tpsvrinit(int argc, char *argv[])
#else
tpsvrinit(argc, argv)
int argc;
char **argv;
#endif
{
/*直连oracle数据库方式*/
EXEC SQL BEGIN DECLARE SECTION;
char sConnStr [100];
EXEC SQL END DECLARE SECTION;
argc = argc;
argv = argv;
memset(sConnStr, 0x00, sizeof(sConnStr));
strcpy(sConnStr, “数据库连接串”);
EXEC SQL Connect :sConnStr;
if (sqlca.sqlcode)
{
userlog(连接数据库失败,错误号码:%d,详细原因:%s\n, sqlca.sqlcode,
sqlca.sqlerrm.sqlerrmc
文档评论(0)