一、Introduction
1、Middleware目前流行叫做Application Server;
2、C语言编写;
3、Tuxedo走下坡路,因为BS架构流行;但CS仍有BS无法取代的使用场合;
4、Tuxedo server provides services to Tuxedo clients;
   ----server就是进程,用ps可以查看;
   ----services可以理解为一个一个的函数;
5、什么是短连接、长连接?
6、Bulletin Board Liaison(BBL:Tuxedo administration process);
7、客户端:native client,remote client;
8、unix命令:ipcs;
9、The tuxedo API:ATMI;
10、Tuxedo buffer types:
11、通讯方式:Request/Reply(synchronous、asynchronous);conversations;unsolicited messages;publish and subscribe;store and forward;
12、work distribution:
13、configuration and administration:centralized
14、domain:a tuxedo application;a bussiness progrem built upon the tuxedo system;
15、Conmand Line Utilities;GUI Administration Console;

二、Installing Tuxedo
1、Tuxedo Administrator
----职责同DBA,但更简单;
2、安装:官方安装文档;
3、目录结构;
4、卸载:卸载shell或删除全部目录;

三、Deploying a Basic Application
1、部署tuxedo自带例子,.../atmi/simpapp,小写转换大写;
2、部署步骤如下图:
     
(1)配置应用的环境变量
可以在tux.env中配置(临时环境变量):
tuxedo@campost:~/simpapp> cat tux.env
TUXDIR=/opt/tuxedo/tuxedo11gR1; export TUXDIR
JAVA_HOME=$TUXDIR/jre; export JAVA_HOME
JVMLIBS=$JAVA_HOME/lib/amd64/server:$JAVA_HOME/jre/bin
PATH=$TUXDIR/bin:$JAVA_HOME/bin:$PATH; export PATH
COBCPY=:$TUXDIR/cobinclude; export COBCPY
COBOPT="-C ANS85 -C ALIGN=8 -C NOIBMCOMP -C TRUNC=ANSI -C OSEXT=cbl"; export COBOPT
SHLIB_PATH=$TUXDIR/lib:$JVMLIBS:$SHLIB_PATH; export SHLIB_PATH
LIBPATH=$TUXDIR/lib:$JVMLIBS:$LIBPATH; export LIBPATH
LD_LIBRARY_PATH=$TUXDIR/lib:$JVMLIBS:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
WEBJAVADIR=$TUXDIR/udataobj/webgui/java; export WEBJAVADIR
LANG=C; export LANG
APPDIR=/home/tuxedo/simpapp; export APPDIR
TUXCONFIG=/home/tuxedo/simpapp/tuxconfig; export TUXCONFIG
里面的环境变量有些不是必须的,例如SHLIB_PATH用于HP-UX,LIBPATH用于IBM AIX,而LD_LIBRARY_PATH用于linux。
配置完之后执行:
tuxedo@campost:~/simpapp> . ./tux.env
也可以在tuxedo用户的.profile中添加以上环境变量,是它们在进入tuxedo时自动生效
(2)配置ubbconfig,编译程序
先修改文本形式的ubbconfig:
vi ubbsimpapp
仅修改以下几个地方即可:
*RESOURCES
IPCKEY          123456
*MACHINES
DEFAULT:
                APPDIR="/home/tuxedo/simpapp"
                TUXCONFIG="/home/tuxedo/simpapp/tuxconfig"
                TUXDIR="/opt/tuxedo/tuxedo11gR1"
campost         LMID=simple
tuxedo需要二进制形式的ubbconfig,需要使用tmloadcf得到二进制的ubbconfig:
tuxedo@campost:~/simpapp> tmloadcf -y ubbsimple
可以使用tmunloadcf命令从二进制形式的ubbconfig得到文本形式的ubbconfig。
编译服务端程序:
tuxedo@campost:~/simpapp> buildserver -o simpserv -f simpserv.c -s TOUPPER
服务端程序及服务名不能任意命名,因为在配置文件中有配置。
编译客户端程序:
tuxedo@campost:~/simpapp> buildserver -o simpserv -f simpserv.c -s TOUPPER
客户端可执行程序可任意命名。
(3)启动tuxedo应用,运行程序
tuxedo@campost:~/simpapp> tmboot -y
Booting all admin and server processes in /home/tuxedo/simpapp/tuxconfig
INFO: Oracle Tuxedo, Version 11.1.1.3.0, 64-bit, Patch Level (none)
Booting admin processes ...
exec BBL -A :
        process id=22679 ... Started.
