TUXEDO与WEBLOGIC通过WTC进行互连的配置

合集下载

最新weblogic与tuxedo配置详解

最新weblogic与tuxedo配置详解

一、WTC配置步骤:1. Tuxedo的配置2.1.1. 设置环境变量:2.1.3. 配置ubbconfigMASTER simpleMAXACCESSERS 50MAXSERVERS 50MAXSERVICES 50MODEL SHMLDBAL N*MACHINESDEFAULT:APPDIR="c:\tuxedo_test\simpapp"TUXCONFIG="c:\tuxedo_test\simpapp\tuxconfig"TUXDIR="c:\bea\tuxedo8.1"#Example:# APPDIR="/home/me/simpapp"# TUXCONFIG="/home/me/simpapp/tuxconfig"# TUXDIR="/usr/tuxedo"VM44 LMID=simpleMAXWSCLIENTS=5 #指定的最大客户端连接数#Example:#beatux LMID=simple*GROUPSGROUP1 LMID=simple GRPNO=1 OPENINFO=NONEJSLGRP LMID=simple GRPNO = 2JREPGRP LMID=simple GRPNO = 3GROUP4 LMID=simple GRPNO=4 OPENINFO=NONE*SERVERSDEFAULT:CLOPT="-A"simpserv SRVGRP=GROUP1 SRVID=1WSL SRVGRP=GROUP1 SRVID=5 CLOPT="-A -t -- -n //192.168.57.41:8888 -m 2 -M 5 -x 10" #WSL发布地址JREPSVR SRVGRP=JREPGRP SRVID=10 CLOPT="-A -- -W -PC:\bea\tuxedo8.1\udataobj\jolt\repository\jrepository"红色为jolt服务需要的配置,jolt需要单独的license。

WTC在weblogic8

WTC在weblogic8

WTC在weblogic8.0上的配置把例子以佛山的wtcEJB配置为例:1.在weblogic控制台页面的左页面选择services=>>WTC选择configure a new WTC Services如图:2.填写WTC的名称,并且按create按钮3.在foshanIbss节点下产生7个子节点4.选择Local Tuxedo Access Points节点:点击Configure a new Local Tuxedo Access Point...超链连产生一个配置本地端访问点的页面。

输入本地的访问节点名为(FOSHANWTC)。

图中显示的foshanIbssLocal有错。

在Network Address项中填入weblogic的IP地址以及一个唯一的端口号如图:5.配置远程tuxedo的访问节点。

选择Remote Tuxedo Access Points节点,点击Configure a new Remote Tuxedo Access Point...超链连产生配置远程访问点的页面。

输入远程的访问节点名,本地的访问节点名。

在Network Address项中填入远程tuxedo端的IP地址以及唯一的端口号。

如图:6.配置远程tuxedo对本地端访问的服务名(一个ejb)点击Exported Service节点,点击Configure a new Exported Service (佛山目前没有设置tuxedo对本机的访问)7.配置本地端对远程tuxedo访问的服务名增加一个用户名(由一个EJB调用远程服务)点击Imported Service节点,点击Configure a new Imported Service输入Resource Name: IMCHANNELLocal Access Point : FOSHANWTCRemote Access Point List: intfdom点击create按钮8.配置远程对本地的访问密码(如果有配置Exported Service时需要,其它时候不需要)Secuity=>realm节点点击Configure a new UserName:FOSHANWTC Password:1234Confim password:1234。

为WTC配置TUXEDO配置文件ubbconfig

为WTC配置TUXEDO配置文件ubbconfig

为WTC配置TUXEDO配置文件ubbconfig文章分类:Java编程tuxedo环境变量假设tuxedo安装在目录$TUXEDO_DIR,如/tuxedo/tuxedo10.0,主机IP为192.168.108.104,需要设置以下环境变量:TUXDIR=$TUXEDO_DIRTUXCONFIG=$SELECT_DIR/tuxconfig其中,tuxconfig为您指定目录$SELECT_DIR下的tuxdeo自动编译产生的文件,目录自选,但必须保留"tuxconfig"关键字。

tuxedo配置文件之ubbconfig*RESOURCESIPCKEY 96338DOMAINID DOM_HOSTA_TUXEDOMASTER HOSTA_TUXEDOMAXACCESSERS 200MAXSERVERS 120MAXSERVICES 350MODEL SHMLDBAL NBLOCKTIME 6400SCANUNIT 5*MACHINESDEFAULT:TUXDIR="/tuxedo/tuxedo10.0" #相关目录需要更改为您自己的APPDIR="/tuxedo/service_app/bin"TUXCONFIG="/tuxedo/info/tuxconfig"ULOGPFX="/tuxedo/log"MAXWSCLIENTS=100vctest2 LMID=HOSTA_TUXEDO #vctest2主机名,unix可通过uname -n获得,LIMD表示主机逻辑ID*GROUPSCUSTOMGRP LMID=HOSTA_TUXEDO GRPNO=1 OPENINFO=NONELDMGRP LMID=HOSTA_TUXEDO GRPNO=2LGWGRP LMID=HOSTA_TUXEDO GRPNO=3*SERVERSDEFAULT:CLOPT="-A -- "#DMADM(DOMAIN ADMINISTRATOR SERVER)#一个tuxedo应用只能有一个DMADM,可以在任何一个组中#一个tuxedo应用可以有多个GWADM,GWTDOMAIN对,一个组只能有一个GMADM,GWTDOMAIN对,#管理域的server,在运行时管理BDMCONFIG,对已登记的gateway group提供支持,在tuxedo系统中,只能有一个DMADM进程,#且不能对它采用MSSQ,不能有REPLYQ.DMADM SRVGRP=LDMGRP SRVID=130#GWADM(GATEWAY ADMINISTRATOR SERVER)#管理域的域网关进程,在运行时可以对某一组域网关进行管理,主要从DMADM那里取得域的配置信息,并对域网管进程#及跨越域的全局事务的LOG文件进行管理.GWADM SRVGRP=LGWGRP SRVID=140#GWTDOMIN(GATEWAY PROCESS)#处理域之前的互操作,使本地域和调用远程域可以互相调用彼此的service,其中GMADM和GWTDOMAIN必须在一个组中,#一个tuxedo应用可以有多个GWADM,GWTDOMAIN对,一个组只能有一个GMADM,GWTDOMAIN对,但一个tuxedo应用#只能有一个DMADM,DMADM可以在任何一个组中,一个本地域可以和多个远程域实现互操作.GWTDOMAIN SRVGRP=LGWGRP SRVID=150#发布的自定义服务simpserv SRVGRP=CUSTOMGRP SRVID=500 MIN=1 MAX=10 RESTART=Y MAXGEN=10 GRACE=10CLOPT="-A -r --"RQADDR="simpserv" REPLYQ=Y*SERVICESTOUPPER命令:加载ubboconfigtmloadcf -y ubbconfig关于配置WSL、JSL、JREPSVR在采用jolt方式调TUXEDO服务时必须配置,配置样例如下:*SERVERSDEFAULT:CLOPT="-A -- "WSL SRVGRP=ABMGRP SRVID=100CLOPT="-A -t -- -n //192.168.108.104:8271 -m 10 -M 200 -x 30"JSL SRVGRP=JOLTGRP SRVID=110CLOPT="-A -t -- -n //192.168.108.104:8272 -m 10 -M 200 -x 30"JREPSVR SRVGRP=JREPGRP SRVID=120GRACE=0CLOPT="-A -- -W -P$TUXDIR/udataobj/jolt/repository/jrepository"编译tuxedo自带例子simpcl.c,simpserv.c($TUXEDO_HOME/samples/atmi/simpapp)buildclient -o simpcl -f simpcl.cbuildserver -o simpserv -f simpserv.c -s TOUPPER将simpserv.o拷贝到ubbconfig中配置的APPDIR目录,这个就是我们发布的服务:DEFAULT:......simpserv SRVGRP=CUSTOMGRP SRVID=500 MIN=1 MAX=10 RESTART=Y MAXGEN=10 GRACE=10CLOPT="-A -r --"RQADDR="simpserv" REPLYQ=Y*SERVICESTOUPPER参数说明:*RESOURCES节点IPCKEY 共享内存idUID TUXEDO管理员用户idGID TUXEDO管理员组idPERM TUXEDO管理员组用户的权限MAXACCESSERS 服务端和客户端的最大进程数MAXSERVERS 限制可以启动服务总数MAXSERVICES 限制可以发布交易总数MASTER 指出主控节点的逻辑名,第二个是备份节点MODEL 应用构架,SHM表示单机,MP表示多机OPTIONS LAN,MIGRATE表示是一个网络应用,服务可以移植到替代处理器上 SECURITY 安全级别(5个)AUTHSVC 客户端可以通过交易"AUTHSVC"获得认证NOTIFY DIPIN,客户端通过dip-in收到广播通知SYSTEM_ACCESS PROTECTED,NO_OVERRIDE,应用代码不得干扰共享内存LDBAL 设Y则进行负载均衡MAXBUF[S]TYPE 数据缓冲类型及子类的最大数SCANUNIT 内部时间间隔单位,单位是秒SANITYSCAN 检索公告牌的内部时间间隔,单位是SCANUNITBLOCKTIME 交易超时时间,单位是SCANUNITBBLQUERY DBBL查询所有BLL的时间间隔DBBLWAIT DBBL等待BBL回应的超时时间MAXCONV 同时最大会话数*MACHINES MACHINES节点vctest2 物理处理器名,可以通过"uname -n"或节点名得到TUXDIR TUXEDO系统软件安装位置APPDIR 应用服务位置全路径TUXCONFIG TUXEDO配置文件全路径ENVFILE 环境文件全路径ULOGPFX 应用日志文件全路径MAXACCESSERS 本机最多处理器数,可以超越*RESOURCES节定义MAXCONV 本机最大会话数,可以超越*RESOURCES节定义*GROUPS GROUP节点BANKB1 组的唯一标识符,可以是字母数字GRPNO 组的唯一数字标识符LMID 组所在的机器*SERVERS SERVER节点,列出所有服务程序DEFAULT: 本处列出的参数为其下列出的服务的缺省值,但可以被单列条目替代相应值RESTART 如果设成Y,则服务可以重启动MAXGEN 在GRACE定义时间之内,服务可以重启动MAXGEN次GRACE 周期,单位是秒RCMD 每次服务重启动,本处定义的脚本或命令被执行ENVFILE 列有环境变量的文件,在交易启动前设入环境TLR 一个服务名,用buildserver建立,应在APPDIR或$TUXDIR/binSRVGRP 服务属于一个在*GROUPS节中定义的服务组;如果需要移植服务,也可以定义在多个组中。

