TUXEDO简介及命令介绍

合集下载

tuxedo常用命令

tuxedo常用命令

Tuxed‎o作为系‎统的中间件‎,其配置主‎要包括:资‎源文件的配‎置和应用环‎境的配置;‎其管理‎和维护主要‎包括:系统‎的启动和关‎闭、日志的‎跟踪查看工‎作。

Tu‎x edo 应‎用系统的配‎置一、应‎用系统的资‎源配置,全‎都包含在两‎个资源配置‎文件中(u‎b bcon‎f ig 和‎d mcon‎f ig )‎,在这两个‎配置Tu‎x edo ‎作为系统的‎中间件,其‎配置主要包‎括:资源文‎件的配置和‎应用环境的‎配置;其管‎理和维护主‎要包括:系‎统的启动和‎关闭、日志‎的跟踪查看‎工作。

‎T uxed‎o应用系统‎的配置‎一、应用系‎统的资源配‎置,全都包‎含在两个资‎源配置文件‎中(ubb‎c onfi‎g和dm‎c onfi‎g),在‎这两个配置‎文件中包含‎了系统所有‎的应用资源‎(文件)。

‎1、‎‎对于ub‎b conf‎i g文件,‎可以任意使‎用一个文件‎名(如:u‎b b.tx‎t),使用‎一种文本编‎辑工具,将‎应用系统的‎资源分类进‎行配置,相‎关进程启动‎数量等等都‎应该配置在‎其中,然后‎设置环境变‎量TUXC‎O NFIG‎,使用系统‎命令:tm‎l oadc‎f来将文‎本文件ub‎b.txt‎,转化生成‎环境变量T‎U XCON‎F IG制定‎的二进制文‎件。

在该文‎件中主要包‎含了几个参‎数的设置:‎系统所使用‎的共享内存‎的键值IP‎C KEY,‎针对wor‎k stat‎i on 客户‎端的监听进‎程的端口(‎W SL),‎多台机器之‎间互连(登‎记中心与各‎网关)的网‎络地址和端‎口(NAD‎D R,NL‎S ADDR‎),数据依‎赖路由的设‎定等等。

‎详细的内容‎参看《Ub‎b conf‎i g配置.‎d oc》‎参看模版来‎实现移植或‎添加应用进‎程等等。

‎2、‎‎对于dm‎c onfi‎g文件,可‎以任意使用‎一个文件名‎(如:dm‎.txt)‎,使用一种‎文本编辑工‎具,将应用‎系统的多域‎互联及互相‎调用的关系‎进行配置,‎包括多域之‎间互联的地‎址和端口,‎然后使用系‎统命令:d‎m load‎c f 来将‎文本文件d‎m.txt‎,转化成环‎境变量BD‎M CONF‎I G所指定‎的二进制文‎件。

TUXEDO中间件基础培训教程

TUXEDO中间件基础培训教程

TUXEDO中间件基础培训教程TUXEDO是一种常用的中间件,用于构建分布式系统和业务应用。

它提供了灵活的架构和强大的功能,能够处理高并发的请求和可靠的消息通信。

本篇文章将介绍TUXEDO的基础知识和用法,帮助读者了解和使用TUXEDO中间件。

一、TUXEDO中间件概述1. 应用服务器(Application Server):负责处理客户端请求,调用相应的服务和资源。

2. 事务管理器(Transaction Manager):负责管理分布式事务,保证事务的一致性和可靠性。

3. 路由器(Router):负责根据客户端请求的目标,将请求路由到相应的应用服务器。

4. 消息队列(Message Queue):用于在不同的应用服务器之间传递消息。

二、TUXEDO开发环境2.配置TUXEDO环境:设置TUXDIR环境变量和相关配置文件,以便使用TUXEDO命令和功能。

3.开发工具:TUXEDO提供了命令行工具和图形化界面工具,可以根据具体需求选择适合的工具进行开发。

三、TUXEDO应用开发1. 定义服务(Service):服务是TUXEDO中间件的核心概念,它表示一个可供调用的逻辑单元。