Booting server processes ...
exec simpserv -A :
        process id=22680 ... Started.
2 processes started.
tuxedo@campost:~/simpapp> ./client "Hello, world"
Returned string is: HELLO, WORLD

四、Basic Tuxedo Configuration
1、tuxedo配置文件ubbxxx,既要文本文件,又要二进制文件,也是因为惯例,按说不应该必须让管理员手工tmloadcf生成二进制配置文件;
2、配置文件结构如下图:
     3、resource三个参数必不可少:
IPCKEY:IPC通信KEY,32,769—262,142,Tuxedo占用内存很少,该值尽量配大些;
MASTER:主Tuxedo节点的逻辑机器名(Logical Machine Name),与OS机器名(Real Machine Name,uname -a)映射,但不是OS机器名;
        Machine中有OS机器名与逻辑机器(LMID)名的对应。
MODEL:单机是SHM,多机网络是MP;
4、配置文件的联机文档为ads.pdf,其他参数调优时使用;

五、Administration and Additional Configuration
1、MIB:Management Information Base;
2、操作tuxedo有三种方式:(1)APIs;(2)tmadmin;(3)图形界面;
   对于学习来说,APIs用于开发,tmadmin用于管理,图形界面不用学习;
3、tmboot:
       如:tmboot -s dispApp;
4、tmshutdown:
        如:tmshutdown -s dispApp;
      tmshutdown -c;
5、tmadmin:


production@campost:~> tmadmin
tmadmin - Copyright (c) 1996-2010 Oracle.
Portions * Copyright 1986-1997 RSA Data Security, Inc.
All Rights Reserved.
Distributed under license by Oracle.
Tuxedo is a registered trademark.
> help
aborttrans (abort) [-yes] [-g groupname [-R rmid]] tranindex
addmodule (amod) -g groupname -i srvid -n modulename -j jarfilename [-C localclasspath] [-A args]
advertise (adv) {-q qaddress [-g groupname] [-i srvid] | -g groupname -i srvid} service[:func]
bbclean (bbc) machine
bbinternals (bbi) 
bbparms (bbp) 
bbsread (bbls) machine
bbstats (bbs) 
boot (b) [options]
broadcast (bcst) [-m machine] [-u usrname] [-c cltname] [text]
changeload (chl) [-m machine] {-q qaddress [-g groupname] [-i srvid]
        [-s service] | -g groupname -i srvid -s service | -I interface [-g groupname]} newload
changemodule (cmod) -g groupname -i srvid -n modulename -j jarfilename [-C localclasspath] [-A args]
changepriority (chp) [-m machine] {-q qaddress [-g groupname] [-i srvid]
        [-s service] | -g groupname -i srvid -s service | -I interface [-g groupname]} newpri
changetrace (chtr) [-m machine] [-g groupname [-R rmid]] [-i srvid] newspec
changetrantime (chtt) [-m machine] {-q qaddress [-g groupname] [-i srvid]
        [-s service] | -g groupname -i srvid -s service | -I interface [-g groupname]} newtlim
committrans (commit) [-yes] -g groupname [-R rmid] tranindex
config (conf) 
crdl (crdl) -b blocks -z config -o configoffset [-O newdefoffset] [newdevice]
crlog (crlg) -m machine
default (d) [-c clientname] [-g groupname] [-i srvid] [-m machine]
        [-q qaddress] [-s service] [-u username]
        [-b blocks] [-o offset] [-z config] [-a {0|1|2}]
        [-I interface] [-B objectid] [-r routingname]
        [-p jdbcconnpool]