配置WebLogic Tuxedo Connector

配置WebLogic Tuxedo Connector

文档说明:摘自iteye taiyuan的博客/blog/37296配置WebLogic Tuxedo Connector (转)∙博客分类:∙tuxedoWeblogic配置管理应用服务器编程全文检索WebLogic Tuxedo Connector (WTC) 是一个兼容JCA (J2EE 连接器架构)的软件组件,它提供Tuxedo 服务和WebLogic Server 部署的企业应用程序之间的互操作性。

WebLogic Server 组件能够使用WTC 与Tuxedo 服务进行通信,Tuxedo 服务也能够调交互用基于WebLogic Server 的EJB 。

手动配置WebLogic Tuxedo Connector 是非常沉闷乏味且易于出错的操作,从这种观点出发,本文提出了两种编程式可选解决方案。

第一种基于JMX ,第二种基于对命令行方式的weblogic.Admin 工具的使用。

本文提供了Java 类库,既能生成所需的JMX 对象又能生成基于weblogic.Admin 的shell 文件。

Tuxedo 服务已经存在多年了,而且很多EIS (企业信息系统)就是以这种服务功能为基础,比如事务支持、域和ACL (访问控制列表)安全、域级别故障转移和反馈、以及高级消息服务。

另一方面,J2EE 应用程序不能保持与现有的信息系统隔离;它们必须能够支持Tuxedo 事务,在CORBA Java 和CORBA C++ 之间进行互操作,同时也要能够在Java RMI/IIOP 和Tuxedo CORBA 之间互操作。

WTC 实现了所有这些方案和一些其他可能类似JATMI (Java 应用程序到事务监控器接口)的实现方案,其中JATMI 是一种与Tuxedo ATMI 类似的协议。

WTC 实现了所有这些方案和一些其他可能类似JATMI (Java 应用程序到事务监控器接口)的实现方案,其中JATMI 是一种与Tuxedo ATMI 类似的协议。

第11章:TUXEDO与其他系统的互连

第11章:TUXEDO与其他系统的互连

第十二章:TUXEDO与其他系统的互连12.1TUXEDO的/DOMAIN技术介绍/DOMAIN简介随着企业信息化的水平的不断提高,各类新兴业务的不断涌现,一个企业内部会有很多计算机应用系统,如ERP,CRM,CALL CENTER,电子商务系统,大机遗留系统等等,同时不同的企业之间要实现电子商务,他们之间的系统也要能够互相调用。

在一个复杂的企业应用环境下,不同产商的产品,不同应用系统之间要能够有效的互连,实现互操作,为企业构造一个紧密协作、集中管理的,同时又是一个高可靠、高可用、易于扩展的企业应用环境。

TUXEDO是一个高度开放的系统,能够很容易的与别的应用系统实现互操作。

为了有效实现有其他系统的互连,TUXEDO提出了DOMAIN(域)的概念,将由很多台 (几百甚至上千)服务器共同组成的应用系统按功能或结构划分为不同的域,每个域独立地完成域内的操作,域间操作由域网关完成,从而提高每个域和整个系统的运行效率。

TUXEDO的域特性把客户/服务器模型扩展到多个独力自治的应用系统. 一个域既可以是一组TUXEDO的应用程序——若干相关的应用服务和配置环境的组合。

域同时也可能是一组运行在另一个非TUXEDO环境中的应用程序。

TUXEDO和其他中间件的互操作也是利用域的概念来实现的。

不同的TUXEDO应用域中的服务程序可以互相访问对方的服务,并且当一个交易同时执行多个应用域中的服务(即对于分布式事务处理)时,能够确保交易的完整性。

同时,TUXEDO系统可以指定哪些服务是可供外部应用域访问的并可为这些服务设置访问控制表等安全认证手段,提高整个系统的安全性。

TUXEDO对域的划分和管理类似于网络应用中划分子网的概念—将复杂的网络应用按功能或地域等因素划分为不同的子网,子网间以路由器联接,不同的网络协议通过网关透明地转换,从而提高网络效率并加强整个网络的可管理性。

这一应用模式已被广泛证明是处理大范围、复杂应用的成功经验和事实上的标准,同时也是TUXEDO在多年大规模企业用户的实际应用中总结和开发的行之有效的中间件功能。

weblogic+wtc+配置说明

weblogic+wtc+配置说明

一、添加一个jolt服务(需要jolt liccense)二、WTC配置步骤:1. Tuxedo的配置2.1.1. 设置环境变量:2.1.3. 配置ubbconfigDOMAINID simpappMASTER simpleMAXACCESSERS 50MAXSERVERS 50MAXSERVICES 50MODEL SHMLDBAL N*MACHINESDEFAULT:APPDIR="c:\tuxedo_test\simpapp"TUXCONFIG="c:\tuxedo_test\simpapp\tuxconfig"TUXDIR="c:\bea\tuxedo8.1"#Example:# APPDIR="/home/me/simpapp"# TUXCONFIG="/home/me/simpapp/tuxconfig"# TUXDIR="/usr/tuxedo"VM44 LMID=simpleMAXWSCLIENTS=5 #指定的最大客户端连接数#Example:#beatux LMID=simple*GROUPSGROUP1 LMID=simple GRPNO=1 OPENINFO=NONEJSLGRP LMID=simple GRPNO = 2JREPGRP LMID=simple GRPNO = 3GROUP4 LMID=simple GRPNO=4 OPENINFO=NONE*SERVERSDEFAULT:CLOPT="-A"simpserv SRVGRP=GROUP1 SRVID=1WSL SRVGRP=GROUP1 SRVID=5 CLOPT="-A -t -- -n //192.168.57.41:8888 -m 2 -M 5 -x 10" #WSL发布地址红色为jolt服务需要的配置,jolt需要单独的license。

WTC配置

WTC配置

1、进入Weblogic控制台,选择Interoperability->WTC Servers,点击右侧的按钮
2、输入要新建WTC Server的名字,点击按钮:
3、在WTC Server列表中,点击新建的Server名称可以打开设置界面:
4、设置界面如下,这里需要设置Local APs、Remote APs和imported三个选项卡
5、Local APs选项卡设置:点击按钮新增本地接入点
本地接入点配置信息如下:
6、Remote APs选项卡设置:点击按钮新增远程接入点
远程接入点配置信息如下:
7、imported选项卡设置:点击按钮新增服务配置
服务配置信息如下:
说明:
1、本地接入点DEVWTC和远程接入点CRMTUX均需在tuxedo的配置文件中配置,且名字
必须和配置文件中的名字保持一致,如tuxedo配置文件片段如下:
2、服务配置信息中的Resource Name和Remote Name默认一样即可,Remote Name来自td_m_naming表的service_name字段:
SELECT service_name
FROM ulcu.td_m_naming
WHERE logical_name ='LCU名称'。

通过wtcjolt进行tuxedo与weblogic通信开发

通过wtcjolt进行tuxedo与weblogic通信开发

