Qt对于tuxedo客户端的封装(linux环境)

(一)介绍和安装、配置文件

最近新需求需要将之前的通信方式改为tuxedo通信,所以对tuxedo中间件进行了了解和封装。

最开始也是完全不了解tuxedo中间件作用,看了一些资料和说明之后,目前对tuxedo大概理解就是。

它已经对通信方式进行了封装,你只需要设置相关的配置项,然后通过接口组成所需报文的缓冲区,然后调用对应的发送接口,等待返回。

其中关于安装和配置、示例代码。推荐下面两个网址进行学习:

 tuxedo介绍与安装

tuxedo通讯方式解析

里面的介绍很详细,编码格式清晰。

另外想要对其补充的是关于ubb文件的修改。

如果服务器要配置远程客户端。

则需要增加WSL选项,在*MACHINE节点,增加设置MAXWSCLIENTS=n,设置最大的WSL client数。

例如:

#       (c) 2003 BEA Systems, Inc. All Rights Reserved.
#ident  "@(#) samples/atmi/simpapp/ubbsimple    $Revision: 1.7 $"

#Skeleton UBBCONFIG file for the TUXEDO Simple Application.
#Replace the <bracketed> items with the appropriate values.

*RESOURCES
IPCKEY  100001

#Example:
#IPCKEY         123456

DOMAINID        simpapp
MASTER          simple
MAXACCESSERS    10
MAXSERVERS      5
MAXSERVICES     10
MODEL           SHM
LDBAL           N

*MACHINES
DEFAULT:
                APPDIR="/home/zhangenhao/OraHome_1/tuxedo12.1.3.0.0/simpapp"
                TUXCONFIG="/home/zhangenhao/OraHome_1/tuxedo12.1.3.0.0/simpapp/tuxconfig"
                TUXDIR="/home/zhangenhao/OraHome_1/tuxedo12.1.3.0.0"
                MAXWSCLIENTS=5
#Example:
#               APPDIR="/home/me/simpapp"
#               TUXCONFIG="/home/me/simpapp/tuxconfig"
#               TUXDIR="/usr/tuxedo"

ubuntu  LMID=simple

#Example:
#beatux         LMID=simple

*GROUPS
GROUP1
        LMID=simple     GRPNO=1 OPENINFO=NONE

*SERVERS
DEFAULT:
                CLOPT="-A"

simpserv        SRVGRP=GROUP1 SRVID=1
WSL SRVGRP=GROUP1 SRVID=2 MAXGEN=2 CLOPT="-A -- -n //127.0.0.1:8888 -m 2 -M 6 -x 10"

*SERVICES
TOUPPER
View Code

 

对于客户端程序。在客户端程序运行的时候设置 WSNADDR=//127.0.0.1:8888(根据实际的服务器ip和端口配置),就可以访问服务了。

(二)编译

tuxedo的安装路径下面自带了bin文件夹,里面有给出一些工具,其中有buildservice和buildclient。用于编译服务器程序和客户端程序。这个是直接用c的方式在tuxedo目录开发应用程序的编译方法。

插一条关于域的说明

域(Domain):Tuxedo应用车呢供需的组织形式和管理单元 单域模式: SHM模式(Single Host Mode,Shared Memory),所有服务进程都运行在同一台主机的内存空间中 MP模式(Multi-Processors):tuxedo应用程序运行分布在多个物理主机上,他们之间通过网络交换数据 多域模式(Multi-Domains) 应用程序由若干个单域模块组成 域之间可以通过WAN连接 每个域独立管理 在封装到自己的库中,使用gcc等编译器时。

SHM模式      buildclient -o simpcl -f simpcl.c

MP模式       buildclient -o simpcl -w -f simpcl.c 在网络编程中要加载的库的路径(编码时请将wsc放到最前面)

MP模式  -L${TUXDIR}/lib  -lwsc -lbuft -lwsc  -lgpnet  -lfml -lfml32 -lengine  -ldl -lpthread

SHM模式:   -I$TUXDIR/include -o a.out   -L${TUXDIR}/lib  -ltux -lbuft  -lfml -lfml32 -

lengine  -ldl -lpthread

所以工作站客户端通过WSNADDR环境变量连接到WSL,再有WLS分配WSH作为请求代理来调度服务,决定客户机是哪一种类型是在链接时不是在设计时决定的,链接了TUXEDO本地库(libtux.lib)生成的就是本地客户端,链接了W/S库(libwsc.lib以及wtuxws32.lib)生成的客户端就是工作站客户端,编译时加上-w选项就可以指示编译器链接/WS库。

其中红色字体,就是Qt中增加的相关库的编译。wsc库要放在最前面

(三)错误信息

给大家分享一个官方的错误信息查询总汇网址,包含tuxudo中所有类型的错误编号。

官方文档

大家可以根据错误信息的类型和编号找到错误说明,并且会有错误解决方法的提示。

 

(四)客户端运行时配置

远程客户端不需要太多的配置,需要两条配置信息

如下:修改tux.env文件

TUXDIR=/home/mylinux/OraHome_1/tuxedo12.1.3.0.0;
WSNADDR=//127.0.0.1:8888

在运行程序时可以直接通过setenv或者tuxputenv接口设置环境变量,通过getenv或者tuxgetenv检测是否设置成功。

其中/home/mylinux/OraHome_1/tuxedo12.1.3.0.0路径下,需要保留原安装目录下下的locale和udataobj两个文件夹,一个是用于输出错误信息日志信息的文件夹集合;一个是用到的插件。(udataobj文件夹大概有170M左右,经过裁剪测试,可删除security以外的文件夹以及删除所有jar压缩文件,保留其他文件即可)

这样自己封装的tuxedo接口,就可以使用了。

 

(五)使用的一些bug记录(20190712)

  1、本次使用的是fml32数据域类型报文。

  其中在fml头文件中,包括string、long、double三种类型的数据域名。在使用Fchg32组包时,传入数据需要是对应的类型,不然会出现错误提示:

   LIBTUX_CAT:6031、LIBWSC_CAT:1045、LIBWSC_CAT:1011

  2、Fget32的最后一个参数,如果是给了变量下去,变量要保持是0,在取完一个域值后取下一个之前,要将变量置为0。为0则不会考虑取值长度,直接返回取出的域值的长度给变量。

转载于:https://www.cnblogs.com/warmSnowFY/p/10857635.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值