[转帖]TUXEDO MIB信息查询_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4706 | 回复: 0   主题: [转帖]TUXEDO MIB信息查询        下一篇 
zxl1990
注册用户
等级:上尉
经验:663
发帖:59
精华:1
注册:2012-12-19
状态:离线
发送短消息息给zxl1990 加好友    发送短消息息给zxl1990 发消息
发表于: IP:您无权察看 2012-12-19 14:22:03 | [全部帖] [楼主帖] 楼主

 MIB信息查询
1. 实现功能
查询MIB,提取字段信息。本文主要介绍提取:客户端ID、客户端名、用户名。
2. 设置环境变量 www.2cto.com
第一个环境变量:

FLDTBLDIR32=$APPDIR:$TUXDIR/udataobj


第二个环境变量:

FIELDTBLS32=bank_fml,rtpnr_fml,common_fml,ui_fml,openpnr.fml32,open_detr_fml,tpadm,Usysfl32,evt_mib


3. 结构设计
目的:通过客户查询服务端MIB信息   
北京联动北方科技有限公司

4. 代码设计
客户端代码:

#include <userlog.h>
#include <Uunix.h>
#include <atmi.h>
#include <boost/thread/thread.hpp>
#include <string.h>
#include <string>
#include <fml32.h>
#include <evt_mib.h>
using namespace std;
int main(int argc, char* argv[])
{
      string logName = "mylog";
      string cltName = "cltname";
      string usrName = "usrname";
      for(int i = 1; i < argc; i++)
      {
            if(i == 1)
            {
                  logName = argv[i];
            }
            else if(i == 2)
            {
                  cltName = argv[i];
            }
            else if(i == 3)
            {
                  usrName = argv[3];
            }
            else
            {
                  break;
            }
      }
      TPINIT *userinfo=(TPINIT*)tpalloc("TPINIT",(char *)NULL,TPINITNEED(168));
      strcpy (userinfo->cltname, cltName.c_str());
      //strcpy (userinfo->grpname, "AA");
      //strcpy (userinfo->passwd, "123456");
      strcpy (userinfo->usrname, usrName.c_str());
      userinfo->datalen = 100;
      if ( tpinit(userinfo) == -1)
      {
            printf("tpinit error\n");
            printf("init:%s\n",tpstrerror(tperrno));
      }
      FBFR32 *iData = (FBFR32*)tpalloc (FMLTYPE32, NULL, 5000L);
      Fchg32 (iData, TA_OPERATION, 0, "GET", 0);
      Fchg32 (iData, TA_CLASS, 0, "T_CLIENT", 0);
      FILE * fp=fopen(logName.c_str(),"w+");
      long lLen = Fsizeof32 (iData);
      if (tpcall (".TMIB", (char*)iData, (long)0, (char**)&iData, &lLen, (long)(TPSIGRSTRT | TPNOTRAN)) == 0)
      {
            // long lerrno = Fvall32 ( iData, TA_ERROR, 0 );
            printf("tpcall success!\n");
            int eveCount = Fnum32(iData);
            char buffer[1024];
            string logstr("");
            for(int i = 0; i < eveCount; i++)
            {
                  if(-1 != Fgets32(iData, TA_CLIENTID, i, buffer))
                  {
                        logstr = "TA_CLIENTID ";
                        logstr += buffer;
                        logstr += '\n';
                        fputs(logstr.c_str(), fp);
                  }
                  if(-1 != Fgets32(iData, TA_USRNAME, i, buffer))
                  {
                        logstr = "TA_USRNAME ";
                        logstr += buffer;
                        logstr += '\n';
                        fputs(logstr.c_str(), fp);
                  }
                  if(-1 != Fgets32(iData, TA_CLTNAME, i, buffer))
                  {
                        logstr = "TA_CLTNAME ";
                        logstr += buffer;
                        logstr += '\n';
                        fputs(logstr.c_str(), fp);
                  }
            }
      }
      else
      {
            printf ( "tpcall error:%d:%s\n", tperrno, tpstrerror(tperrno) );
      }
      fclose(fp);
      boost::this_thread::sleep(boost::posix_time::milliseconds(1000*1000));
      tpterm();
      return 0;
}


5. 服务端设置
关掉tuxedo服务器的安全配置,即如果ubb中设置了"SECURITY ACL"需要注释掉,这并不代表配置了安全就不支持客户部查询MIB了,只是多了些约束而已。

6. 运行和结果
运行:北京联动北方科技有限公司

Test2 是我编译后的可执行文件名。mylog是日志名,clt1 是客户端名,usr1 是用户名, 这都是参数而已。
结果(结果放在mylog里面):
北京联动北方科技有限公司

日志结果:
北京联动北方科技有限公司




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