通过wtcjolt进行tuxedo与weblogic通信开发[评论]李振嘉(dev2dev ID:lizhenjia)(一)摘要bea tuxedo与weblogic作为业界优秀的交易与应用服务器中间件产品,在电信,银行,金融等领域广泛应用,通常由tuxedo处理系统的核心业务,weblogic将业务应用扩展到internet平台,实现电子商务,由weblogic调用tuxedo的服务或者由tuxedo的服务调用通过weblogic部署的ejb,因此tuxedo与weblogic 之间的互连通信会经常遇到,本文通过2个例子介绍tuxedo与weblogic通信的配置与开发,两个例子分别通过wtc(weblogic tuxedo connector)、jolt实现weblogic与tuxedo通信的配置与开发.本文所有例子程序与配置均在Sun Solaris,weblogic8.1,tuxedo8.0平台上进行,如在windows等其他平台开发配置方法大同小异;另外为了减少篇幅文中涉及的例子代码没有全部排列,只选择粘贴了关键部分的代码.(二)通过wtc进行tuxedo与weblogic通信的配置与开发1)域间通信以及wtc介绍Tuxedo的域间通信进程介绍Wtc是tuxedo通过域间通信实现的,因此需要tuxedo启动用于域间通信的进程,介绍wtc之前先介绍以下几个域间通信的进程.*DMADM(DOMAIN ADMINISTRATOR SERVER)治理域的server,在运行时治理BDMCONFIG,对已登记的gateway group提供支持,在tuxedo系统中,只能有一个DMADM进程,且不能对它采纳MSSQ,不能有REPLYQ.*GWADM(GATEWAY ADMINISTRATOR SERVER)治理域的域网关进程,在运行时能够对某一组域网关进行治理,要紧从DMADM那儿取得域的配置信息,并对域网管进程及跨过域的全局事务的LOG文件进行治理.*GWTDOMIN(GATEWAY PROCESS)处理域之前的互操作,使本地域和调用远程域能够互相调用彼此的service,其中GMADM和GWTDOMAIN 必须在一个组中,一个tuxedo应用能够有多个GWADM,GWTDOMAIN对,一个组只能有一个GMADM,GWTDOMAIN对,但一个tuxedo应用只能有一个DMADM,DMADM能够在如何一个组中,一个本地域能够和多个远程域实现互操作.Wtc介绍Wtc(weblogic tuxedo connector)是weblogic server的一个组成部分,能够实现tuxedo和weblogic之间的应用集成,为weblogic和tuxedo提供了双向的互操作性,即tuxedo service能够调用在weblogic上部署的ejb,在weblogic上部署的ejb能够调用tuxedo的service.2)Tuxedo方面需要进行的工作修改并编译ubb文件1)在ubb文件*GROUPS节点中增加如下3个tuxedo Group:DMGroupLMID=simple GRPNO=2 OPENINFO=NONEDMGroupLMID=simple GRPNO=3 OPENINFO=NONEWSGroupLMID=simple GRPNO=4 OPENINFO=NONE2)在ubb文件*SERVERS节点中增加如下3个tuxedo server:DMADMSRVGRP=DMGroup SRVID=22230GWADMSRVGRP=GWGroup SRVID=22340GWTDOMAINSRVGRP=GWGroup SRVID=22350其中GWADM和GWTDOMAIN应该在同一个组中,储存ubb文件并按如下完成编译:tmloadcf ubb_filename之后tmboot-y启动tuxedo server,假如启动以上3个server时报类似Application initialization failure的启动失败的提示信息,那么注意查看tuxedo的ULOG日志文件,通过日志的提示排除错误,那个地点常见的一个错误是没有在系统环境变量中定义BDMCONFIG或者指定该文件路径错误.(关于环境变量的修改见下文).增加并编译dm文件dm文件是tuxedo进行域间通信时的配置文件,tuxedo与weblogic通过wtc通信是通过域间通信实现的,因此dm文件需要创建,dm文件通常能够存放在ubb文件所在的路径下.Dm需要做的配置如下:*DM_LOCAL_DOMAINStuxedo_domain GWGRP=GWGroupTYPE=TDOMAINDOMAINID=billingDMTLOGDEV="/../../log/DLOG"*DM_REMOTE_DOMAINSweblogic_domain TYPE=TDOMAINDOMAINID=weblogic*DM_TDOMAINtuxedo_domain NWADDR="//tuxedoserver_domain_ip:portNWDEVICE="../../bin"weblogic_domain NWADDR="//weblogicserver_domain_ip:port*DM_REMOTE_SERVICES*DM_LOCAL_SERVICESfml32_test RNAME="fml32_test"*DM_LOCAL_DOMAINS定义本地tuxedo域的信息,分别定义该域所在的组,域类型,域的唯独标识,域间通信时日志的全路径,其中GWGRP, DOMAINID的值要与ubb文件中的定义匹配.*DM_REMOTE_DOMAINS定义远程weblogic域的信息,分别定义域类型,域的唯独性标识,该id标识需要与在weblogic server中的配置名称吻合,否那么通信将会失败,关于在weblogic中的相应配置下文将作详细描述.*DM_TDOMAIN定义在DM_LOCAL_DOMAIN中差不多说明的本地域和在DM_REMOTE_DOMAINS中差不多说明的远程域的具体的通信ip地址以及通信端口,其中NWDEVICE指定tuxedo公布的server通信进程文件所在的路径.*DM_REMOTE_SERVICES定义当前域需要调用远程域的服务名称,本例中的服务作为被调用服务,因此此处能够为空.*DM_LOCAL_SERVICES定义当前域对外公布的tuxedo service名称,能够通过RNAME重新命名service.在以上NWADDR中指定的端口一定不能是差不多被占用的端口,否那么通信将失败,之前应该用netstat命令查询得到闲暇的端口.储存dm文件并按如下完成编译:dmloadcf dm_filename修改系统环境变量在系统环境变量中增加:export BDMCONFIG=$HOME/your_path/bdmconfig其中bdmconfig文件为dmloadcf dm_filename编译之后生成的2进制配置文件.编写基于tuxedo的程序以及makefile.说明Tuxedo支持string,carry,view,view32,fml,fml32等数据缓冲区,其中fml32类型相对复杂且比较常用,本例子采纳fml32数据缓冲区开发,第一需要编写fml32数据缓冲区的定义文件,包括fml32数据缓冲区各个字段的名称差不多长度等等,并将该文件生成相应的c语言.h头文件,在应用程序中需要包含该头文件,如此应用程序中即能够使用fml32数据缓冲区, fml32类型通常在开发数据库应用程序的时候比较常用,以下的例子完成的功能是:依照输入的学生学号从数据库中查询得到该学生的姓名和年龄,事实上输入和输出参数采纳fml32类型.编写并编译fml32数据缓冲区定义文件定义fml32数据缓冲区文件student_fld文件如下:*base 10000# name number type flags commentsstudent_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头文件,在应用程序中将引用该文件.编写源程序以及定义表定义t_student表,其中id表示学号,name表示学生姓名,age定义表示姓名.进入oracle sqlplus,键入:create table t_student (id number(10), name varchar2(20), age number(3));源程序文件wtc_jolt.pc(该程序通过pro*c文件访问数据库oracle数据库):#include <atmi.h>#include <userlog.h>#include <sqlca.h>#include <fml32.h>#include "student_fld.h"EXEC ORACLE OPTION (RELEASE_CURSOR = YES);#if defined(__STDC__) || defined(__cplusplus) tpsvrinit(int argc, char *argv[])#elsetpsvrinit(argc, argv)int argc;char **argv;#endif{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 ", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc);return -1;}}#ifdef __cplusplusextern "C"#endifvoid#if defined(__STDC__) || defined(__cplusplus)fml32_test(TPSVCINFO *rqst)#elsefml32_test(rqst)TPSVCINFO *rqst;#endif{FBFR32 *recebuf = NULL;FBFR32 *sendbuf = NULL;FLDLEN32 recebuflen = 0;EXEC SQL BEGIN DECLARE SECTION;long lStudentId = 0;char sName[15] = "";long lAge = 0;EXEC SQL END DECLARE SECTION;recebuf = (FBFR32 *)rqst->data;if ((sendbuf = (FBFR32 *)tpalloc("FML32", NULL, 1024)) == NULL) {tpterm();exit(-1);}recebuflen=0;Fget32(recebuf, student_id, 0, (char *)&lStudentId, &recebuflen); EXEC SQL Select age, name Into :lAge, :sNameFrom t_studentWhere student_id = :lStudentId;if (sqlca.sqlcode){userlog("查询失败,code=%d,detail=%s ", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc);exit(-2);}Fchg32(sendbuf, student_age, 0, (char *)&lAge, 0);Fchg32(sendbuf, student_name, 0, sName, 0);tpreturn(TPSUCCESS , 0, (char *)sendbuf, 0, 0);}编写makefile文件.SUFFIXES:.pc .cCC=ccTUXINCLUDE=$(TUXDIR)/includeORAINCLUDE=$(ORACLE_HOME)/precomp/publicWORKPATH=$(HOME)/../../...APPPATH=$(HOME)/binTARGET=wtc_joltall: $(TARGET)-@echo "build successfully!"wtc_jolt:wtc_jolt.cbuildserver -f wtc_jolt.o -o wtc_jolt -s "fml32_test" -r Oracle_XA -v.pc.c:proc iname=$<$(PROCPLSFLAGS) oname=$*.c parse=full hold_cursor=no release_cursor=yesinclude=$(TUXINCLUDE) include=$(ORAINCLUDE)$(CC) -I$(ORAINCLUDE) -I$(TUXINCLUDE) -c $(ORACFLAGS) $*.c将例子文件公布成tuxedo server和service.通过makefile将wtc_jolt.pc编译成可执行文件wtc_jolt之后.(一)修改tuxedo ubb配置文件.1)在 *server节点中添加:wtc_jolt SRVGRP=GROUP SRVID=1100其中GROUP是tuxedo应用所在的组, SRVID是该server的标识id,注意不要与其他SRVID重复,wtc_jolt 是刚刚编译生成的可执行文件名字,如此该文件就被公布为tuxedo server.2)在*service节点中添加:fml32_test其中fml32_test是wtc_jolt.pc文件中的函数名字,如此该函数就被公布为属于server:wtc_jolt中的一个tuxedo service.3)编译修改之后的ubb文件:tmloadcf ubb_filename(二)修改tuxedo dm配置文件.1)在*DM_LOCAL_SERVICES节点中添加:fml32_test RNAME="fml32_test"公布fml32_test service,使该service能够被其他域中的服务调用.2)编译修改之后的dm文件:dmloadcf dm_filename以上配置和开发工作完成之后tuxedo方面的工作完成,tmboot ?y启动tuxedo,如有以下提示信息,tuxedo 方面的工作宣告成功.1) exec DMADM -A :process id=28863 ... Started.exec GWADM -A :process id=28864 ... Started.exec GWTDOMAIN -A :process id=28865 ... Started.以上信息说明域间通信进程启动成功!2) exec wtc_jolt -A :process id=28950 ... Started.以上信息说明公布的server进程启动成功!现在键入命令tmadmin, 键入子命令psc, 如有以下提示信,说明公布service成功.Service Name Routine Name Prog Name Grp Name ID Machine # Done Status---------------------------------------------------------------------fml32_test fml32_test wtc_jolt GROUP 1100 simple 0 AVAIL进行到那个地点tuxedo方面所有的工作差不多完成,下面进入weblogic方面的工作.3)Weblogic方面需要进行的工作.创建tuxedo fml(32) 数据缓冲区定义文件对应的java类文件本文例子用到tuxedo fml32数据缓冲区,因此第一要创建该fml32数据缓冲区定义文件对应的java描述文件的类文件,将前面定义的文件student_fld.1)执行weblogic环境变量setWLSEnv.sh,使weblogic环境变量生效.2)运行: java weblogic.wtc.jatmi.mkfldclass32 student_fld生成student_fld.java描述文件.3)运行: javac ?d student_fld.java生成student_fld.class文件.4)该类文件的存放路径一定能够被weblogic识别,即储存在weblogic启动后CLASSPATH的路径中,否那么在后面配置wtc resource时会失败.配置weblogic wtc service进入weblgoic console,mydomain->services->wtc->Configure a new WTC service…Name属性键入: WTC_Service,create储存设置,现在WTC_Service将生成local tuxedo access等假设干子项,在下面将一步一步配置这些项目.配置local tuxedo accessmydomain->services->wtc-> WTC_Service-> Configure a new local tuxedo access point…依次填写Access Point: Local_Wls_DomainAccess Point ID: weblogicNetwork Address: //weblogicserver_ip:port注意:1)Access Point ID的值应该与在tuxedo dm文件中*DM_REMOTE_DOMAINS节中指定的domainid相同.2)Network Address中指定的通信端口一定是weblogic server上未被占用的端口.以上信息填写完成后点击create储存.配置remote tuxedo domainmydomain->services->wtc-> WTC_Service-> Configure a new r emote tuxedo access point…依次填写Access Point: Remote_Tuxedo_DomainAccess Point ID: billingLocal Access Point: Local_Wls_DomainNetwork Address: //tuxedoserver_ip:port注意:1)Access Point ID的值是远程tuxedo domain 的domain_id.2)Local Access Point的值是上面配置的local tuxedo access point的名字.以上信息填写完成后点击create储存.导入tuxedo servicesmydomain->services->wtc-> WTC_Service->Imported services->Configure a new imported service…Resource Name: fml32_testLocal Access Point: Local_Wls_DomainRemote Access Point List: Remote_Tuxedo_DomainRemote Name: fml32_test注意:1)Local Access Point是上面配置的local tuxedo access point的名字.2)Remote Access Point List是上面配置的remote tuxedo access point的名字.3)Remote Name是可供weblogic调用的远程tuxedo公布的service名字,即在Tuxedo dm文件的*DM_LOCAL_SERVICES节点中公布的service名字.配置wtc resourcemydomain->services->wtc-> WTC_Service->resources->Configure a new Resource….FldTbl32 classes: student_fld注意:1)resource定义fml(32),view(32)等数据缓冲区的类文件定义,其中student_fld确实是上面编译得到的类,假如源文件包含在包中那么要标明包名称在内的全路径,如:com.bea.wtc.test.classname2)其中fml和fml32类型的java类在那个地点要分别指定,不能通用,view(32)也是一样.以上信息填写完成后点击create储存,至此wtc service全部配置完成,单击wtc_service的Target and deploy标签,选择server,apply以上应用.编写通过wls访问tuxedo service的程序为了减少篇幅例子代码没有全部排列,只选择粘贴了代码中的关键部分.编写访问tuxedo service的ejb关键函数介绍创建本地接口文件,远程接口文件以及bean文件,公布以下远程方法:1)public CallDescriptor Tpacall(String service, TypedFML32 in_params)throws TPException, TPReplyException, RemoteException;2)public TypedFML32 Tpgetrply(CallDescriptor cd)throws TPException, TPReplyException, RemoteException;3)public TypedFML32 Tpcall(String service_name, TypedFML32 in_params)throws TPException, TPReplyException, RemoteException;Tpcall : 同步调用tuxedo service.Tpacall : 异步调用tuxedo service.Tpgetrply: 等待异步调用service的返回结果.关键函数代码import weblogic.wtc.jatmi.Reply;import weblogic.wtc.jatmi.TypedFML32;import weblogic.wtc.jatmi.TPException;import weblogic.wtc.jatmi.TPReplyException;import weblogic.wtc.gwt.TuxedoConnection;import weblogic.wtc.gwt.TuxedoConnectionFactory;import weblogic.wtc.jatmi.Ferror;import weblogic.wtc.jatmi.CallDescriptor;import weblogic.wtc.jatmi.ApplicationToMonitorInterface;private TuxedoConnection tuxConn = null;函数setUpConnectionpublic TuxedoConnection setUpConnection() throws TPException{Context ctx = null;TuxedoConnectionFactory tcf = null;try{ctx = new InitialContext();tcf= (TuxedoConnectionFactory)ctx.lookup(TUXEDOCONN_JNDI_NAME);}catch (NamingException ne){throw new TPException(TPException.TPENOENT, "Could not get TuxedoConnectionFactory : " + ne);}try{tuxConn = tcf.getTuxedoConnection();}catch (TPException e){throw new TPException(TPException.TPENOENT, "getTuxedoConnection threw exception: " + e);}return tuxConn;}函数Tpcallpublic TypedFML32 Tpcall(String service_name, TypedFML32 in_params) throws TPException, TPReplyException{Reply tuxReply = null;TypedFML32 tuxRtn = null;try{if (tuxConn == null) tuxConn = this.setUpConnection();}catch (TPException e){System.out.println("setUpConnection throw exception:" + e); throw e;}try{tuxReply = tuxConn.tpcall(service_name, in_params, 0);}catch (TPReplyException tre){System.out.println("tpcall threw TPReplyExcption " + tre);throw tre;}catch (TPException te){System.out.println("tpcall threw TPException " + te);throw te;}catch (Exception ee){System.out.println("tpcall threw exception: " + ee);throw new TPException(TPException.TPESYSTEM, "Exception: " + ee);}tuxRtn = (TypedFML32)tuxReply.getReplyBuffer();return tuxRtn;}函数Tpacallpublic CallDescriptor Tpacall(String service_name, TypedFML32 in_params) throws TPException, TPReplyException{CallDescriptor tuxRtn = null;try{tuxConn = this.setUpConnection();}catch (TPException e){System.out.println("setUpConnection throw exception:" + e);throw e;}try{tuxRtn=tuxConn.tpacall(service_name,in_params, ApplicationToMonitorInterface.TPNOTIME);}catch (TPReplyException tre){System.out.println("tpacall threw TPReplyExcption " + tre);throw tre;}catch (TPException te){System.out.println("tpacall threw TPException " + te);throw te;}catch (Exception ee){System.out.println("tpacall threw exception: " + ee);throw new TPException(TPException.TPESYSTEM, "Exception: " + ee);}return tuxRtn;}函数Tpgetrplypublic TypedFML32 Tpgetrply(CallDescriptor cd) throws TPException, TPReplyException {Reply tuxRtn = null;TypedFML32 result = null;try{if (tuxConn == null) tuxConn = this.setUpConnection();}catch (TPException e){System.out.println("setUpConnection throw exception:" + e);throw e;}try{tuxRtn = tuxConn.tpgetrply(cd, ApplicationToMonitorInterface.TPNOTIME); }catch (TPReplyException tre){System.out.println("tpgetrply threw TPReplyExcption " + tre);throw tre;}try{result = (TypedFML32)tuxRtn.getReplyBuffer();}catch (Exception e){System.out.println("getReplyBuffer threw exception: " + e);result = null;}tuxConn.tpterm();return result;}关于幸免调用超时有时Tuxedo service需要做时刻较长的处理,超过了tuxedo默认的调用超时时刻,为了幸免超时需要使客户端一直堵塞明白服务器端service返回结果;在传统tuxedo的c语言程序客户端能够指定tp(a)call函数的第6个参数flag为TPNOTIME,现在客户端假如有堵塞条件存在,客户端会一直堵塞即使超时也不返回;但通过weblogic的java客户端假如想要达到那个目的,假如采纳异步tpacall 调用,不仅仅要在tpacall中指定flag值为ApplicationToMonitorInterface.TPNOTIME,在tpgetrply等待结果时也同样需要指定第2个参数为ApplicationToMonitorInterface.TPNOTIME,否那么仅在tpacall 中指定不能达到幸免超时的目的.编写ejb客户端关键函数介绍:Public int selectService ();连接weblogic server,调用具体的函数调用tuxedo service.Public int callTestService(String service_name);依照输入参数学号,调用tuxedo service,获得返回结果学生姓名和年龄.关键函数代码函数selectServiceimport weblogic.wtc.jatmi.Ferror;import weblogic.wtc.jatmi.TypedFML32;import weblogic.wtc.jatmi.CallDescriptor;Public int selectService (){try{…连接weblogic server…………obj = ctx.lookup(ejb的jndiname);catch (Exception e){…………………}wtcHome=(WtcInstanceHome)javax.rmi.PortableRemoteObject.narrow(obj, WtcInstanceHome.class); try{wtcRemote = wtcHome.create();}catch (Exception e){………….}callTestService(service_name);try{wtcRemote.remove();catch (Exception e){………………}}函数callTestServicepublic String callTestService (String service_name){CallDescriptor tuxRtn = null;TypedFML32 inParams = null, tuxResult = null;try{//创建fml32缓冲区java描述类的实例inParams = new TypedFML32(new student_fld());//填写输入参数:学号inParams.Fchg(student_fld.student_id , 0, getStudentId());}catch (Ferror e){……}try{ //异步调用tuxedo service.tuxRtn = wtcRemote.Tpacall(service_name, inParams); }catch (Exception e){………}try{ //等待异步调用的service返回结果.tuxResult = wtcRemote.Tpgetrply(tuxRtn);}catch (Exception e){………}try{//得到学生的姓名和年龄…stuName = (String)tuxResult.Fget(student_fld.student_name, 0);stuAge = (Integer) tuxResult.Fget(student_fld.student_age, 0);}catch (Ferror e){………}………}(三)通过jolt进行tuxedo与weblogic通信的配置与开发1)jolt介绍Jolt是bea的一个单独的产品,它提供java编程接口,能够在java程序中使用jolt提供的类,使tuxedo应用框架扩展到internet和java客户端.2)Tuxedo方面需要进行的工作修改并编译ubb文件1)在ubb文件*GROUPS节点中增加如下2个tuxedo group:JSLGRP LMID=simple GRPNO=5 OPENINFO=NONEJREPGRP LMID=simple GRPNO=6 OPENINFO=NONE2)在ubb文件*SERVERS节点中增加如下2个tuxedo server:JSLSRVGRP=JSLGRP SRVID=22210 CLOPT="-A -- -n //tuxedoserver_ip:port -m 5 -M 10 -x 5"JREPSVRSRVGRP=JREPGRP SRVID=22220 CLOPT="-A -- -W -P $(TUXDIR)/udataobj/jolt/repository/jrepository"修改完成后编译ubb文件:tmloadcf ubb_filenametmboot -y启动tuxedo server后显现类似以下的信息说明tuxedo配置成功.exec JSL -A -- -n //10.13.195.69:9178 -m 5 -M 10 -x 5 :process id= 22210... Started.exec JREPSVR -A -- -W -P /data2/beasoftware/bea/tuxedo8.0/udataobj/jolt/repository/jrepository : process id=22220... Started.注意:1) 当通过jolt实现tuxedo,weblogic互连时,JSL,JREPSVR是在tuxedo中必须公布启动的2个server.2) 在以上JSL 的CLOPT参数中指定的port一定不能是差不多被占用的端口,否那么JSL启动将失败,之前应该用netstat命令查询得到闲暇的端口.3)在以上JREPSVR中$(TUXDIR)是系统的tuxedo主名目,如:data1ea uxedo8.0在jrepository中注册tuxedo service打开Tuxedo安装名目下的udataobj/jolt/子名目下RE.html文件,其中包含java applet,可通过appletviewer RE.html启动该文件,该applet能够接收用户输入,并在jrepository中注册tuxedo service以及service的输入输出参数等等,只有注册之后才能通过jolt访问tuxedo service.Appletviewer RE.html启动界面如下:键入JSL server绑定的ip,port(在ubb文件中指定)之后敲回车键登录,现在界面的services和packages按键处于有效状态,界面如下:能够点击packages按钮创建包,一个包中能够包含假设干个service,需要公布供客户端调用的service,因此在之前要创建包含service的package,界面如下:创建完成package,点击back按钮,单击service,指定属于该包的之前定义的tuxedo service:fml32_test,创建它的输入参数student_id以及输出参数student_name,student_age等等,界面如下:以上工作完成后sevice fml32_test差不多注册成功,所公布的service能够供jolt客户端调用,所有tuxedo方面的工作全部完成.3)Weblogic方面需要进行的工作修改weblogic server环境变量配置文件在weblogic环境变量文件的classpath中加入包jolt.jar, joltadmin.jar, joltjse.jar, joltasp.jar, joltwls.jar的全路径,如CLASSPATH=dataea uxedo8.0udataobjjoltjolt.jar;dataea uxedo8.0.....,其中这几个jar包存放在tuxedo 安装路径下的udataobjjolt子名目下,以上路径以及环境变量文件的修改视实际安装情形而定.配置weblgoic console中的项目启动weblogic server,打开操纵台: ://localhost:port/console配置startup class, shutdown classMydomain->deployments->startup & shutdown->Configure a new Startup Class...ClassName: bea.jolt.pool.servlet.weblogic.PoolManagerStartUp选择target and deploy标签,指定server, apply.Mydomain->deployments->startup & shutdown->Configure a new ShutDown Class...ClassName: bea.jolt.pool.servlet.weblogic.PoolManagerShutDown选择target and deploy标签,指定server, apply.配置jolt connection poolMydomain->services->jolt->Configure a new Jolt Connection Pool...选择addresses标签,指定Primary Addresses的值为//tuxedoserver_id:port其中那个地点的ip和port是在tuxedo ubb配置文件中指定的JSL server的绑定ip和通信端口.完成后选择target and deploy标签,指定server, apply.至此weblogic console方面的配置工作全部完成,现在进入tuxedo server服务器,键入命令tmadmin,pclt,看到类似如下信息说明tuxedo 和weblogic连接正常,大功告成!LMID User Name Client NameTime Status Bgn/Cmmt/Abrt---------------------------------------------------------------------------------------------------lizhj User.0@5178JSH 2:13:12 IDLE 0/0/0lizhj User.0@5178JSH 2:13:12 IDLE 0/0/0lizhj User.0@5178JSH 2:13:12 IDLE 0/0/0 ………………………………………………………….编写基于jolt的java客户端访问程序为了减少篇幅例子代码没有全部排列,只选择粘贴了代码中的关键部分.import bea.jolt.pool.*;import bea.jolt.pool.servlet.*;Result result = null;SessionPool joltSession = (SessionPool)b_mgr.getSessionPool("Jolt_Connection_Pool");DataSet request = new DataSet();request.setValue("student_id", getStudentId());//填写fml32_test service的输入参数.try{result = joltSession.call("jolt_student", request, null);}catch(Exception e){….}String name = new String();Integer age = new Integer();while (true){name = (String)result.getValue("student_name", i, null);age = (Integer)result.getValue("student_age", i, null);//以上2行程序读取tuxedo service返回的姓名和年龄域的值.if ((name != null) && (age != null) && (address != null)){System.out.println(〝姓名:〞+ name );System.out.println(〝年龄:〞+ age );recordcount++;}else{break;}}说明:一个学号只对应唯独的一个学生因此,以上程序完全能够不用while循环,只是有些时候依照一个输入条件能够查询得到一个记录集合而不是唯独的一条记录,因此需要循环取得记录集合中每一条记录的数据,以上程序循环fml32缓冲区中学生姓名域和学生年龄域的下标,从而能够得到完整的记录集数据,在此例中没有必要,在那个地点使用while只是提供一个猎取记录集的解决方法.(四)总结工作缘故需要进行tuxedo和weblogic的通信开发,由于缺少相关资料因此起初进展缓慢,工作完成之后将我对jolt,wtc的开发配置的心得做个小结,编写了这篇文章,期望对大伙儿有所关心,文章中例子在Sun Solaris,weblogic8.1,tuxedo8.0调试通过,任何问题请联系nefuicec@21cn 或lizhj@mail.csoft .cn.TUXEDO与WEBLOGIC通过WTC进行互连的配置( 徐春金)BEA公司的TUXEDO,WEBLOGIC作为最优秀的中间件产品,在银行、电信、金融等行业广泛使用,通常采纳TUXEDO实现系统的核心业务,用WEBLOGIC做为系统扩展到INTERNET的平台,实现电子商务,由WEBLOGIC调用TUXEDO上的服务,因此TUXEDO 与WEBLOGIC之间的互连经常遇到。