dsdl (dsdl) [-yes] -z config [-o offset] dlindex
dslog (dslg) [-yes] -m machine
dump (du) fname
dumpmem (dumem) fname 
dumptlog (dl) -z config [-o offset] [-n name] [-g groupname [-R rmid]] filename
echo (e) [{off | on}]
help (h) [{command | all}]
initdl (indl) [-yes] -z config [-o offset] dlindex
inlog (inlog) [-yes] -m machine
interfaceparms (ifp) -g groupname -I interface
lidl (lidl) -z config [-o offset] [dlindex]
livtoc (livtoc) -z config [-o offset]
loadtlog (loadtlog) -m machine filename
logstart (logstart) machine
migrategroup (migg) [-cancel] group_name
migratemach (migm) [-cancel] machine
mode (mode) {-g groupname | -i srvid | -q qaddress} ... [command [arguments]]
paginate (page) [{off | on}]
passwd (passwd) 
pclean (pcl) machine
printactiveobject (pao) [-B objectid] [-m machine]
printclient (pclt) [-m machine] [-u usrname] [-c cltname]
printconn (pc) [-m machine]
printdomain (pd) [{-g groupname | -i srvid | -q qaddress} ...]
printfactory (pf) 
printgroup (pg) [-m machine] [-g groupname]
printinterface (pif) [-m machine] [-g groupname] [-I interface]
printjdbcconnpool (pjcp) [-g groupname] [-i srvid] [-p jdbcconnpoolname]
printmodule (pmod) [-g groupname] [-i srvid]
printnet (pnw) [mach_list]
printqueue (pq) [qaddress]
printroute (pr) [-r routingname]
printserver (psr) [-m machine] [-g groupname [-R rmid]] [-i srvid] [-q qaddress]
printservice (psc) [-m machine] [-g groupname [-R rmid]] [-i srvid] [-q qaddress] [-s service] [-a {0|1|2}]
printtrans (pt) [-g groupname [-R rmid]] [-m machine]
quit (q) 
reconnect (rco) non-partitioned_machine1 partitioned_machine2
reconnectdomain (rd) {-g groupname | -i srvid | -q qaddress} ...
removemodule (rmod) -g groupname -i srvid -n modulename
resume (res) {-q qaddress | -g groupname | -i srvid | -s service | -I interface} ...
serverparms (srp) -g groupname [-R rmid] -i srvid
serviceparms (scp) -g groupname -i srvid -s service
shmstats (sstats) [{ex | app}]
shutdown (stop) [options]
stats (stats) {-g groupname | -i srvid | -q qaddress} ... [-s service]
stoptlisten (stoptl) [-m machine]
suspend (susp) {-q qaddress | -g groupname | -i srvid | -s service |-I interface} ...
unadvertise (unadv) {-q qaddress [-g groupname] [-i srvid] | -g groupname -i srvid} service
verbose (v) [{off | on}]
printrm (prm) [-m machine] [-g group]

6、tuxedo tmadmin和oracle sqlplus输入错误按回退键无法删除,出现“^H”,用delete键才能删除:
设置回退键有效命令:stty erase ^H,但此时delete键又无效了;
7、一些其他命令:


如:
> pclt
    LMID         User Name       Client Name    Time    Status  Bgn/Cmmt/Abrt
--------------- --------------- --------------- -------- ------- -------------
Africa          production      WSH             46:01:11 IDLE    0/0/0
Africa          production      WSH             46:01:11 IDLE    0/0/0
......
Africa          DATA_SYNC_LIST+ 052002          24:22:02 IDLE/W  0/0/0
Africa          DATA_SYNC_LIST+ 052002          24:22:02 IDLE/W  0/0/0
Africa          DATA_SYNC_LIST+ 052001          24:22:01 IDLE/W  0/0/0
Africa          DATA_SYNC_LIST+ 053001          24:22:02 IDLE/W  0/0/0
Africa          DATA_SYNC_LIST+ 053000          23:20:11 IDLE/W  0/0/0
Africa          DATA_SYNC_LIST+ 023001          24:22:02 IDLE/W  0/0/0
Africa          DATA_SYNC_LIST+ 022001          23:20:12 IDLE/W  0/0/0
Africa          DATA_SYNC_LIST+ 023000          24:22:02 IDLE/W  0/0/0
Africa          DATA_SYNC_LIST+ 022000          24:22:01 IDLE/W  0/0/0
Africa          DATA_SYNC_LIST+ 052000          23:20:12 IDLE/W  0/0/0
Africa          production      tmadmin          0:18:10 IDLE    0/0/0
8、常用参数配置
      

如下为一个tuxedo应用的配置文件ubbproduction:
production@campost:~/cpst/campost/config> vi ubb_production
*RESOURCES
IPCKEY          237456
DOMAINID        camp_production
MASTER          Africa
MAXACCESSERS    2000
MAXSERVERS      200
MAXSERVICES     600
MODEL           SHM
LDBAL           N
BLOCKTIME       80
NOTIFY          SIGNAL
USIGNAL         SIGUSR1
*MACHINES
DEFAULT:
        APPDIR="/home/production/cpst/campost/bin"
        TUXCONFIG="/home/production/cpst/campost/config/tuxconfig"
        ULOGPFX="/home/production/cpst/campost/logs/ULOG"
        TUXDIR="/home/production/tuxedo"
        MAXWSCLIENTS=600
