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



    大家知道很多编程语言都可以开发 Tuxedo  客户端;Delphi PBVcBCB 

等等。 

今天就将用BCB 开发Tuxedo 客户端的心得体会写出来,与大家共同探讨。 

机器配置:win2k Tuxedo7.1BCB6.0; 

通常要做以下步: 

1、把%TuxedoDir%\bin目录下的wtuxws32.dllBCB自带的 implib 生成 wtuxws32.lib; 

方法是implib wtuxws32.lib wtuxws32.dll,这样就生成了符合 BCB的链接库wtuxws32.lib 。 

、把这个wtuxws32.lib 加到BCBproject (Project --> Add to Project) 。 

3、在实现单元(unit1.cpp) 中要#include "atmi.h", 当然你必须在project->option-> directories/conditional->include path 中加入%TuxedoDir%\inlude 这个目录。 

、在调用 Tpinit  之前,必须加两条语句:tuxp utenv("WSWADDR=//ip:端口"); 

tuxputenv("WSENVFILE=");


5、很关键,必须在服务器端的Tuxconfig 文件中的SERVICES 节点后加入: 

WSL SRVGRP=GROUP1 SRVID=10 CLOPT="-t -- -n //192.168.0.236:6677"


  (注:192.168.0.236 是服务器断的ip 地址,6677 是端口号);其次要在MACHINE节点后面加入MAXWSCLIENTS =5,可以不是5,但一定要非;这一步很重要,否则客户端始终连接不了服务器的应用。 

如果不成功,可以察看C:\根目录下的ULOG.XXXX ,里面会有详细的出错信息。 

下面贴一段我用BCB 改造的SimpApp: 

#include <vcl.h>
#pragma hdrstop
#include "atmi.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package (smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{ char *sendbuf, *rcvbuf;
      long sendlen, rcvlen;
      int ret;
      tuxputenv("WSNADDR=//192.168.0.235:6677");
      tuxputenv("WSENVFILE=");
      if (tpinit(NULL)==- 1)
      {
            Panel1->Caption = "error";
      }
      else
      {
            Panel1->Caption = "ok";
            sendlen = LabeledEdit1->Text.Length();
            if((sendbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL)
            {
                  ShowMessage("分配发送存贮空间失败!!") ;
                  tpterm();
            }
            if((rcvbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL)
            {
                  ShowMessage("分配接受存贮空间失败!!") ;
                  tpfree(sendbuf);
                  tpterm();
            }
            StrCopy(sendbuf,(LabeledEdit1->Text).c_str());
            ret = tpcall("TOUPPER", sendbuf, 0, &rcvbuf, &rcvlen, 0);
            if (ret == - 1)
            { ShowMessage("调用服务失败");
                  tpfree(sendbuf);
                  tpfree(rcvbuf);
                  tpterm();
                  Abort();
            }
            LabeledEdit2->Text = StrPas(rcvbuf);
            tpfree(sendbuf);
            tpfree(rcvbuf);
            tpterm();
      }
}


希望对大家有帮助!!-------------------------------------------------------------------------- 

#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//------




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