Tuxedo与Weblogic互连指南

Tuxedo与Weblogic互连指南

Tuxedo与Weblogic互连指南前言Tuxedo与Weblogic的互连可以通过Weblogic的WTC(WebLogic Tuxedo Connection)实现。

WTC不仅能实现Weblogic调用Tuxedo的服务,还能实现Tuxedo 调用Weblogic的EJB服务。

在具体配置实现中易错点较多,建议在首次配置过程中使用与生产环境业务无关的程序尝试,如Tuxedo的示例程序simpapp。

示例环境1.Weblogic 10.3.6安装在Windows8.1中,IP为192.168.43.12.Tuxedo 8.1安装在XP虚拟机中,IP为192.168.43.128,安装目录为C:\bea\tuxedo8.1Tuxedo 8.1在Windows 7或Windows 8中安装易出错,Tuxedo 11g则可以。

其他版本未尝试。

3.VC 6.0安装在XP虚拟机中,用于编译simpapp程序4.示例程序使用Tuxedo自带的simpapp,位于tuxedo8.1\samples\atmi目录下,功能是实现小写字母转大写。

为了方便调试将simpapp文件夹复制到C:\simpapp实现步骤Tuxedo部分目标能正确编译ubb和dom配置文件,能成功启动Tuxedo服务,并实现小写字母转大写的服务调用步骤1.配置setenv命令:setenv2.配置ubbsimple并编译命令:tmloadcf –y ubbsimple3.配置domsimple并编译,示例simpapp没有自带dom文件命令:dmloadcf –y domsimple4.编译simpcl.c客户端,用于调用Tuxedo服务命令:buildclient -o simpcl -f simpcl.c5.编译simpserv.c服务端,实现小写字母转大写的功能命令:buildserver -o simpserv -f simpserv.c -s TOUPPERsimpcl和simpserv是C++所编写,执行buildclient和buildserver编译命令时,先确认系统有VC6.0的C++的编译环境,否则会提示没有cl指令。

