通过wtc使tuxedo与weblogic通信开发

合集下载

最新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配置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 类似的协议。

Tuxedo8.1与Weblogic之间调用环境配置

Tuxedo8.1与Weblogic之间调用环境配置

Tuxedo8.1与Weblogic之间调用环境配置使用手册目录1.引言 (2)2.环境准备 (2)3.Tuxedo安装与weblogic之间的环境配置 (2)3.1.Tuxedo安装 (2)3.2.Tuxedo配置 (5)3.2.1 环境变量的配置 (5)3.2.2 配置Ubbsimple文件 (6)3.2.3 配置domconfig文件 (8)3.2.4 编译配置文件并启动tuxedo (9)3.3.Weblogic WTC的配置 (10)3.3.1 创建WTC服务 (10)3.3.2 创建本地Tuxedo访问点 (10)3.3.3 创建远程Tuxedo访问点 (11)3.3.4 创建已导出的服务 (12)3.3.5 创建已导入的服务 (13)3.3.6 将mySimpapp指向adminServer (14)3.3.7 将CEBDB注册为WebLogic用户 (14)4.名词解释 (15)5.附1:tuxedo在AIX上环境变量的设置 (16)1.引言WTC调用方式:WebLogic Tuxedo Connector 提供WebLogic Server 应用程序和Tuxedo 服务之间的互操作性。

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

预期读者包括:测试人员、开发人员等。

2.环境准备Tuxedo版本:8.1操作系统Window 2003 serverWeblogic 11.0操作系统suse 11 sp23.Tuxedo安装与weblogic之间的环境配置3.1.Tuxedo安装步骤1:安装方式选择Full Install (完全安装)。

步骤2:选择BEA Home目录BEA Home目录是所有BEA产品的安装目录,如果已经有了BEA Home,选择即可,如果还没有,则可以创建一个。

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

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

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。

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。

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>

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,打开一个命令提示符窗口。

wtc中tuxedo返回错误

wtc中tuxedo返回错误

wtc中tuxedo返回错误
1、TPENOENT(6):0:0:TPED_MINVAL(0):QMNONE(0):0:No local or remote domain available. xxx服务务没有调到。

请检查tuxedo domain 与weblogic domain连通
请检查xxx服务在tuxedo中时候存在
查看方式为:
tmadmin
psc -s +服务名
如果是刚注册的xxx服务,请重现发布所在的WTC服务。

如果没有重新发布,也会报这个错误。

如果tuxedo日志显示duplicate server,表示有另外一个weblogic domain 配置相同的wtc配置。

也就是说一个Tuxedo domain 对应两个相同的Weblogic domain,这种情况,也会出现这个错误,请修改另外weblogic domain的wtc配置。

(配置相同是指远程tuxedo访问点与本地tuxedo相同)。

如果跨防火墙,请修改连接策略都改为ON_STARTUP
2、TPESYSTEM(12):0:0:TPED_MINVAL(0):QMNONE(0):0
tuxedo服务有问题或输入参数不正确。

3、TPESYSTEM(13):0:0:TPED_MINVAL(0):QMNONE(0):0
tuxedo服务返回超过了设置的时间。

优化tuxedo服务或修改时间门限。

4、TPESYSTEM(10):0:0:TPED_MINVAL(0):QMNONE(0):0
tuxedo系统问题。

报10看下服务,应该有core文件生成。

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 。

BEA Tuxedo+ WebLogic编程简介

BEA Tuxedo+ WebLogic编程简介