#identify "@(#) config/ubb $Revision: 1.1$"
*RESOURCES
IPCKEY          237456
DOMAINID        camp_production
MASTER          Africa
MAXACCESSERS    2000
MAXSERVERS      200
MAXSERVICES     600
MODEL           SHM
LDBAL           N
BLOCKTIME       80
NOTIFY          SIGNAL
USIGNAL         SIGUSR1
*MACHINES
DEFAULT:
        APPDIR="/home/production/cpst/campost/bin"
        TUXCONFIG="/home/production/cpst/campost/config/tuxconfig"
        ULOGPFX="/home/production/cpst/campost/logs/ULOG"
        TUXDIR="/home/production/tuxedo"
        MAXWSCLIENTS=600
#"Africa.site"  LMID="Africa"
"campost"       LMID="Africa"
*GROUPS
"GROUP1"        LMID="Africa"   GRPNO=1 OPENINFO=NONE
"GROUP2"        LMID="Africa"   GRPNO=2 OPENINFO=NONE
*SERVERS
DEFAULT:
        CLOPT="-A"
#应用服务组
dispApp SRVGRP=GROUP1 SRVID=1 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
acpApp  SRVGRP=GROUP1 SRVID=11 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
dlvApp  SRVGRP=GROUP1 SRVID=21 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
broadcastApp    SRVGRP=GROUP1 SRVID=31 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
downloadApp     SRVGRP=GROUP1 SRVID=41 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
transferApp     SRVGRP=GROUP1 SRVID=51 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
emailApp        SRVGRP=GROUP1 SRVID=61 RESTART=Y MIN=1 MAX=10 MAXGEN=2 CLOPT="-A -- a on -t on"
#domain管理的服务组
DMADM   SRVGRP=GROUP2 SRVID=1
GWADM   SRVGRP=GROUP2 SRVID=2
GWTDOMAIN SRVGRP=GROUP2 SRVID=3 REPLYQ=Y
#WSL    SRVGRP=GROUP2 SRVID=4 CLOPT="-A -- -n //132.10.10.11:9600 -T 20 -N 300 -m 50 -M 100 -x 2 -c 1024 -p 40000 -P 41000"
WSL     SRVGRP=GROUP2 SRVID=4 CLOPT="-A -- -n //132.10.10.17:9600 -T 20 -N 300 -m 50 -M 100 -x 2 -c 1024 -p 40000 -P 41000"
*SERVICES
ServiceDisp
ServiceAcp
ServiceDlv
ServiceDownload
ServiceBroadcast
ServiceTransfer
ServiceEmail
production@campost:~/cpst/campost/config>
说明:
CLOPT:“--”符左边是服务参数,“-A”是服务全部启动,“--”符右边是要传给客户端的参数,“-t on”是支持多线程;
MIN:最少启动服务数;
MAX:最多启动服务数;较好的方法是把MIN和MAX设置相等,把所有服务全启动,因为现在服务器内存已不是系统瓶颈了;
-p:允许设置MIN和MAX;
LDBAL:是否启动load balance功能;如果启动了load balance功能,services可以设置负载因子和优先级参数;
9、ULOG:User LOG file
默认放在APPDIR下,可以在resource中加参数ULOGPFX参数指定其他目录;
出现错误,分析ULOG时,一般先分析第一个错误,因为后面很多错误都可能是第一个错误导致的;
10、tmtrace:分析atmi系统调用的详细信息
export tmtrace=on之后在ULOG中查看详细信息,在开发时使用,因为要写大量的日志;
      

11、tmshutdown多次不能关掉时:
kill -9
rpcm