Weblogic和Tuxedo

Weblogic和Tuxedo

adapter_jrepository文件存放导出服务名和相应的通讯报文描述
连接池方式使用TCP长连接,存在启动依 赖;
在请求不是很频繁的情况下,可采用短连 接
配置WTC服务器
本地AP 远程AP 导出服务 导入服务
部署
选择WTC服务部署的目标服务器 重启生效
配置安全用户
连接方式:启动时、按需,一般选择“启动时”
交易服务器
JOLT
• java 程序作为客户端访问 tuxedo服务
WTC
• 双向的访问
启动关闭类
建立连接池
部署
最小和最大连接数、超时时间
主服务地址和failover地址
JSL 侦听端口配置
服务容器配置
JSL SRVGRP=TRAN0 SRVID200 CLOPT=“-A –t -- -n //128.192.135.14:5005 –m 40 –M 80 –x 10 –T 1200 –K both RESTART=Y
2015/03/02
网银等前端系统 Weblogic
ECTIP后台 Weblogic
ECT务器
交易服务器 ECTIP文件服务器 Tuxedo应用
交易服务器
交易服务器
后端系统1 (Tuxedo)
交易服务器
ECTIP通讯服务器 (tuxedo) 后端系统n (Tuxedo)
}
<!-- 生成标准EJBJar包,包括XML部署描述符--> <jar jarfile="${build.deploy}/${WTC_EJB_JAR}${version.no}.jar" basedir="${build.tmp}" update="yes"/> <!--生成EJB中的容器类--> <java classname="weblogic.appc" fork="true"> <arg value="${build.deploy}/${WTC_EJB_JAR}${version.no}.jar"/> <classpath refid="classpath"/> </java>