BEA Tuxedo+ WebLogic编程简介BEA TUXEDO+ WEBLOGIC编程简介 (1)一、B EA T UXEDO 简介 (1)二、BEA T UXEDO配置文件UBBCONFIG (3)三、BEA T UXEDO常见配置错误 (6)四、BEA T UXEDO常用命令 (7)五、常用BEA T UXEDO函数: (8)六、常见错误分析: (18)一、B EA Tuxedo 简介关于UBBCONFIG文件的一些设置:The cost incurred by increasing MAXACCESSERS is one additional semaphore per site per client or server process (accesser—see note that follows). There is a small fixed semaphore overhead for system processes in addition to that added by the MAXACCESSERS value. The cost of increasing MAXSERVERS and MAXSERVICES is a small amount of shared memory that is kept for each server, service, and client entry,respectively. The general idea for these parameters is to allow for future growth of the application. It is more important to scrutinize MAXACCESSERS.Note: The system allocates one semaphore for each access slot to the bulletin board.A semaphore is a latch circuit that prevents more than one process from accessing the same shared memory in the bulletin board at the same time.For BEA Tuxedo pre-Release 7.1 (6.5 or earlier), both the MAXACCESSERS and MAXSERVERS parameters for an application play a part in the user license checking scheme. Specifically, a machine is not allowed to boot if the number of MAXACCESSERS for that machine + the number of MAXACCESSERS for the machine (or machines) already running in the application is greater than the number of MAXSERVERS + user licensesfor the application. Thus, the total number of MAXACCESSERS for an application must be less than or equal to the number of MAXSERVERS + user licenses for the application.First of All ———设置合理的操作系统核心参数!!# 用tmunloadcf > generated.ubb 可以得出目前配置得UBB文件所有得参数值(没有设置的有缺省值)# 用tmloadcf –c或tmboot –c可以计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源。

Oracle WebLogic Tuxedo Connector 快速入门指南说明书

Oracle WebLogic Tuxedo Connector 快速入门指南说明书