可以使用工具或配置文件定义服务,并设置相应的参数和属性。

2. 编写客户端代码:客户端代码负责与TUXEDO中间件进行交互,发送请求和接收响应。

可以使用C、C++、Java等编程语言进行开发,使用TUXEDO提供的API进行调用。

3. 编写服务代码:服务代码负责响应客户端请求,并进行相应的数据处理和业务逻辑。

可以使用C、C++、Java等编程语言进行开发,使用TUXEDO提供的API进行编程。

4.配置资源:资源是TUXEDO应用的关键组成部分,包括数据库连接、文件系统等。

可以使用配置文件或工具对资源进行定义和配置。

5.部署应用程序:将开发完成的应用程序部署到TUXEDO环境中,并进行测试和验证。

四、TUXEDO事务处理1.本地事务:在单个应用服务器内执行的事务,可以通过TUXEDO事务管理器进行管理。

tuxedo培训教程

tuxedo培训教程

引言:本文是关于Tuxedo培训教程的第二部分,旨在深入介绍Tuxedo技术的相关知识和应用。

Tuxedo是一种高性能、高可用性的分布式应用服务器,广泛应用于大规模事务处理和企业级应用领域。

本文将分为五个方面对Tuxedo进行详细阐述,帮助读者更好地理解和应用该技术。

正文:一、Tuxedo安装与配置1. Tuxedo系统要求:包括硬件和软件要求,例如操作系统、内存、存储等方面的要求。

2. Tuxedo的安装步骤:详细介绍如何下载、安装和配置Tuxedo软件。

3. Tuxedo的配置文件:包括DOMAINS、UBBCONFIG等配置文件的作用和常用参数设置。

4. Tuxedo的环境变量设置:介绍如何设置Tuxedo相关的环境变量,确保系统能正常运行。

二、Tuxedo应用开发1. Tuxedo编程模型:介绍Tuxedo的编程模型,包括服务(Service)、服务器(Server)和客户端(Client)的概念和作用。

2. Tuxedo事务管理:详细解释Tuxedo事务的概念和使用方法,包括事务的起始、提交和回滚操作。

3. Tuxedo服务开发:介绍如何编写和发布Tuxedo服务,包括服务的注册、发布和请求处理过程。

4. Tuxedo客户端开发:讲解如何编写Tuxedo客户端程序,包括连接Tuxedo服务、发送请求和接收响应等步骤。

5. Tuxedo编程示例:通过实际的编程示例演示Tuxedo应用开发的流程和技巧,帮助读者更好地理解和应用。

三、Tuxedo监控与调优1. Tuxedo监控工具:介绍Tuxedo自带的监控工具,如tmadmin和tmj,用于监控和管理Tuxedo域。

2. Tuxedo性能调优:给出一些Tuxedo性能调优的建议和方法,包括资源配置、线程池设置等方面。

3. Tuxedo故障排查:介绍常见的Tuxedo故障和排查方法,如错误日志分析、日志级别配置等。

4. Tuxedo性能分析:介绍常用的性能分析工具和方法,用于定位和解决Tuxedo应用的性能瓶颈问题。

tuxedo常用命令

tuxedo常用命令
还可以通过script的方式,对于命令结果进行更复杂的处理
Tuxedo基本命令: 服务启动:tmboot –y 如果只需要启动单个则tmboot –S servername 服务停止:tmshutdown –y 同样tmshutdown –S servername tmadmin –v 查看 tuxedo 版本及license信息 tmloadcf -y ubb_file 编译文本格式的ubb文件到二进制的ubb文件 tmloadcf -c ubb_file 测试IPC资源最小需求 tmadmin>bbparms (bbp) 显示BB(Bulletin Board)的关键参数配置 tmadmin>bbstats (bbs) 显示当前BB(Bulletin Board)的统计信息 tmadmin>printclient (pclt) 显示当前连接tuxedo的客户端信息 tmadmin>printserver (psr) 显示 server 的信息 tmadmin>printservice (psc) 显示 service 的信息 tmadmin>printtrans (pt) 显示当前事务的信息 tmadmin>printqueue (pq) 显示请求队列的信息 和Unix shell命令结合使用,例如: echo psr| tmadmin | grep –v IDLE 取得在用的服务 echo psr| tmadmin | grep –v IDLE|wc -l echo psr| tmadmin | sort +4 echo psc| tmadmin | sort +6 echo pq | tmadmin | sort +4 echo pclt | tmadmin | grep –v WSH|grep –v tmadmin|wc –l