Tuxedo和WebLogic互调技术手册

Tuxedo和WebLogic互调技术手册

Tuxedo和WebLogic互调解决方案前言BEA公司的Tuxedo和WebLogic作为最优秀的中间件产品,在保险,金融,银行,电信等行业广泛使用。

如今随着需求的不断变化,企业信息集成已经逐渐成为主流,为此出现了SOA技术实现Service和Service之间的通信。

但是我们这里不介绍SOA,我们这里主要介绍的是BEA公司的连接器产品WTC (WebLogic Tuxedo Connector),通过它来实现Tuxedo和WebLogic的互调。

WTC概述WTC(WebLogic Tuxedo Connector)是一个兼容JCA(J2EE连接器架构)的软件产品,它提供了Tuxedo服务和WebLogic Server部署的应用程序之间的互操作性。

WebLogic Server组件能够使用WTC与Tuxedo服务进行通信,Tuxedo 服务也能够调用基于WebLogic Server的EJB组件。

WebLogic服务调用Tuxedo服务Tuxedo实现系统的核心业务,然后用WebLogic作为系统扩展到I NTERNET平台,由WebLogic调用Tuxedo上的服务。

那么具体怎么做呢?环境配置需要在调用Tuxedo服务端安装WebLogic Server(具体安装不介绍了),然后点击开始-→程序→WebLogic Plateform 8.1→Configuration Wizard配置服务器的Domain。

然后启动服务。

打开浏览器,在地址栏中输入http://localhost:7001/console 进行WTC的配置。

1.创建WTC服务点击控制台中的WebLogic Tuxedo Connector,进入WTC服务页面,点击配置新的WTC 服务,输入名称如mywtcapp然后点击创建。

2.创建本地访问点选中刚刚第一步创建的WTC服务,单击该服务页的内容选项卡,然后单击本地AP选项卡,然后点击配置新的本地Tuxedo访问点,在新的页面中输入访问点,如:localaccessapp;访问点ID,如:A000000;网络地址,如://10.222.19.101:9000其中访问点是用户自己定义的合法的名称,访问点ID和网络地址必须和bdmconfig 配置文件中的DM_TDOMAIN相同。

WEBLOGIC应用及常用配置说明

WEBLOGIC应用及常用配置说明

• • • • • •
3. 选择创建模式: • <----------------------- BEA WebLogic Configuration Wizard -------------------------------> • • • • • Choose Configuration Option: ---------------------------*Do you want to run the wizard in express mode? ->1|Yes 2|No
• • •
• • • •
->1|Other Java SDK Enter index number to select OR [Exit][Previous][Next]> 根据提示选择1,单击Enter进入下一步,如下。
<------------------------------- BEA WebLod -------------------------------> Java SDK Selection: ------------------"JVM Directory" = []


6. 选择JDK安装目录

• •
<------------------------------- BEA WebLogic Configuration Wizard ------------------------------->
Java SDK Selection: -------------------
5. 选择weblogic运行模式
• • • • • • • •
<------------------ BEA WebLogic Configuration Wizard -------------------------> Domain Mode Configuration: -------------------------Enable Development or Production Mode for this domain. ->1|Development Mode 2|Production Mode Enter index number to select OR [Exit][Previous][Next]> 根据上面提示,选择数字1,Development Mode 开发模式,点击Enter进入下一 步。 注:此选项可以在创建域结束后进行修改。修改位置在startWebLogic.sh脚本中, PRODUCTION_MODE=“ ” 为开发模式,即 Development Mode。 PRODUCTION_MODE=“TRUE”为产品模式。

Tuxedo通过WTC调用weblogic配置.

Tuxedo通过WTC调用weblogic配置.

TUXEDO与WEBLOGIC通过WTC方式连接WTC调用方式:WebLogic Tuxedo Connector 提供WebLogic Server 应用程序和Tuxedo 服务之间的互操作性。

该连接器允许WebLogic Server 客户端调用Tuxedo 服务,并允许Tuxedo 客户端调用WebLogic Server Enterprise Java Bean (EJB) 来响应服务请求。

1.EJB程序开发(此处需开发人员完成)1.1编写WeblogicEJB.javapackage com.ceb.bankapp.ejb.bean;import java.io.PrintStream;import ng.reflect.Method;import java.util.HashMap;import java.util.Map;import java.util.Properties;import javax.ejb.CreateException;import javax.ejb.EJBException;import javax.ejb.SessionBean;import javax.ejb.SessionContext;import javax.naming.InitialContext;import weblogic.wtc.jatmi.Reply;import weblogic.wtc.jatmi.TPServiceInformation;import weblogic.wtc.jatmi.TypedCArray;public class ListenerServiceimplements SessionBean{private static final long serialVersionUID = -800418557103444899L;private static InitialContext ctx;private static Object o;private SessionContext context;public Reply service(TPServiceInformation tpdata){try{if (ctx == null){Properties props = new Properties();props.put("java.naming.factory.initial","weblogic.jndi.WLInitialContextFactory");props.put("java.naming.provider.url", "t3://localhost:7020");ctx = new InitialContext(props);}if (o == null){o = ctx.lookup("afe");}byte[] yubo = ((TypedCArray)tpdata.getServiceData()).carray;Class[] clazz = { String.class, String.class,String.class, Map.class };Method m = o.getClass().getMethod("invoke", clazz);Map hm = new HashMap();hm.put("yubo", yubo);Object[] objs = { "wangdongTest", "wangdongTest", "input", hm };m.invoke(o, objs);byte[] t = (byte[])hm.get("send");TypedCArray typ = new TypedCArray();typ.setSendSize(t.length);typ.carray = t;tpdata.setReplyBuffer(typ);tpdata.settpurcode(0);}catch (Exception e){e.printStackTrace();}System.out.println("return tpdata====" + tpdata);return tpdata;}public void ejbCreate() throws CreateException{}public void ejbActivate() throws EJBException{}public void ejbPassivate() throws EJBException{}public void ejbRemove() throws EJBException {}public void setSessionContext(SessionContext newContext) throws EJBException {this.context = newContext;}protected void onEjbCreate()throws CreateException{}}1.2配置ejb-jar.xml<?xml version="1.0" encoding="UTF-8"?><ejb-jar xmlns="/xml/ns/j2ee" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/ejb-jar_2_1.xsd" version="2.1"><enterprise-beans><session id="Session_20081110002"><description>Online business interface for exchange with other system</description><display-name>BbspListenerService</display-name><ejb-name>BbspListenerService</ejb-name><home>weblogic.wtc.jatmi.TuxedoServiceHome</home><remote>weblogic.wtc.jatmi.TuxedoService</remote><ejb-class>com.ceb.bankapp.ejb.bean.ListenerService</ejb-class><session-type>Stateless</session-type><transaction-type>Container</transaction-type></session></enterprise-beans><assembly-descriptor><container-transaction><description>Listener business_tran</description><method><ejb-name>BbspListenerService</ejb-name><method-name>*</method-name></method><trans-attribute>NotSupported</trans-attribute></container-transaction></assembly-descriptor></ejb-jar>重要:配置中<home/>和<remote/>被配置为weblogic.wtc.jatmi.TuxedoServiceHome和weblogic.wtc.jatmi.TuxedoService,这是WTC配置的要求,是他们tuxedo ejb服务的统一入口,所以开发中不用写home和romote接口。

WebLogic Tuxedo连接器(WTC)快速入门

WebLogic Tuxedo连接器(WTC)快速入门

WebLogic Tuxedo连接器快速入门更多相关内容,详见/wls/docs81/wtc_qstart/quickstart.html本文档描述了如何使用WebLogic Tuxedo连接器将weblogic server8.1和tuxedo8.1互连。

使用的例子为weblogic的simpapp和simpserv,以及tuxedo的simpapp。

对unix用户可将本文中"\" 换成"/",并将".cmd" 换成".sh"。

本例提供以下服务:TOUPPER:一个tuxedo方服务,用于将字符串转换为大写。

Weblogic端客户通过调用TOUPPER EJB来获取这个服务。

TOLOWER:一个weblogic server端的EJB实现的服务。

可被tuxedo端客户调用。

本例包含以下两个域:TDOM2:weblogic使用的域TDOM1:tuxedo使用的域1.WebLogic Tuxedo连接器设置:1.在weblogic的控制台端先设置环境变量:打开ASCII文件%WL_HOME%\samples\domains\examples\startExamplesServer.cmd。

找到这个文件ENDLOCAL之前的一个命令行(大约是这个文件的倒数第二个命令行)。

在%JA V A_OPTIONS%的后面加上-Dweblogic.wtc.TraceLevel=100000。

注意,和前后字符串保持一个空格的距离。

此参数用于设置weblogic tuxedo连接器的最大级别。

保存并关闭次文件。