Oracle® Fusion MiddlewareWebLogic Tuxedo Connector Quick Start Guide for Oracle WebLogic Server12c Release 1 (12.1.1)E24980-01December 2011Note:For more detailed information on how to configure the OracleWebLogic Tuxedo Connector for this Oracle WebLogic Server release,see WebLogic Tuxedo Connector Administration Guide for Oracle WebLogicServer.This document describes how to use the Oracle WebLogic Server console to configureOracle WebLogic Tuxedo Connector so that Oracle WebLogic Server can interoperatewith Tuxedo Releases 6.5 and higher.1ContentsThe following topics are included in this document:■Section2, "Where to Find Oracle WebLogic Tuxedo Connector Samples"■Section3, "Configuring the Oracle WebLogic Tuxedo Connector"■Section4, "Configuring Oracle Tuxedo"■Section5, "Run the Example"■Section6, "Documentation Accessibility"2Where to Find Oracle WebLogic Tuxedo Connector SamplesFor this release of Oracle WebLogic Tuxedo Connector (WTC), samples are availableon the Oracle Technology Network web site. Create a wtc directory within thesamples directory of your WebLogic Server installation. Download the WTC samplesto this directory. To run the samples referenced in this document, you must downloadthe simpapp and simpserv samples.3Configuring the Oracle WebLogic Tuxedo ConnectorNote:This section summarizes how to configure the OracleWebLogic Tuxedo Connector on a Windows platform. UNIX users canadapt the instructions by making appropriate substitutions such asreplacing the "\" with "/" and ".cmd" with ".sh".This example extends the Oracle Tuxedo simpapp application to run over Oracle Tuxedo Domains (TDomains). This allows clients of the TOUPPER service to run on either the Oracle Tuxedo server or the Oracle WebLogic Server examplesServer . The example provides the following services:■TOUPPER : An Oracle Tuxedo service that converts a string to upper case. A Oracle WebLogic Server client invokes the TOUPPER EJB and connects to the OracleTuxedo TOUPPER service.■Tolower : A service implemented by an EJB in Oracle WebLogic Server. The client for the Tolower service runs on Oracle Tuxedo.The following sections describe how to configure Oracle WebLogic Tuxedo Connector using the Administration Console:■Section 3.1, "Build the Simpapp Example"■Section 3.2, "Create a WTC Service"■Section 3.3, "Create a Local Oracle Tuxedo Access Point"■Section 3.4, "Create a Remote Oracle Tuxedo Access Point"■Section 3.5, "Create Exported Services"■Section 3.6, "Create Imported Services"■Section 3.7, "Target mySimpapp to the examplesServer"■Section 3.8, "Register TDOM1 as an Oracle WebLogic Server User"3.1Build the Simpapp ExampleUse the following steps to build the simpapp example:1.Boot your Oracle WebLogic examplesServer. 2.Open a new shell window and set environment variables using the SAMPLES_HOME\domains\examples\setExamplesEnv.cmd file. 3.Change directories to the location where you have downloaded the simpappsample. For example, SAMPLES_HOME\server\examples\src\examples\wtc\atmi\simpapp directory. 4.Build the wtc_toupper.jar file using ant. This will deploy the EJB on Oracle WebLogic Server. Enter the following command: ant5.Change directories to the location where you have downloaded the simpserv sample. For example, SAMPLES_HOME\server\examples\src\examples\wtc\atmi\simpserv directory. 6.Build the wtc_tolower.jar file. This will deploy the EJB on Oracle WebLogic Server. Enter the following command: ant Note:You may want to enable tracing to monitor Oracle WebLogicTuxedo Connector. See "Monitoring the WebLogic Tuxedo Connector"in WebLogic Tuxedo Connector Administration Guide for Oracle WebLogicServer .unch the WebLogic Server Administration Console in your browser. Use thefollowing URL: http://your_machine:7001/console. Replace your_machine with the IP address for your machine or your machine name.8.In the navigation tree, click Deployments and confirm that the wtc_tolower.jar and wtc_toupper.jar are deployed.3.2Create a WTC ServiceUse the following steps to create and configure a WTC service using the Oracle WebLogic Server Administration Console:1.Expand Interoperability and select WTC Servers in the navigation tree.2.On the WTC Servers page, click New.3.On the Create a New WTC Server page, enter the name of your WTC Service inthe Name field. Example: mySimpapp4.Click OK.5.Your new WTC Service appears in the WTC Servers list.3.3Create a Local Oracle Tuxedo Access PointNote:When configuring the Network Address for a local accesspoint, the port number used should be different from any portnumbers assigned to other processes. Example: Setting the NetworkAddress to //mymachine:7001 is not valid if the Oracle WebLogicServer listening port is assigned to //mymachine:7001.Use the following steps to configure a local Oracle Tuxedo access point:1.In the WebLogic Server Administration Console, expand Interoperability andselect WTC Servers.2.On the WTC Servers page, click the name of a WTC Service, such as mySimpapp,to access the settings page.3.Click the Local APs tab.4.Enter the following values for the following fields on the WTC Local Access Pointspage:Access Point: myLocalApAccessPoint ID: TDOM2Network Address: the network address and port of your local access pointExample: //123.123.123.123:56785.Click OK.6.If you are connecting to a Tuxedo 6.5 domain, do the following:a.Click the Connections tab.b.Set the Interoperate field to Yes.c.Click Save.3.4Create a Remote Oracle Tuxedo Access PointUse the following steps to configure a remote Oracle Tuxedo access point:1.In the WebLogic Server Administration Console, expand Interoperability andselect WTC Servers.2.On the WTC Servers page, click the name of a WTC Service, such as mySimpapp.3.Click the Remote APs tab.4.Enter the following values for the following fields on the WTC Remote AccessPoints page:Access Point: myRemoteAPAccessPoint ID: TDOM1Local Access Point: myLocalApNetwork Address: the network address and port of your remote access pointExample: //123.123.123.123:12345.Click OK.3.5Create Exported ServicesUse the following steps to configure an exported service:1.In the WebLogic Server Administration Console, expand Interoperability andselect WTC Servers.2.On the WTC Servers page, click the name of a WTC Service, such as mySimpapp.3.Click the Exported tab.4.Enter the following values for the following fields on the WTC Exported Servicespage:Resource Name: TOLOWERLocal Access Point: myLocalApEJB Name: tuxedo.services.TOLOWERHomeRemote Name: TOLOWER5.Click OK.3.6Create Imported ServicesUse the following steps to configure an imported service:1.In the WebLogic Server Administration Console, expand Interoperability andselect WTC Servers.2.On the WTC Servers page, click the name of a WTC Service, such as mySimpapp.3.Click the Imported tab.4.Enter the following values for the following fields on the WTC Imported Servicespage:Resource Name: TOUPPERLocal Access Point: myLocalApRemote Access Point List: myRemoteAPRemote Name: TOUPPER5.Click OK.3.7Target mySimpapp to the examplesServer1.In the WebLogic Server Administration Console, expand Interoperability andselect WTC Servers.2.On the WTC Servers page, click the name of a WTC Service, such as mySimpapp.3.Click the Targets tab.4.Click the checkbox for the examplesServer.5.Click Save.3.8Register TDOM1 as an Oracle WebLogic Server UserUse the following steps to register TDOM1 as an Oracle WebLogic Server user:1.Click Security Realms in the navigation tree.2.Click myRealm.3.Click on Users and Groups tab.4.Click Users.5.Click Lock & Edit.6.Click New.7.In the Create a New User page, do the following:a.Add TDOM1 in the Name field.b.Enter and confirm a password.c.Click OK.8.Click Release Configuration.4Configuring Oracle TuxedoUse the following steps to configure your Oracle Tuxedo domain:1.Your PATH environment variable needs to include the path of your C compiler.Use set PATH to check the status and add the path if necessary.2.Copy the simpapp example from your Oracle Tuxedo installation and create aworking Oracle Tuxedo simpapp directory.3.Change directories to your working Oracle Tuxedo simpapp directory.4.Set environment variables using the setEnv.cmd located at TUXDIR. Update thefollowing parameters:TUXDIR - base directory of the TUXEDO SoftwareAPPDIR - base directory of the sample program5.Build the clients:buildclient -o simpcl -f simpcl.cbuildserver -o simpserv -f simpserv.c -s TOUPPER6.Copy the ubbdomain and dom1config files from the SAMPLES_HOME\server\examples\src\examples\wtc\atmi\simpapp directory to your Oracle Tuxedo simpapp directory.7.Copy the tolower.c file from the SAMPLES_HOME\server\examples\src\examples\wtc\atmi\simpserv directory to your Oracle Tuxedo simpapp directory.8.Modify the ubbdomain for your Oracle Tuxedo environment. This includessetting the path names for APPDIR, TUXCONFIG, and TUXDIR and setting the machine name. Replace all <braced> items with information for yourenvironment.Example:APPDIR="\home\me\simpapp"TUXCONFIG="\home\me\simpapp\tuxconfig""TUXDIR="\usr\tuxedo"9.Load the ubbdomain file: tmloadcf -y ubbdomain10.Modify the dom1config for your Oracle Tuxedo environment. This includescreating log devices and updating the network addresses.Example:DMTLOGDEV="d:\my_apps\tlog"AUDITLOG="d:\my_apps\aud"TDOM1 NWADDR="//TuxedoMachine:1234"TDOM2 NWADDR="//WTCMachine:5678"11.Load the dom1config file.set BDMCONFIG=d:\mydomain\simpapp\bdmconfigdmloadcf -y dom1config12.Build the tolower clientbuildclient -f tolower.c -o tolower13.Boot the Tuxedo domaintmboot -y5Run the ExampleRun each client to demonstrate interoperability between Oracle Tuxedo and Oracle WebLogic Server.5.1Oracle WebLogic Server to Oracle Tuxedo InteroperabilityStart an Oracle WebLogic Server client from the directory location to which you downloaded the samples. For example, SAMPLES_HOME\server\examples\src\examples\wtc\atmi\simpapp directory to invoke the TOUPPER EJB and connect to the Oracle Tuxedo TOUPPER service. Use the following command:ant simpappThe Oracle Tuxedo service replies to your Oracle WebLogic Server application with: Buildfile: build.xmlsimpapp:run_client:[java] Beginning statefulSession.Client...[java] Creating Toupper[java] converting HelloWorld[java] converted to: HELLOWORLD[java] End statefulSession.Client...BUILD SUCCESSFUL5.2Oracle Tuxedo to Oracle WebLogic Server InteroperabilityRun the tolower client from the Oracle Tuxedo simpapp directory to invoke the Tolower EJB and return the results to the client. Use the following command:tolower ALLSMALLThe Oracle WebLogic Server service replies to your Oracle Tuxedo client with: Returned string is: allsmall6Documentation AccessibilityFor information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at/pls/topic/lookup?ctx=acc&id=docacc.Access to Oracle SupportOracle customers have access to electronic support through My Oracle Support. For information, visit/pls/topic/lookup?ctx=acc&id=info or visit /pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.Tuxedo Connector Quick Start Guide for Oracle WebLogic Server, 12c Release 1 (12.1.1)E24980-01Copyright © 2007, 2011, Oracle and/or its affiliates. All rights reserved.This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products,and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.。

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)。

标题:通过wtc、jolt进行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/public WORKPATH=$(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->Co nfigure 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 remote 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;tryif (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;}tryresult = (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){………}………}。

相关文档
最新文档