Tuxedo中间件开发和管理相关推荐

  1. java调用tuxedo中间件,BEA-TUXEDO中间件介绍.ppt

    BEA-TUXEDO中间件介绍 2003年1月16日 BEA TUXEDO 介绍 应用软件软件部 顾强 qiang_gu@163.net 培训目的 了解使用中间件的三层应用架构模式 了解BEA TUX ...

  2. webpack 开发模式管理 Development

    webpack 开发模式管理 Development GitHub 学习 Demo. 接下来将一些开发时的 webpack 配置. warnning : 本指南中的工具仅用于开发,请避免在生产中使用它 ...

  3. 听说你想从事中间件开发?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 莫那鲁道 来源 | https://urlif ...

  4. 怎样用springboot开发cs_SpringBoot分布式任务中间件开发 附视频讲解 (手把手教你开发和使用中间件)...

    沉淀.分享.成长,让自己和他人都能有所收获!? 前言 @SpringBootApplication @EnableScheduling public class Application{ public ...

  5. 第3讲--在linux4下安装tuxedo中间件

    我是在虚拟机上装的linux4环境,然后在上面装tuxedo 中间件 1.首先 下载 Tuxedo 10gR3 ,这个是目前最新的版本,貌似这个版本 不需要 单独下载 license,我就没有下载li ...

  6. 信息系统开发与管理 04757

    第一章管理信息系统导论 一.管理信息系统的概念及其发展 管理信息系统是管理和信息技术不断融合的产物是信息化的具体表现形式和主要内容. 管理信息系统:管理新系统系统是一个由人.计算机组成的能进行管理信息 ...

  7. 谈谈中间件开发,给想从事中间件开发的同学

    前言 本文主要是写给那些想从事中间件开发的同学看的 :) 如果你没有这个打算,那么本文的学习路线非但不实用,还可能会影响你正常的工作 :) 什么是中间件开发? 随着国内软件行业的发展,国内互联网公司规 ...

  8. 《告别失控:软件开发团队管理必读》一一2.9 工具

    本节书摘来自异步社区出版社<告别失控:软件开发团队管理必读>一书中的第2章,第2.9节,作者: [美]Mickey W. Mantle(米奇 W.蒙托) , Ron Lichty(罗恩•利 ...

  9. 《告别失控:软件开发团队管理必读》一一2.6 代系特点

    本节书摘来自异步社区出版社<告别失控:软件开发团队管理必读>一书中的第2章,第2.6节,作者: [美]Mickey W. Mantle(米奇 W.蒙托) , Ron Lichty(罗恩•利 ...

  10. 敏捷开发团队管理系列之三:程序与测试团队II

    这是敏捷开发团队管理系列的第三篇.(之一,之二,之三,之四) 测试团队的价值 这样看来,敏捷开发的质量保证问题,都被发开团队解决了,测试团队的价值何在? 这个可以从第一个项目组后来的发展来分析. 在整 ...

最新文章

  1. Linux内核的Oops
  2. CF#1288A Deadline (函数求最值问题)
  3. CTF--base64编码过程中隐藏信息解密脚本
  4. Luogu P2101 命运石之门的选择(分治+搜索)
  5. mongodb数据库常用指令
  6. 嘉年华回顾丨李圣陶带你了解阿里巴巴智能化运维的奥秘
  7. 2016-03-12 Leanning Plan
  8. android 多个占位符,基于android布局中的常用占位符介绍
  9. javascript无限弹窗_解决下javascript无限弹窗的问题
  10. 什么是肠漏综合征,它如何影响健康?
  11. python修改图片尺寸和DPI
  12. CY系列菁染料CY3、CY5、CY5.5、CY7、CY7.5修饰标记泛素Ubiquitin Rhodamine(Ub)
  13. 博客营销?软文营销?怎么按照流程走?
  14. adpcm的压缩和解压缩实现
  15. IDC排名(牛不会回来)
  16. 西门子S7-1200带触摸屏无塔恒压供水控制系统设计西门子S7-1200 PLC 程序,博图V13带触摸屏画面电气图纸
  17. 苹果x面容id不可用是什么原因_苹果全系列面容都可以修复了无面容iPhone有救了?...
  18. c语言哑元,Fortran字符串处理
  19. UML(2)之UML 的图
  20. 【论文阅读】Can Spatiotemporal 3D CNNs Retrace the History of 2D CNNs and ImageNet?

热门文章

  1. Eclipse版本控制插件Subclipse与Subversive的区别
  2. 利用Think远程代码执行漏洞进行脱库上传免杀木马情报
  3. 电脑ps4,人在外心在家,教你用PC/MAC远程打PS4
  4. 软件质量保证基本知识加复习建议
  5. CSDN markdown 数学公式指导手册
  6. java 前端模板_前端项目模板
  7. 使用Python PyQt5实现一个简单的图像识别软件
  8. 【服务治理】服务治理漫谈
  9. CorelDRAWX4的VBA插件开发(十五)选择分辨率一键导出多张图片到桌面
  10. nexus批量上传与下载