2.启动weblogic server:开始→程序→BEA WebLogic Platform 8.1→Examples→WebLogic Server Examples3.编译并部署weblogic端程序:开始→运行。

输入cmd,打开一个命令提示符窗口。

tuxedo与weblogic集群配置

tuxedo与weblogic集群配置

tuxedo与weblogic集群配置2009年04月14日星期二上午 08:35Tuxedo 和WebLogic Server的集群连接发表于08-04-10 00:00 | 阅读 1503 | 评分 (暂无)技术架构要求某业务系统需要将Tuxedo和WebLogic server进行集群连接,以提高系统的整体的运行稳定性和可靠性。

Tuxedo 和WebLogic Server(简称WLS)间的集群配置Tuxedo域概念的说明为了有效实现有其他系统的互连,TUXEDO提出了DOMAIN(域)的概念,将由多台服务器共同组成的应用系统按功能或结构划分为不同的域,每个域独立地完成域内的操作,域间操作由域网关完成,从而提高每个域和整个系统的运行效率。

TUXEDO的域特性把客户/服务器模型扩展到多个应用系统. 一个域既可以是一组TUXEDO的应用程序――若干相关的应用服务和配置环境的组合。

域同时也可能是一组运行在另一个非TUXEDO环境中的应用程序。

TUXEDO和WLS应用系统的互操作就是利用域的概念来实现的。

不同的 TUXEDO应用域中的服务程序可以互相访问对方的服务,并且当一个交易同时执行多个应用域中的服务(即对于分布式事务处理)时,能够确保交易的完整性。

同时,TUXEDO系统可以指定哪些服务是可供外部应用域访问的并可为这些服务设置访问控制表等安全认证手段,提高整个系统的安全性。

TUXEDO应用系统一个TUXEDO应用系统是由在一个TUXCONFIG文件中定义的资源及其客户端的总称,它只能有一个TUXCONFIG文件,一个TUXEDO应用系统能够通过域网关与别的TUXEDO应用系统或其他的应用中间件系统实现互操作。

主要概念说明:TUXEDO Domain :一个TUXEDO应用系统就是一个DOMAIN。

/DOMAIN:TUXEDO产品的组成部分,用于与其他系统实现互连的那部分称为/DOMAINDomain Gateway :一个用于处理DOMAIN之间请求/应答的进程Domain Gateway Group :一组用于处理DOMAIN之间通讯的进程总称,包括一个GWADM和一个DOMAIN GATEWAY(如:GWTDOMAINLocal Domain :一个TUXEDO应用系统中的SERVICE的一个子集,它们能够被其他的DOMAIN访问,一个Local Domain对应一个domain gateway group 。

Tuxedo中间件和银行核心业务系统测试简介

Tuxedo中间件和银行核心业务系统测试简介

Tuxedo中间件和银⾏核⼼业务系统测试简介Tuxedo中间件和银⾏核⼼业务测试的简介⼀、银⾏核⼼业务系统的业务介绍(⼀)、银⾏的类型我国银⾏体系由三部分构成:即中央银⾏、政策性银⾏和商业银⾏。

中国⼈民银⾏为中央银⾏;国家开发银⾏、中国农业发展银⾏和中国进出⼝银⾏是政策性银⾏;商业银⾏分为国有独资商业银⾏、股份制商业银⾏、城市商业银⾏、农村信⽤社和境内外资银⾏。

本⽂所说的银⾏指的是第三种类型即商业银⾏。

(⼆)、银⾏业务的类型银⾏业务分类有多种,按业务资⾦来源的不同,商业银⾏业务可分为负债业务、资产业务以及中间业务。

负债类型:存款类、外借款类和银⾏资本类资产业务:主要包括发放贷款、投资业务和其他资产业务中间业务:各种托收托付、汇兑、代理等等从测试的⾓度来说,按照⽇常经营的业务频繁程度,银⾏最主要的业务是存取款业务和贷款收发业务,次之的是每⽇的换班扎帐和⽇终结帐,最后的是利息结算和年终结算这类周期性的结算业务。

(三)、银⾏核⼼系统性能测试场景测试模型设计1、测试点:结合银⾏⽇常的业务情况,测试点应该包括个⼈存款、个⼈取款、对公存款、对公取款、个⼈贷款、对公贷款、同城票据交换、汇兑等⽇常业务,还应该包含诸如换班扎帐、⽇终结帐、⽉报、季报、结息和年终结算等数据处理业务。

(当然很多银⾏的结息和年终结算不部署在核⼼业务系统中)。

2、测试场景(1)、⽇常营业场景模拟在线测试:⽤户量可以通过银⾏开户的客户数量度量,交易的吞吐量可以通过银⾏完成的业务数量算出。

并结合换班扎帐和⽇终结帐的操作。

并发测试:(2)、结算业务场景模拟银⾏的计算业务,例如结息、⽉报、季报和年度结算这类业务的⽤户数量可以通过机构数量来计算,对于系统来说主要关注的侧重点是这类操作对于⽇常营业场景的影响以及这类操作的资源占⽤和时间响应。

(当然结算类的业务⼀般安排在晚上执⾏或者单独系统来处理)⼆、银⾏核⼼业务系统的架构介绍在银⾏业的分布式系统中以交易中间件为核⼼框架的三层客户机/服务器模式(C/S/S)是绝对的主流架构。

TTWService介绍

TTWService介绍

TTWService介绍Tuxedo调用weblogic在使用WTC的应用中,大多是采用Weblogic调用tuxedo服务的方式,但是WTC是双向的组件,能够让tuxedo调用weblogic服务。

TTWService就是tuxedo调用weblogic服务的实现,参数和返回值都以^作为分隔符号,数据格式都是字符串,下面我们对TTWService的部署、开发做个介绍。

1部署以下都是在weblogic7和tuxedo6.5环境上部署的。

1.1Tuxedo的配置增加环境变量参数:TUXCONFIG=/home/tuxdis/piccsvr/tuxconfigBDMCONFIG=/home/tuxdis/piccsvr/bdmconfigexport TUXCONFIG BDMCONFIG修改两个配置文件:ubbconfig、domconfig。

在ubbconfig文件里,需要配置以下三个服务:DMADM SRVGRP=GROUP2 SRVID=1GWADM SRVGRP=GROUP2 SRVID=2GWTDOMAIN SRVGRP=GROUP2 SRVID=3在domconfig文件里,需要配置TDOM和DM_REMOTE_SERVICES*DM_TDOMAINTDOM_TUX01 NWADDR="//192.168.60.30:9413"TDOM_WLS01 NWADDR="//192.168.61.253:9913"*DM_LOCAL_SERVICES*DM_REMOTE_SERVICESTuxToWls RDOM="TDOM_WLS01"修改完两个文件后,执行加载命令:tmloadcf -y ubbconfigdmloadcf –y domconfig1.2Weblogic配置部署EJB:TTWService.jar增加WTCServer,配置Local WLS Domain、Remote Tuxedo Domain、Exported Service:增加访问用户,点“Security->Realms->myrealm->Users”进入增加用户TDOM_TUX01,这个名字必须和Remote Tuxedo Domain的ID一致:1.3测试验证使用buildclient编译tpcall.c,生成tpcall可执行文件。

WTC报错进而排查跨域EJB调用的域信任问题

WTC报错进而排查跨域EJB调用的域信任问题

故障信息系统名称系统简称操作系统版本软件版本处理日期处理人对公ECIF ECIFHP-UX 11.31IA64WLS 10.3.5、Tuxedo 10gR3RP146 64-bit2015-5-8@田东云现象描述WTC连接,从Tuxedo调用WebLogic Server端的EJB服务,收到如下错误:[2015-05-08 10:53:59,340 INFO ] [[ACTIVE] ExecuteThread: '35' for queue: 'weblogic.kernel.Default (self-tuning)']com.ceb.bankapp.ejb.bean.ListenerService.service(ListenerService.java :80) - ***ListenerService.service() AFE lookup begin***ng.SecurityException: [Security:090398]Invalid Subject: principals=[CEBZH]at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234) atweblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef .java:348)atweblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef .java:259)at weblogic.jndi.internal.ServerNamingNode_1035_WLStub.lookup(Unknown Source)atweblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:423)atweblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:411)at javax.naming.InitialContext.lookup(InitialContext.java:392)atcom.ceb.bankapp.ejb.bean.ListenerService.service(ListenerService.java :81)atcom.ceb.bankapp.ejb.bean.BbspListenerService_ayyfa5_EOImpl.__WL_invok e(Unknown Source)atweblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(Ses sionRemoteMethodInvoker.java:40)atcom.ceb.bankapp.ejb.bean.BbspListenerService_ayyfa5_EOImpl.service(Un known Source)atcom.ceb.bankapp.ejb.bean.BbspListenerService_ayyfa5_EOImpl_WLSkel.inv oke(Unknown Source)atweblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:17 4)atweblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef .java:345)atweblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef .java:259)atcom.ceb.bankapp.ejb.bean.BbspListenerService_ayyfa5_EOImpl_1035_WLStu b.service(Unknown Source)at weblogic.wtc.gwt.InboundEJBRequest.execute(Unknown Source)at weblogic.wtc.wls.WlsTaskHandler.run(Unknown Source)at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)Caused by: ng.SecurityException: [Security:090398]Invalid Subject: principals=[CEBZH]atweblogic.security.service.SecurityServiceManager.seal(SecurityService Manager.java:833)atweblogic.security.service.SecurityServiceManager.getSealedSubjectFrom Wire(SecurityServiceManager.java:522)atweblogic.rjvm.MsgAbbrevInputStream.getSubject(MsgAbbrevInputStream.ja va:352)atweblogic.rmi.internal.BasicServerRef.acceptRequest(BasicServerRef.jav a:953)atweblogic.rmi.internal.BasicServerRef.dispatch(BasicServerRef.java:351 )atweblogic.rmi.cluster.ClusterableServerRef.dispatch(ClusterableServerRef.java:242)at weblogic.rjvm.RJVMImpl.dispatchRequest(RJVMImpl.java:1141)at weblogic.rjvm.RJVMImpl.dispatch(RJVMImpl.java:1023)atweblogic.rjvm.ConnectionManagerServer.handleRJVM(ConnectionManagerSer ver.java:240)atweblogic.rjvm.ConnectionManager.dispatch(ConnectionManager.java:888) atweblogic.rjvm.MsgAbbrevJVMConnection.dispatch(MsgAbbrevJVMConnection. java:512)atweblogic.rjvm.t3.MuxableSocketT3.dispatch(MuxableSocketT3.java:330) atweblogic.socket.BaseAbstractMuxableSocket.dispatch(BaseAbstractMuxabl eSocket.java:298)atweblogic.socket.SocketMuxer.readReadySocketOnce(SocketMuxer.java:950) at weblogic.socket.SocketMuxer.readReadySocket(SocketMuxer.java:898) atweblogic.socket.DevPollSocketMuxer.processSockets(DevPollSocketMuxer. java:126)atweblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29) atweblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java: 42)at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)分析过程出现这个问题时,首先去WLS Console控制台检查Tuxedo域的Domain Name名是否配置到WebLogic用户中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TUXEDO与WEBLOGIC通过WTC进行互连的配置BEA公司的TUXEDO,WEBLOGIC作为最优秀的中间件产品,在银行、电信、金融等行业广泛使用,通常采用TUXEDO实现系统的核心业务,用WEBLOGIC做为系统扩展到INTERNET的平台,实现电子商务,由WEBLOGIC调用TUXEDO上的服务,所以TUXEDO 与WEBLOGIC之间的互连经常遇到。