TUXEDO简介

TUXEDO简介

第二章:TUXEDO简介Tuxedo是BEA公司的交易中间件产品,1984年由贝尔实验室开发成功,1992年易主Novell 公司,1996年由BEA公司收购,经过十多年的不断更新和完善,Tuxedo已经发展成为交易中间件领域事实上的标准。

2.1TUXEDO系统的组成部分BEA TUXEDO是由服务器端的事务管理器、可靠队列服务、应用域以及客户端的工作站等几个核心部分组成的。

下面对这几部分进行介绍。

图TUXEDO核心组成1.事务管理器/T运行于服务器端的事务管理器是TUXEDO体系结构的中心,它是每个TUXEDO服务器的核心,提供重要的分布式应用服务,包括:名字服务、数据路由、负载平衡、配置管理、分布式事务管理和安全性管理。

它包含TUXEDO的核心数据结构公告板BB (Bulletin Board),BB中包括服务名、路由信息、请求服务的队列和负载等基本信息,TUXEDO/T负责访问和维护BB中的信息,并利用这些信息实现其各项功能。

2.工作站/WS工作站把TUXEDO ATMI API((注:ATMI,应用事务管理接口,是支持应用开发的一组函数) 扩展到客户端应用程序中,它适用于DOS、Windows3.1/95/98/2000/XP、Windows NT、IBM OS/2、Macintosh OS和所有商用版的UNIX。

有了工作站,开发者用ATMI客户端的功能可透明访问在TUXEDO分布式环境中任何服务器上的服务。

有了工作站,用户可在常见的编程环境中如:Visual Basic,PowerBuilder,DELPHI,VC等编写TUXEDO的客户端程序。

3.可靠队列服务/QTUXEDO提供了一个简单的可靠的队列机制,保证应用系统提交的请求和数据可在网络故障或目的服务器瘫痪等情况下也能递交到目的服务器。

应用程序能将服务请求入队和出队,并可以设定系统,使队列中的请求自动地转发给 TUXEDO的服务进程,并取回处理结果。

tuxedo基本操作atmi介绍

tuxedo基本操作atmi介绍

tuxedo基本操作atmi介绍ATMI(Authenticated Transactional Message Interface)是一种基于消息的分布式事务处理系统,用于在分布式环境中进行交易和通信。

它是Tuxedo系统的主要组成部分,用于支持多个应用程序之间的高性能、可靠和安全的通信。

ATMI提供了一组API,使开发人员能够在一个或多个计算机平台上创建分布式应用程序。

它提供了数据的传输、一致性、可靠性、安全性和事务管理等功能。

下面是ATMI的一些基本操作和功能:1.事务处理:ATMI支持分布式事务,允许应用程序在多个计算机上执行跨系统和跨应用的事务。

它提供了事务的开始、提交和回滚等操作,确保事务的一致性和可靠性。

2.消息传递:ATMI允许应用程序使用消息进行通信。

它提供了发送和接收消息的API,可以在不同的应用程序之间传递数据和命令。

3.远程调用:ATMI支持远程调用,允许应用程序通过网络调用远程服务器上的程序。

它提供了一些API,使开发人员能够方便地进行跨计算机调用。

4.数据传输:ATMI提供了数据传输的功能,可以在应用程序之间传递数据。

它支持常见的数据格式,如字符串、整数和结构体等。

5.容错性:ATMI具有高度的容错性,可以处理网络故障和系统故障等情况。

它可以自动进行故障恢复,并保持事务的一致性。

6.安全性:ATMI提供了安全性的功能,确保数据在传输过程中的机密性和完整性。

它支持加密和身份验证等机制,保护数据的安全。

7.并发控制:ATMI提供了并发控制的功能,可以对并发访问进行控制。

它使用锁和信号量等机制,确保多个应用程序之间的数据一致性。

总的来说,ATMI是一个强大而灵活的分布式事务处理系统,提供了丰富的功能和API,使开发人员能够构建高性能、可靠和安全的分布式应用程序。

它可以在不同的计算机平台上运行,并支持多种开发语言和数据格式。

无论是企业级系统还是互联网应用程序,ATMI都是一个理想的选择。

TUXEDO教程

TUXEDO教程

TUXEDO教程TUXEDO(The UniX Environment Developed for Operation)是一个基于UNIX的操作系统,它主要用于日常办公和个人使用。

TUXEDO具有简洁、稳定、高效的特点,而且非常容易上手。

在本教程中,我将为大家介绍TUXEDO的基本操作和一些常用功能。

第一部分:TUXEDO的安装和设置第二步:设置TUXEDO安装完成后,你需要对TUXEDO进行一些基本的设置。

例如,你可以设置语言和时区,还可以选择你喜欢的桌面环境。

在这一步,你应该根据自己的需求进行个性化设置。

第二部分:TUXEDO的基本操作1.系统登录启动TUXEDO后,你将会看到一个登录界面。

输入你的用户名和密码,然后点击登录按钮,你就可以进入系统了。

2.桌面环境3.文件管理在TUXEDO中,你可以使用Nautilus(GNOME)、Dolphin(KDE Plasma)等文件管理器来浏览你的文件夹和文件。

你可以通过双击文件夹打开它,或者使用右键菜单进行一些操作,比如复制、剪切、重命名等。

4.应用程序的安装和卸载5.系统更新6.终端操作TUXEDO提供了一个终端,你可以使用它来进行一些高级操作,比如安装软件包、管理用户、执行命令等。

通过打开终端,你可以输入一些命令来完成你想要的操作。

例如,你可以使用“sudo apt-get install<package>”来安装软件包。

第三部分:TUXEDO的高级功能1.多用户管理2.网络设置3.数据备份和恢复在TUXEDO中,你可以使用备份工具来备份你的重要文件和数据。

通过备份工具,你可以选择要备份的文件和文件夹,然后设置备份的位置和计划。

当你需要恢复数据时,只需使用备份工具来选择要恢复的文件和备份位置即可。

4.安全和隐私总结:通过这个教程,你应该已经了解了TUXEDO的基本操作和一些常用功能。

希望这个教程能够帮助你更好地使用TUXEDO,并享受到它简洁、稳定和高效的特点。

tuxedo命令和配置的详细解释及应用实例

tuxedo命令和配置的详细解释及应用实例

tuxedo命令和配置的详细解释及应用实例域的组成BDMCONFIG:二进制配置文件DMADM:域管理服务器,管理多个GWADMGWADM:运行时网关管理服务器,从DMADM服务器上获取域信息GWTDOMAIN:是一个网关进程,在域之间转发消息tmshutdown/tmboot -s 服务名按服务名停/启单个服务tmshutdown/tmboot -S (大写的S)停/启所有服务tmshutdown/tmboot -i 进程号按进程号停/启单个服务tmshutdown/tmboot -g 组名字按组停/启服务tmshutdown/tmboot -y -w1 按用户停/启服务tmloadcf -n 文件名只做语法检查不编译tmloadcf -y 文件名编译二进制文件tmloadcf -c 文件名测试IPC资源最小需求tmadmin -v 版本tmadmin>bbp 查BB的参数bbs BB统计信息pclt 连接客户端信息psr server信息psc service信息pt 当前事物信息pq 队列信息echo psr|tmadmin|grep -v IDLEecho psr|tmadmin|sort +4echo psc|tmadmin|sort +6echo pq|tmadmin|sort +4echo pclt|tmadmin|grep -v WSH|grep -v tmadmin以下是tmadmin命令的printserver(简写为psr)的简单输出。

列号描述1. 服务的可执行文件名2. 服务连接的队列名3. 组名4. 服务的数字id5. 服务已经处理的请求数6. 服务处理的全部请求的参数和7. 服务正在处理的交易,若为IDLE则服务当前是空闲ccsmis:/home2/ccsmis>tmadmintmadmin - Copyright (c) 1996 BEA Systems, Inc.Portions * Copyright 1986-1997 RSA Data Security, Inc.All Rights Reserved.Distributed under license by BEA Systems, Inc.Tuxedo is a registered trademark.> printserverProg Name Queue Name Grp Name ID RqDone Load Done Current Service --------- ---------- -------- -- ------ --------- --------------- rz_Ecsb 00004.04000 APGP2 4000 0 0 ( IDLE )BBL 70020 simple 0 1 50 ( IDLE ) IFMTMS APGP2_TMS APGP2 30001 1 50 ( IDLE )交易信息来自GAI的信息本处略去。

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

Tuxedo是一个客户机/服务器的―中间件‖产品,它在客户机和服务器之间进行调节,以保证正确地处理事务。

Tuxedo是一个事务处理(TP)监督器,它管理联机事务处理(OLTP)系统(参见―事务处理‖)操作的事务。

客户通过结构化查询语言(SQL)调用,或其它类型的请求,产生对服务器的请求。

这个事务处理监督器确信,正确地进行了修改,以保证数据的完整性。

这在一个事务可以改变多个位置的数据库的分布式数据库环境是非常重要的。

这个事务处理监督器使用双阶段提交,以保证所有的数据库都已经接收和认可了这些数据的正确性。

否则,这个数据库返回它的事务前状态。

事务监督器从前都是与大的大型计算机系统联系在一起的,但是Tuxedo的设计是为了在不昂贵的基于UNIX的系统上运行。

AT&T最初是作为它自己使用的联机事务处理开发Tuxedo的。

虽然Tuxedo必须在U-NIX系统上运行,但是它可以与DOS、OS/2、Windows和UNIX客户一起工作。

它还使用通用的通信协议,如传输控制协议/因特网协议(TCP/IP)和网络基本输入输出系统(NetBIOS),并且可以在这些环境提供分布式处理支持。

例如,它可以根据请求的类型,服务请求从一个客户选择路由到一个特定的服务器。

Tuxedo的基本特征是它的联机事务处理系统,但是,Tuxedo也工作于集成关系型的平面文件,以及层次数据库系统。

相关条目:Connectionless and Connection-Oriented Transactions无连接和面向连接事务;Transaction Processing 事务处理。

Tuxedo作为电子商务交易平台,它允许客户机和服务器参与一个涉及多个数据库协调更新的交易,并能够确保数据的完整性。

BEA Tuxedo一个特色功能是能够保证对电子商务应用系统的不间断访问。

它可以对系统组件进行持续的监视,查看是否有应用系统、交易、网络及硬件的故障。

一旦出现故障,BEA Tuxedo会从逻辑上把故障组件排除,然后进行必要的恢复性步骤。

BEA Tuxedo根据系统的负载指示,自动开启和关闭应用服务,可以均衡所有可用系统的负载,以满足对应用系统的高强度使用需求。

借助DDR(数据依赖路由),BEA Tuxedo可按照消息的上下文来选择消息路由。

其交易队列功能,可使分布式应用系统以异步―少连接‖方式协同工作。

BEA Tuxedo LLE安全机制可确保用户数据的保密性,应用/交易管理接口(ATMI)为50多种硬件平台和操作系统提供了一致的应用编程接口。

BEA Tuxedo基于网络的图形界面管理可以简化对电子商务的管理,为建立和部署电子商务应用系统提供了端到端的电子商务交易平台。

Tuxedo使用————Tuxedo配置及简单应用1. 设置环境变量TUXDIR=<Tuxedo软件所在路径>APPDIR=<应用程序所在路径>PATH=<必须包含路径%TUXDIR%\BIN>TUXCONFIG=<配置文件tuxconfig的全路径>WSNADDR=<服务器地址,客户端使用>LD_LIBRARY_PATH=%LD_LIBRARY_PATH%;%TUXDIR%\LIB2. 编辑样本配置文件ubbsimple,修改相应内容。

IPCKEY 区别于其他用户的变量(32767..262143)TUXCONFIG <二进制配置文件tuxconfig的全路径>TUXDIR <Tuxedo软件所在目录>APPDIR <应用程序所在目录>Machine-name <机器名称>3. 使用如下命令建立二进制配置文件:tmloadcf <ascii码配置文件>4. 使用如下命令建立服务器端和客户端可执行程序buildclient –v –w –o simpcl –f simpcl.c // -w表示远程的服务buildserer –v –o simpserv –f simpserv.c –s touppers //toupper是将小写字母转换为大写字符的服务注:simpcl client可执行程序。

simpcl.c client源程序。

simpserv server端可执行程序。

simpserv.c server端源程序。

touppers service名称。

5. 使用如下命令启动server端应用环境(由二进制配置文件定义):tmboot –y6. 使用如下命令可以显示和修改运行进程的参数。

tmadmin:有两个子命令:psr (printserver) 显示有关服务器的信息。

psc (printservice) 显示有关服务进程的信息。

7. 可以通过查看日志文件ULOG.*来获取系统运行信息。

日志文件信息格式如下:time (hhmmss).machine_uname!process_name.process_id: log message说明:时间(hhmmss).机器名称.进程名.进程号.日志信息8. 使用如下命令关闭应用环境:tmshutdown –y //-y表示关闭所有的服务可接-s servername –s servername1…关闭某几个服务参数:-A 在所有机器上启动/关闭管理的Server进程-M 只在MASTER机器上启动/关闭管理的Server进程-i srvid 启动/关闭某个server id指定的Server进程-g grpname 启动/关闭某个server group名字指定的Server Group-S 启动/关闭所有应用服务器(LMID)-s server-name 启动/关闭某个server名字指定的Server进程-l lmid option 在指定的机器上启动/关闭所有TMS进程和应用服务器(LMID)-T grpname 启动/关闭指定的server group中所有的TMS进程-B lmid 在指定的机器上启动/关闭BBL进程-e command 指定一个程序可以当在MASTER机器上启动任何一个进程失败时执行-c 计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源9. UBBCONFIG文件的例子:#ident "@(#) apps/simpapp/ubbsimple $Revision: 1.3 $"#Skeleton UBBCONFIG file for the TUXEDO Simple Application.#Replace the <bracketed> items with the appropriate values.*RESOURCESIPCKEY 123456#Example:#IPCKEY 123456#DOMAIN的ID值DOMAINID simpapp#指定DOMAIN中的管理MASTER simple#这里该值表示整个系统中每个机器上可以访问TUXEDO的Client和Server的总数MAXACCESSERS 100#最大的server数MAXSERVERS 5#最大的service数MAXSERVICES 10#cluster方式为MP,否则为SHMMODEL SHM#允许负载均衡LDBAL N*MACHINES#网络主机名用hostname获得。

#LMID:Logical Machines ID 为tuxedo对主机的内部逻辑命名。

#APPDIR要求放置SERVER的可执行文件。

#TUXCONFIG为全路径的二进制配置文件,要求和环境变量TUXCONFIG相同。

#TUXDIR为tuxedo安装目录,要求和环境变量TUXDIR相同。

CCBFJF85 LMID=simpleAPPDIR="/home/tuxedo/samples/atmi/simpapp"TUXCONFIG="/home/tuxedo/etc/tuxconfig"TUXDIR="/home/tuxedo"#MAXWSCLIENTS表示可连接client的最大个数。

MAXWSCLIENTS=50*GROUPS#GROUP1为组名,LMID表示该组运行的主机,GRPNO为组号,#OPENINFO为该组打开数据库的初始串。

GROUP1 LMID=simple GRPNO=1 OPENINFO=NONE*SERVERSDEFAULT:CLOPT="-A"#WSL用于和client端进行连接。

-n 表示出接入点为IP:PORT方式,#-m -M 表示最小和最大启动多少个WSH和前端通讯,#-x则表示一个WSH和几个client端连接。

WSL SRVGRP=GROUP1 SRVID=1CLOPT="-A -- -n //127.0.0.1:8889 -m 3 -M 10 -x 10 "simpserv SRVGRP=GROUP1 SRVID=2CLOPT="-A -o ./out.log -r -e ./err.log"*SERVICEStouupers10. simpcl.c文件的例子:/* Copyright (c) 1997 BEA Systems, Inc.All rights reservedTHIS IS UNPUBLISHED PROPRIETARYSOURCE CODE OF BEA Systems, Inc.The copyright notice above does notevidence any actual or intendedpublication of such source code.*//* #ident "@(#) apps/simpapp/simpcl.c $Revision: 1.3 $" */#include <stdio.h>#include <stdlib.h>#include "atmi.h" /* TUXEDO Header File */#if defined(__STDC__) || defined(__cplusplus)main(int argc, char *argv[])#elsemain(argc, argv)int argc;char *argv[];#endif{char *sendbuf, *rcvbuf;long sendlen, rcvlen;int ret;if(argc != 2) {(void) fprintf(stderr, "Usage: simpcl string\n"); exit(1);}/* Attach to System/T as a Client Process */ if (tpinit((TPINIT *) NULL) == -1) {(void) fprintf(stderr, "Tpinit failed\n");exit(1);}sendlen = strlen(argv[1]);/* Allocate STRING buffers for the request and the reply */if((sendbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) { (void) fprintf(stderr,"Error allocating send buffer\n");tpterm();exit(1);}/*if((rcvbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) { */if((rcvbuf = (char *) tpalloc("STRING", NULL, 1)) == NULL) {(void) fprintf(stderr,"Error allocating receive buffer\n");tpfree(sendbuf);tpterm();exit(1);}(void) strcpy(sendbuf, argv[1]);/* Request the service TOUPPER, waiting for a reply */ret = tpcall("touppers", (char *)sendbuf, 0, (char **)&rcvbuf, &rcvlen, (long)0);if(ret == -1) {(void) fprintf(stderr, "Can't send request to service TOUPPER\n");(void) fprintf(stderr, "Tperrno = %d\n", tperrno);tpfree(sendbuf);tpfree(rcvbuf);tpterm();exit(1);}(void) fprintf(stdout, "Returned string is: %s\n", rcvbuf);/* Free Buffers & Detach from System/T */tpfree(sendbuf);tpfree(rcvbuf);tpterm();return(0);}11. simpserv.c文件的例子:/* Copyright (c) 1997 BEA Systems, Inc.All rights reservedTHIS IS UNPUBLISHED PROPRIETARYSOURCE CODE OF BEA Systems, Inc.The copyright notice above does notevidence any actual or intendedpublication of such source code.*//* #ident "@(#) apps/simpapp/simpserv.c $Revision: 1.3 $" */#include <stdio.h>#include <ctype.h>#include <atmi.h> /* TUXEDO Header File */#include <userlog.h> /* TUXEDO Header File *//* tpsvrinit is executed when a server is booted, before it begins processing requests. It is not necessary to have this function. Also available is tpsvrdone (not used in this example), which is called at server shutdown time.#if defined(__STDC__) || defined(__cplusplus)tpsvrinit(int argc, char *argv[])#elsetpsvrinit(argc, argv)int argc;char **argv;#endif{/* Some compilers warn if argc and argv aren't used. */argc = argc;argv = argv;/* userlog writes to the central TUXEDO message log */userlog("Welcome to the simple server");return(0);}/* This function performs the actual service requested by the client. Its argument is a structure containing among other things a pointer to the data buffer, and the length of the data buffer.#ifdef __cplusplusextern "C"#endifvoid#if defined(__STDC__) || defined(__cplusplus) touppers(TPSVCINFO *rqst)#elsetouppers(rqst)TPSVCINFO *rqst;#endif{int i;for(i = 0; i < rqst->len-1; i++)rqst->data[i] = toupper(rqst->data[i]);/* Return the transformed buffer to the requestor. */ tpreturn(TPSUCCESS, 0, rqst->data, 0L, 0);}。

相关文档
最新文档