18 pb 与tuxedo 的FML 函数Fchg 参数解释
我的例子是把 bea 的value 放到NAME的字段buffer 中。长度我设置的为0。因为 carray 类型需要指定具体的长度,FML 的buffer 类型可以不指定字段的具
体长度,可以使用统一使用0 长度。这些你可以读读有关Fchg 函数的online book
说明。在http://edocs.bea.com 中有。
fadd32 是往buffer 中增加,occ 值依次累加,不能更改已经有的occ 的value,
但是fchg 函数却可以。通过occ 来控制。
19 BCB 开发Tuxedo 客户端配置详解!!
大家知道很多编程语言都可以开发 Tuxedo 客户端;Delphi,PB,Vc,BCB
等等。
今天就将用 BCB 开发Tuxedo 客户端的心得体会写出来,与大家共同探讨。
机器配置:win2k、Tuxedo7.1、BCB6.0;
通常要做以下 5 步:
1、把%TuxedoDir%\bin 目录下的wtuxws32.dll 用BCB 自带的implib 生成
wtuxws32.lib;
方法是 implib wtuxws32.lib wtuxws32.dll,这样就生成了符合BCB 的链接库
wtuxws32.lib。
2、把这个wtuxws32.lib 加到BCB的project 中(Project --> Add to Project) 。
3、在实现单元(如unit1.cpp)中要#include "atmi.h",当然你必须在project->option->
directories/conditional->include path 中加入%TuxedoDir%\inlude 这个目录。
4、在调用Tpinit 之前,必须加两条语句:tuxputenv("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,但一定要非0;这一步很重要,否则客
户端始终连接不了服务器的应用。
如果不成功,可以察看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)
{
}
//------
20 tuxedo6.5 和weblogic7.0 通过wtc 互联
昨天自己想试一下 wtc,发现网上没有很好的文档,只有徐春金的一个,是
针对weblogic6.0 的,和weblogic7.0 的配置区别还是挺大的,就写了写
版主,这个文章放在这可以吗?如果不行就删掉吧
TUXEDO6.5 与WEBLOGIC7.0 通过WTC 进行互连的配置
WEBLOGIC 与TUXEDO 的互连有两种方式, 通过JOLT 或通过
WTC(WEBLOGIC TUXEDO CONNECTOR)。它们都是BEA 公司的产品,WTC
不仅能让
WEBLOGIC 调用TUXEDO 中的SERVICE,而且能让TUXEDO 调用WEBLOGIC
中的EJB。
一、WTC 配置说明:
TUXEDO 与WEBLOGIC 之间通过DOMAIN 方式实现互相调用,在这个例子
中有两个DOMAIN:TUXEDO 所在的DOMAIN 名为TDOM1, WEBLOGIC 所
在的
DOMAIN 名为TDOM2。TDOM1 上有TOUPPER 它是一个TUXEDO
SERVEICE,TDOM2 上有TOLOWER 它是一个EJB,
下 面 以 WTC 安装带的例子simpapp( 在WTC 安装目录的
samples\server\src\examples\wtc\atmi\simpapp 下)说明配置过程:
TUXEO 版本: TUXEDO65
WEBLOGIC 版本: WEBLOGIC7.0
TUXEO 安装目录: D:\TUXEDO
WEBLOGIC 安装目录: D:\bea
操作系统: WIN2000
例子目录: E:\tuxedo-test(把samples\server\src\examples\wtc\atmi\simpapp 目录
COPY 到E:\tuxedo-test)
服务器名: localhost
二、TUXEDO 要做的配置
(1)首先确保你的PATH 环境变量已经包含了你的C 的编译器路径,如果没有
可以使用set 来设置。
(2)把samples\server\src\examples\wtc\atmi\simpapp 目录COPY 到E:\tuxedo-test
(3)进入到E:\tuxedo-test 路径,修改setEnv.cmd 文件:
set TUXDIR=D:\TUXEDO
set WSNADDR=//localhost:17000
set APPDIR=E:\tuxedo-test
set PATH=%TUXDIR%\bin;%APPDIR%;%PATH%
set TUXCONFIG=%APPDIR%\tuxconfig
运行该文件,使环境变量生效。最好能够逐个检查一下,因为在UNIX 系统上有
时候会设置不上。如果环境变量都生效了,就可以进行下一步了
建议大家在真正做的时候把这些环境变量加到:windows 放到系统的环境变量
中;如果是UNIX 加入到该用户的.profile 文件中,这样
在你下次进入的时候环境变量就已经正确设置了。
(4) 编译客户端和服务端程序:
buildclient -o simpcl - f simpcl.c
buildserver -o simpserv - f simpserv.c -s TOUPPER
这个编译应该不会有什么问题,只要环境变量设置正确
(5)从samples\server\src\examples\wtc\atmi\simpapp 路径拷贝ubbdomain 和
dom1config 文件到E:\tuxedo-test
(6)从samples\server\src\examples\wtc\atmi\simpserv 路径拷贝tolower.c 文件到
E:\tuxedo-test
(7)修改ubbdomain 文件,主要是<braced> 部分,例子如下:
APPDIR="E:\tuxedo-test"
TUXCONFIG="E:\tuxedo-test\tuxconfig"
TUXDIR="D:\TUXEDO"
(8)编译ubbdomain :
tmloadcf -y ubbdomain
(9)修改dom1config 文件如下:
*DM_RESOURCES
VERSION=U22
*DM_LOCAL_DOMAINS
TDOM1 GWGRP=GROUP2
TYPE=TDOMAIN
DOMAINID="TDOM1"
*DM_REMOTE_DOMAINS
TDOM2 TYPE=TDOMAIN
DOMAINID="TDOM2"
*DM_TDOMAIN
TDOM1 NWADDR="//localhost:18000"
TDOM2 NWADDR="//localhost:18001"
*DM_REMOTE_SERVICES
TOLOWER RDOM="TDOM2"
(10)编译dom1config:
set BDMCONFIG=E:\tuxedo-test\bdmconfig
dmloadcf -y dom1config
注意在编译前增加环境变量 BDMCONFIG,最好也是像前面的环境变量一样加
到系统环境变量或者.profile 文件中
(11)编译tolower 文件:
buildclient -v -f tolower.c -o tolower
此处编译可能会出错,原因是tolower.c 文件中一个注释写反了,修改后应该可
以编译
(12)启动server:
tmboot -y
(13)此时可以验证一下系统启动的情况,使用tmadmin-->psc,应该可以看到
启动的如下service:
DMADM, GWADM 和 GWTDOMAIN
TOUPPER---->simpserv 提供的
TOLOWER---->GWTDOMAIN 提供的
如果上面的 service 都正确的启动了,就可以作weblogic 的配置了.
三、WEBLOGIC 要做的配置:
(1) 启动WebLogic examplesServer , 可以从开始菜单启动, 或者直接运行
D:\bea\weblogic700\samples\server\config\
examples\setExamplesEnv.cmd, 然后运行
D:\bea\weblogic700\samples\server\config\examples\startExamplesServer.cmd
注意:1.确保没有WTCServer Mbeans 在这个server 上存在,否则会有问题.
2.在WebLogic 中增加一个用户TDOM1,如果没有增加,在运行tolower 的时候
后有如下错误:
Can't send request to service TOLOWER
Tperrno = 13
(2) 打开一个command 窗口, 进入到
D:\bea\weblogic700\samples\server\config\examples 路径下, 运行
setExamplesEnv.cmd
(3)编译wtc_toupper.jar :
ant
(4)修改setWTCMbeans 文件:
set wlsNWAddr=//localhost:18001
set tuxNWAddr=//localhost:18000
set interop