下面通过一个例子介绍TUXEDO与WEBLOGIC通过WTC进行连接的配置方法。

WEBLOGIC与TUXEDO的互连有两中方式,通过JOLT或通过WTC(WEBLOGIC TUXEDO CONNECTOR)。

它们都是BEA的产品,WTC不仅能让WEBLOGIC调用TUXEDO中的SERVICE,而且能让TUXEDO调用WEBLOGIC中的EJB;而JOLT只能让WEBLOGIC调用TUXEDO. 但JOLT可以使TUXEDO与WEBSPERE等其他应用服务器相连,而WTC只能用于WEBLOGIC与TUXEDO之间进行互连。

一、WTC说明(1)WEBLOIGIC5.1无法通过WTC与TUXEDO连接.(2)WEBLOGIC6.0与TUXEDO连接时,要安装WTC软件包.(3)WTC已集成在在EBLOGIC6.1中,只要配置一下就可以了,不用单独安装WTC软件包.(4)目前WTC只支持TUXEDO6.5,TUXEDO8.0两个版本,不支持TUXEDO7.1版本.(5)目前WTC有两个版本, Windows版本支持2000/NT,UNIX为统一版本.(6)WTC可从http://commerce.bea .com/downloads/tuxedo.jsp 下载,目前的版本为1.0.二、WTC安装过程(1) WEBLOGIC与TUXEDO必须先安装好.(2)WTC要求在JAVA环境下安装,可在命令行下,运行weblogic 主目录下config/EXAMPLE/setEnv.sh(NT/2000 下为setenv.cmd)配置JAVA环境(3)在DOS命令行下执行安装程序WTC_10_win.exe。

按提示操作就可以. 注意:如果在WINDOW下安装,到COPY文件那一步时,不会执行,但提示安装成功,实际是假的。

所以应在DOS命令行下安装.三、WTC配置说明TUXEDO与WEBLOGIC之间通过DOMAIN方式实现互相调用,在这个例子中有两个DOMAIN:TUXEDO所在的DOMAIN名为TDOM1,WEBLOGIC所在的DOMAIN名为TDOM2。

TDOM1上有TOUPPER它是一个TUXEDO SERVEICE,TDOM2上有TOLOWER它是一个EJB,下面以WTC安装带的例子simpapp(在WTC安装目录的examples/wtc/atmi/simpapp下)说明配置过程: TUXEO版本: TUXEDO65 WEBLOGIC版本:WEBLOGIC6.0 TUXEO安装目录: D:\TUXEDO65 WEBLOGIC安装目录: D:\WEBLOGIC 操作系统: WIN2000 例子目录:D:\SIMPAPP(把WTC安装目录的examples/wtc/atmi/simpapp目录COPY到D:\SIMPAPP) 服务器名: DEMOSERVER WTC安装目录: D:\WEBLOGIC \WTC1.0四、TUXEDO要做的配置(1)修改D:\SIMPAPP\SETENV.CMD为: set TUXDIR=d:\tuxedo65 set WSNADDR=//DEMOSERVER:8888 set APPDIR=d:\simpapp set PATH=%TUXDIR%\bin;%APPDIR%;%PATH% set TUXCONFIG=%APPDIR%\tuxconfig setBDMCONFIG=%APPDIR%/dbmconfig(2)修改D:\SIMPAPP\UBBDOMAIN为:*RESOURCESIPCKEY 123456DOMAINID simpappMASTER simpleMAXACCESSERS 10MAXSERVERS 5MAXSERVICES 10MODEL SHMLDBAL N*MACHINESDEMOSERVER LMID=simpleAPPDIR="d:\simpapp"TUXCONFIG="d:\simpapp\tuxconfig"TUXDIR="d:\tuxedo65"*GROUPSGROUP1 LMID=simple GRPNO=1 OPENINFO=NONE*SERVERS DEFAULT: CLOPT="-A" simpserv SRVGRP=GROUP1 SRVID=1 *SERVICES TOUPPER(3)修改D:\SIMPAPP\DOM1CONFIG: 修改dom1config,加入TLOG的路径和AUDITLOG的路径。

然后修改TDOM1的NWADDR="IP:PORT"为TUXEDO的IP和端口,TDOM2的NWADDR="IP:PORT"为WEBLOGIC的IP和端口。

*DM_RESOURCES VERSION=U22*DM_LOCAL_DOMAINS TDOM1 GWGRP=GROUP2 TYPE=TDOMAINDOMAINID="TDOM1" BLOCKTIME=20 MAXDATALEN=56 MAXRDOM=89TLOG="d:\simpapp\TLOG"AUDITLOG="d:\simpapp\AUDITLOG"*DM_REMOTE_DOMAINS TDOM2 TYPE=TDOMAINDOMAINID="TDOM2" *DM_TDOMAIN TDOM1NWADDR="//DEMOSERVER:9998" TDOM2NWADDR="//DEMOSERVER:9999"*DM_REMOTE_SERVICES TOLOWER RDOM="TDOM2"(4) tmloadcf -y ubbdomain(5) dmloadcf -y dom1config(6)buildserver -o simpserv -f simpserv.c -s TOUPPER(7)将examples/wtc/atmi/simpapp/simpserv下的tolower.c 拷贝到D:\SIMPAPP,并执行buildclinet -v -f tolower.c -o tolower五、WEBLOGIC要做的配置(1)修改weblogic目录下config/examples/setExamplesEnv.cmd 及startExamplesServer.cmd,在CLASSPATH中加入:d:\weblogic\wtc1.0\lib/jatmi.jar。

执行setExamplesEnv.cmd (2)修改bdmconfig.xml 修改<!DOCTYPE>中的:[WTC installationdirectory]\weblogic\wtc\gwt\wtc_config_1_0.dtd(WLS60) 修改TDOM1和TDOM2的NWADDR和TUXEDO中的dom1config 中的一致如果tuxedo为6.5版本则在<T_DM_LOCAL_TDOMAIN AccessPoint="TDOM2">中加入<Interoperate>Yes</Interoperate>如果为TUXEOD8.0则不需要。

(3)修改后的bdmconfig.xml内容如下:<?xml version="1.0"?><!DOCTYPE BDMCONFIG SYSTEM"file:D:\weblogic\wtc1.0\weblogic\wtc\gwt\wtc_config_1_0.dt d"><!--Java and XML--><WTC_CONFIG><BDMCONFIG><T_DM_LOCAL_TDOMAIN AccessPoint="TDOM2"><WlsClusterName>Coolio</WlsClusterName><AccessPointId>TDOM2& lt;/AccessPointId><Type>TDOMAIN</Type><Security>NONE</Security><ConnectionPolicy>ON_DEMAND</ConnectionPolicy><BlockTime>30</BlockTime><NWAddr>//DEMOSERVER:9999</NWAddr><!-- Example address: //:9999 --><Interoperate>Yes</Interoperate></T_DM_LOCAL_TDOMAIN><T_DM_REMOTE_TDOMAIN AccessPoint="TDOM1"><LocalAccessPoint>TDOM2</LocalAccessPoint><AccessPointId>TDOM1</AccessPointId><Type>TDOMAIN</Type><NWAddr>//DEMOSERVER:9998</NWAddr><!-- Example address: //:9998 --></T_DM_REMOTE_TDOMAIN><T_DM_EXPORT ResourceName="TOLOWER" LocalAccessP oint="TDOM2"><EJBName>tuxedo.services.TOLOWERHome</EJBName></T_DM_EXPORT> <T_DM_IMPORTResourceName="TOUPPER"LocalAccessPoint="TDOM2"RemoteAccessPointList="TDOM1"><TranTime>600</TranTime> </T_DM_IMPORT></BDMCONFIG> </WTC_CONFIG> (4)执行java weblogic.wtc.gwt.WTCValidateCF bdmconfig.xml监测xml是否正确。

相关文档
最新文档