??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲免费电影网站,亚洲V无码一区二区三区四区观看,亚洲国产激情在线一区http://www.tkk7.com/Vencent/category/14863.html<font color='orange'>本博客仅为收集所用。在此对原作者表C感谢?lt;/font> <center> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><div class="custom"> <script type="text/javascript"><!-- google_ad_client = "pub-6256612161572960"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text"; google_ad_channel =""; google_page_url = document.location; google_color_border = ["FFDDAA","FFDDAA","FFDDAA","FFDDAA"]; google_color_bg = ["EEEEEE","EEEEEE","EEEEEE","EEEEEE"]; google_color_link = ["FFDDAA","0033FF","00008B","99CC33"]; google_color_url = ["999999","0033FF","00008B","FFCC00"]; google_color_text = ["0033FF","AA9999","0033FF","AA9999"]; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script></div></center> <!--bgsound src="http://www.tkk7.com/Files/Vencent/The%20Mass%20Era.zip" volume="10" loop="10"/-->zh-cnMon, 18 Jun 2007 21:46:55 GMTMon, 18 Jun 2007 21:46:55 GMT60整合weblogic cluster Q?apachehttp://www.tkk7.com/Vencent/articles/125027.html<font color='GREEN'>Vincent Chen</font><font color='GREEN'>Vincent Chen</font>Mon, 18 Jun 2007 17:02:00 GMThttp://www.tkk7.com/Vencent/articles/125027.htmlhttp://www.tkk7.com/Vencent/comments/125027.htmlhttp://www.tkk7.com/Vencent/articles/125027.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/125027.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/125027.html        位于$WL_HOME/bin目录下,其中Q?br>        mod_wl128_20.soQ用于Standard Apache Version 2.0.xQRegular Strength EncryptionQ?br>        mod_wl_20.soQ用于Standard Apache Version 2.0.xQ?28-bit EncryptionQ?br>
2. 认需要的Apache版本

3. 认在Apache中支持Plug-ins
        执行:$APACHE_HOME/bin/apache -lQ如果没有列出来mod_so.cQ则需要重?br>Build?br>
4. 安装Apache HTTP Server Plug-In module
        mod_wl_20.so复制?APACHE_HOME/modules目录下;
        修改$APACHE_HOME/conf/httpd.conf配置文gQ增加如下行Q?br>                LoadModule weblogic_module     modules/mod_wl_20.so

5. 在httpd.conf中配|其它参?br>
        <IfModule mod_weblogic.c>
                WebLogicCluster localhost:90,localhost:91
                MatchExpression *.jsp
        
</IfModule>

        
<Location /weblogic>
                SetHandler weblogic-handler
                PathTrim /
        
</Location>
        
<IfModule mod_weblogic.c>
            WebLogicCluster localhost:7003,localhost:7005,localhost:7007
            MatchExpression *
        
</IfModule>

        
<Location /DizzyTixWeb>
            SetHandler weblogic-handler
            PathTrim /
        
</Location>

        
<Location /DizzySupplies>
            SetHandler weblogic-handler
            PathTrim /
        
</Location>

查httpd.conf配置是否正确QAPACHE_HOME\bin\Apache -t

6. 重启Weblogic Server
7. 启动Apache HTTP Server
8. 试插g http://localhost/weblogic/




Vincent Chen 2007-06-19 01:02 发表评论
]]>
[转帖] Windows下Tuxedo的安装与配置-无数据库http://www.tkk7.com/Vencent/articles/123731.html<font color='GREEN'>Vincent Chen</font><font color='GREEN'>Vincent Chen</font>Tue, 12 Jun 2007 14:34:00 GMThttp://www.tkk7.com/Vencent/articles/123731.htmlhttp://www.tkk7.com/Vencent/comments/123731.htmlhttp://www.tkk7.com/Vencent/articles/123731.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/123731.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/123731.html一、安装前的文件准?br>
下蝲Tuxedo For Windows版本和License文gQ本机采用的是Tuxedo9 windows版本。具?br>Windows安装q程略。正常安装后Tuxedo?x)徏一个tlisten的服务,且已自动启动?br>
本机Tuxedo安装路径 C:\bea\tuxedo9.0

二、Tuxedo安装完成后的环境变量配置
 
  [Win2000,XP]
 
  右键我的?sh)?>属?>高->环境变量Q更改变量倹{?br> 
  在LIBҎ(gu)?nbsp;    C:\bea\tuxedo9.0\lib
  在INCLUDEҎ(gu)?C:\bea\tuxedo9.0\include
  在PATHҎ(gu)?nbsp;   C:\bea\tuxedo9.0\bin
 
  d下面两个新项
  TUXDIR          C:\bea\tuxedo9.0
  WSNADDR         //192.168.98.166:4050  Tuxedo服务器IP与端?br> 
  除此之外q需要指定Tuxedo应用服务的\径,如果你用C开发了一个Tuxedo服务Q这个服?br>  文g所在的路径。本\径ؓ(f)F:\Liwei\Tuxedo\dbread?br> 
  Ҏ(gu)机器实际情况d
  APPDIR          F:\Liwei\Tuxedo\dbread
  TUXCONFIG       F:\Liwei\Tuxedo\dbread\tuxconfig
 
  注:(x)环境变量更改后确定即生效?br>
  [Win98]
 
  ?000,XP不同的是需要更改AUTOEXEC.BAT文gQ加入以下命令?br>  如SET TUXDIR=C:\bea\tuxedo9~1
 
  注:(x)AUTOEXEC.BAT有一个缺点,是更改后需要重启机器才能生效,如果我们设一个环?br>  变量文gQ如TUXENVQ,那只要在文g里修改后存盘p生效。在AUTOEXEC.BAT中长文g
  名必ȝ~写?br> 
  例:(x)
 
  SET TUXENV=C:\bea\tuxedo9~1           //TUXDEO环境变量文g

  在C:\bea\tuxedo9.0目录下创建TUXENV文gQ在文g里加?br>  APPDIR=F:\Liwei\Tuxedo\dbread
  TUXCONFIG=F:\Liwei\Tuxedo\dbread\tuxconfig
  ...

三、准备Tuxedo客户端,服务端程序代?br>
  可以直接用Tuxedo本n带的例子QC:\bea\tuxedo9.0\samples\atmi\simpapp
  客户?simpcl.c
  服务?simpserv.c
 
四、准备编译客L(fng)服务端程?br>
  q里最好是自已把各U编译命令写成批处理文g。在~译之前需要安装C语言~译器,我们
  通常使用VC++6.0Q安装时如果没有让VC讄环境变量Q在~译前需要手工运?
  E:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT
 
  注:(x)手工讄的变量在关闭命o(h)行环境就失效了。最好是复制到本地文件夹?br> 
  bclt.bat文g内容
  F:
  cd F:\liwei\tuxedo\dbread
  buildclient -o simpcl -f simpcl.c -v

  bsrv.bat文g内容
  F:
  cd F:\liwei\tuxedo\dbread
  buildserver  -o simpserv -f simpserv.c -s TOUPPER -v
 
  start.bat文g内容   q文件主要作用是启动当前目录的命令环?br>  cd
  cmd
 
  ~译完成后会(x)在本地目录生成simpcl.exe和simpserv.exe。要惛_动服务,则需要配|?br>  ubbconfig了?br> 
五、配|ubbconfig

  下面是一个完整的ubbconfig文gQ此文g要放在本地目录下。即与环境变量APPDIR保持
  一致。文件名随意Q这里用config文g名?br>
#Liwei

*RESOURCES
IPCKEY    123456
DOMAINID liweiapp
MASTER  lw
MAXACCESSERS 3
MAXSERVERS 3
MAXSERVICES 3
MODEL  SHM
LDBAL  N

*MACHINES
LWYM
LMID = lw
TUXDIR = "C:\bea\tuxedo9.0"
TUXCONFIG = "F:\Liwei\Tuxedo\dbread\tuxconfig"
APPDIR = "F:\Liwei\Tuxedo\dbread"

*GROUPS
GROUP1 LMID=lw GRPNO = 1 OPENINFO=NONE
*SERVERS
DEFAULT:
  CLOPT="-A"
simpserv SRVGRP=GROUP1 SRVID=1
*SERVICES
TOUPPER

  每段详细的说明很复杂Q具体可以查看相兌料。这里只Ҏ(gu)较迷惑的地方说明下?br> 
  *RESOURCES下MASTER名称LQ但要与*MACHINESQ?GROUPS里的LMID保持一致?br> 
  *RESOURCES下如MAXACCESSERSQMAXSERVERSQMAXSERVICES{设|错误如1Q编译config后,
  在命令行q行tmbootQBBL是启动不h的,重新讄正确的值后Q再~译config,tmboot
  BBL也启动不h。原因是d理器残存tuxipcq个q程Q在~译config前,q掉它就
  没问题了?br> 
  *MACHINES下面的服务器机器名必L大写。否则编译config?x)提CZ么non master的错误?br> 
  *MACHINEScMTUXDIR的内容必M环境变量讄一致?br> 
  *SERVERS中的simpserv名子必须是你服务端程序编译后的EXE文g名?br> 
  *SERVICES的TOUPPER是你服务端程序编译时-s制定的服务名?br> 
五、编译configQ运行tmboot启动服务
 
  讄完成。运?br> 
  load.bat 文g内容
  F:
  cd F:\liwei\tuxedo\dbread
  tmloadcf -y config
 
  ~译config文g完成后,?x)在APPDIR下生成tuxconfig文g?br>  q行tmboot -y
  BBL服务启动成功Qsimpserv启动成功!
 
  q行tmadmin可以查看l护服务的状态等。运行simpcl.exe可以看C互过E了?/span>

Vincent Chen 2007-06-12 22:34 发表评论
]]>
Tuxedo学习(fn)W记QUBBCONFIGhttp://www.tkk7.com/Vencent/articles/67699.html<font color='GREEN'>Vincent Chen</font><font color='GREEN'>Vincent Chen</font>Mon, 04 Sep 2006 15:26:00 GMThttp://www.tkk7.com/Vencent/articles/67699.htmlhttp://www.tkk7.com/Vencent/comments/67699.htmlhttp://www.tkk7.com/Vencent/articles/67699.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/67699.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/67699.html阅读全文

Vincent Chen 2006-09-04 23:26 发表评论
]]>
Windows下Tuxedo的安装与配置-无数据库http://www.tkk7.com/Vencent/articles/67697.html<font color='GREEN'>Vincent Chen</font><font color='GREEN'>Vincent Chen</font>Mon, 04 Sep 2006 15:25:00 GMThttp://www.tkk7.com/Vencent/articles/67697.htmlhttp://www.tkk7.com/Vencent/comments/67697.htmlhttp://www.tkk7.com/Vencent/articles/67697.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/67697.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/67697.htmlWindows下Tuxedo的安装与配置-无数据库

草木?2005-5-18

一、安装前的文件准?/p>

下蝲Tuxedo For Windows版本和License文gQ本机采用的是Tuxedo9 windows版本。具?br />Windows安装q程略。正常安装后Tuxedo?x)徏一个tlisten的服务,且已自动启动?/p>

本机Tuxedo安装路径 C:\bea\tuxedo9.0

二、Tuxedo安装完成后的环境变量配置
 
  [Win2000,XP]
 
  右键我的?sh)?>属?>高->环境变量Q更改变量倹{?br /> 
  在LIBҎ(gu)加   ?C:\bea\tuxedo9.0\lib
  在INCLUDEҎ(gu)?C:\bea\tuxedo9.0\include
  在PATHҎ(gu)加  ?C:\bea\tuxedo9.0\bin
 
  d下面两个新项
  TUXDIR          C:\bea\tuxedo9.0
  WSNADDR         //192.168.98.166:4050  Tuxedo服务器IP与端?br /> 
  除此之外q需要指定Tuxedo应用服务的\径,如果你用C开发了一个Tuxedo服务Q这个服?br />  文g所在的路径。本\径ؓ(f)F:\Liwei\Tuxedo\dbread?br /> 
  Ҏ(gu)机器实际情况d
  APPDIR          F:\Liwei\Tuxedo\dbread
  TUXCONFIG       F:\Liwei\Tuxedo\dbread\tuxconfig
 
  注:(x)环境变量更改后确定即生效?br /> 
  [Win98]
 
  ?000,XP不同的是需要更改AUTOEXEC.BAT文gQ加入以下命令?br />  如SET TUXDIR=C:\bea\tuxedo9~1
 
  注:(x)AUTOEXEC.BAT有一个缺点,是更改后需要重启机器才能生效,如果我们设一个环?br />  变量文gQ如TUXENVQ,那只要在文g里修改后存盘p生效。在AUTOEXEC.BAT中长文g
  名必ȝ~写?br /> 
  例:(x)
 
  SET TUXENV=C:\bea\tuxedo9~1           //TUXDEO环境变量文g

  在C:\bea\tuxedo9.0目录下创建TUXENV文gQ在文g里加?br />  APPDIR=F:\Liwei\Tuxedo\dbread
  TUXCONFIG=F:\Liwei\Tuxedo\dbread\tuxconfig
  ...

三、准备Tuxedo客户端,服务端程序代?/p>

  可以直接用Tuxedo本n带的例子QC:\bea\tuxedo9.0\samples\atmi\simpapp
  客户?simpcl.c
  服务?simpserv.c
 
四、准备编译客L(fng)服务端程?/p>

  q里最好是自已把各U编译命令写成批处理文g。在~译之前需要安装C语言~译器,我们
  通常使用VC++6.0Q安装时如果没有让VC讄环境变量Q在~译前需要手工运?
  E:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT
 
  注:(x)手工讄的变量在关闭命o(h)行环境就失效了。最好是复制到本地文件夹?br /> 
  bclt.bat文g内容
  F:
  cd F:\liwei\tuxedo\dbread
  buildclient -o simpcl -f simpcl.c -v
 
  bsrv.bat文g内容
  F:
  cd F:\liwei\tuxedo\dbread
  buildserver  -o simpserv -f simpserv.c -s TOUPPER -v
 
  start.bat文g内容   q文件主要作用是启动当前目录的命令环?br />  cd
  cmd
 
  ~译完成后会(x)在本地目录生成simpcl.exe和simpserv.exe。要惛_动服务,则需要配|?br />  ubbconfig了?br /> 
五、配|ubbconfig

  下面是一个完整的ubbconfig文gQ此文g要放在本地目录下。即与环境变量APPDIR保持
  一致。文件名随意Q这里用config文g名?/p>

#Liwei

*RESOURCES
IPCKEY    123456
DOMAINID liweiapp
MASTER  lw
MAXACCESSERS 3
MAXSERVERS 3
MAXSERVICES 3
MODEL  SHM
LDBAL  N

*MACHINES
LWYM
 LMID = lw
 TUXDIR = "C:\bea\tuxedo9.0"
 TUXCONFIG = "F:\Liwei\Tuxedo\dbread\tuxconfig"
 APPDIR = "F:\Liwei\Tuxedo\dbread"

*GROUPS
GROUP1 LMID=lw GRPNO = 1 OPENINFO=NONE
*SERVERS
DEFAULT:
  CLOPT="-A"
simpserv SRVGRP=GROUP1 SRVID=1
*SERVICES
TOUPPER

  每段详细的说明很复杂Q具体可以查看相兌料。这里只Ҏ(gu)较迷惑的地方说明下?br /> 
  *RESOURCES下MASTER名称LQ但要与*MACHINESQ?GROUPS里的LMID保持一致?br /> 
  *RESOURCES下如MAXACCESSERSQMAXSERVERSQMAXSERVICES{设|错误如1Q编译config后,
  在命令行q行tmbootQBBL是启动不h的,重新讄正确的值后Q再~译config,tmboot
  BBL也启动不h。原因是d理器残存tuxipcq个q程Q在~译config前,q掉它就
  没问题了?br /> 
  *MACHINES下面的服务器机器名必L大写。否则编译config?x)提CZ么non master的错误?br /> 
  *MACHINEScMTUXDIR的内容必M环境变量讄一致?br /> 
  *SERVERS中的simpserv名子必须是你服务端程序编译后的EXE文g名?br /> 
  *SERVICES的TOUPPER是你服务端程序编译时-s制定的服务名?br /> 
五、编译configQ运行tmboot启动服务
 
  讄完成。运?br /> 
  load.bat 文g内容
  F:
  cd F:\liwei\tuxedo\dbread
  tmloadcf -y config
 
  ~译config文g完成后,?x)在APPDIR下生成tuxconfig文g?br />  q行tmboot -y
  BBL服务启动成功Qsimpserv启动成功!
 
  q行tmadmin可以查看l护服务的状态等。运行simpcl.exe可以看C互过E了?img src ="http://www.tkk7.com/Vencent/aggbug/67697.html" width = "1" height = "1" />

Vincent Chen 2006-09-04 23:25 发表评论
]]>
Tuxedo8.1安装l结(转自dev2dev.bea在线Q?/title><link>http://www.tkk7.com/Vencent/articles/67698.html</link><dc:creator><font color='GREEN'>Vincent Chen</font></dc:creator><author><font color='GREEN'>Vincent Chen</font></author><pubDate>Mon, 04 Sep 2006 15:25:00 GMT</pubDate><guid>http://www.tkk7.com/Vencent/articles/67698.html</guid><wfw:comment>http://www.tkk7.com/Vencent/comments/67698.html</wfw:comment><comments>http://www.tkk7.com/Vencent/articles/67698.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Vencent/comments/commentRss/67698.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Vencent/services/trackbacks/67698.html</trackback:ping><description><![CDATA[Tuxedo8.1 + Windows2000 Server<br />看来安装Tuxedo出问题的不少啊!<br />   <br />我上ơ出问题后,来这儉K了,后来自己摆弄Q终于弄好了?br />现在也来介绍一下我的经验,愿大安走出初学者的阴媄Q早日成为像wsywin,qiupeng,damask一L(fng)高手Q?br />  <br />我这里把我的安装l历说一下?br />1Q安装准备:(x)<br />   安装前一定要注意Q如果想卸蝲掉原有版本,注意一定要停止当前行的Tuxedo版本Qƈ且程?〉管理工?〉服务中停止掉关?br /><br />Tuxedo的几个服务?br />   下蝲到Tuxedo8.1版本以及(qing)相应的Lic.txt文gQ这个可以在Bea的网站上下蝲QftQ好像白天下载快些,老外的嘛Q?br />   <br />2Q安装,选择路径D:\Bea(随便选择),选择Full安装模式Q一路点击OK?br />   Create tlisten Password, 不知道干什么的Q随便输入一个吧?br />   Would you like to configure LDAP for SSL Support? yes.她呢,以后问wsywin,damask 他们了,<br />   看资料也行,写得很详l。后面的LDAP Configuration配置不用她,q~省的吧?br />  <br />3Q选择好License文g的位|,安装到次l束?br />  <br />安装告一D落Q不q还早着呢,下面的配|直到运行一个简单的Simpapp很重要!<br /> <br />1,我们准备试D:\bea\tuxedo8.1\samples\atmi\simpapp下面的例子,所以我们把q里文g<br />  拯?例如: F:\SimpApp?br />  <br />2,配置环境变量Q?br />  我的?sh)?〉属?〉高U?〉环境变量,在Administator的用户变量中Q?br />  dQTUXDIR="D:\BEA\Tuxedo8.1"<br />        TUXCONFIG="F:\SimpApp\tuxconfig"<br />        PATH 后面加上"D:\BEA\Tuxedo8.1\bin"<br />        LD_LIBARARY_PATH=%TUXDIR%\lib<br /> <br />3,查ƈ~译客户E序<br />  q行cmd,到F:\SimpApp目录下, 输入buildclient -o simpcl -f simpcl.c<br /> <br />4,查ƈ~译服务E序<br />  q行cmdQ到F:\SimpApp目录?输入buildserver –o simpserv –f simpserv.c –s TOUPPER<br /> <br />5,~辑q加配置文g(q里有些ȝQ其实文件提C写得很清楚Q需要认真看Q改写的地方不多)<br /><br /># (c) 2003 BEA Systems, Inc. All Rights Reserved.<br />#ident "@(#) samples/atmi/simpapp/ubbsimple $Revision: 1.5 $"<br /><br />#Skeleton UBBCONFIG file for the TUXEDO Simple Application.<br />#Replace the <bracketed> items with the appropriate values.<br /><br />*RESOURCES<br />IPCKEY          123456  #q个地方被我改写<br /><br />#Example:<br />#IPCKEY 123456<br /><br />DOMAINID simpapp<br />MASTER          simple  <br />MAXACCESSERS 10<br />MAXSERVERS 5<br />MAXSERVICES 10<br />MODEL SHM<br />LDBAL N<br /><br />*MACHINES<br />DEFAULT:<br />                APPDIR="F:\SimpDir"                 #q个地方被我改写<br />                TUXCONFIG="F:\SimpApp\tuxconfig"    #q个地方被我改写<br />                TUXDIR="D:\bea\tuxedo8.1"           #q个地方被我改写  <br />#Example:<br /># APPDIR="/home/me/simpapp"<br /># TUXCONFIG="/home/me/simpapp/tuxconfig"<br /># TUXDIR="/usr/tuxedo"<br /><br />CNH LMID=simple      #q个地方被我改写      <br /><br />#Example:<br />#beatux LMID=simple<br /><br />*GROUPS<br />GROUP1<br />LMID=simple GRPNO=1 OPENINFO=NONE<br /><br />*SERVERS<br />DEFAULT:<br />CLOPT="-A"<br /><br />simpserv SRVGRP=GROUP1 SRVID=1<br /><br />*SERVICES<br />TOUPPER<br /><br />  <br />  ~辑好后Q?br />  tmloadcf ubbsimple     <br />  Initialize TUXCONFIG file: /usr/me/simpdir/tuxconfig [y, q] ? y<br /> <br />6,启动应用E序<br />  tmboot<br />   <br />7,执行q行时应用程?br />  simpcl “hello, world?br />  Returned string is: HELLO, WORLD<br />    <br />8,关闭应用E序<br />  tmshutdown<br /><br />参考文献:(x)<br />《Bea Tuxedo应用E序开发指南》经乾。网上可以下?br />  <br />E候我会(x)把Delphi开发客L(fng)的体?x)写出来Q用View方式.<br />我的QQ是:(x)77764686,Ƣ迎又诚意者探讨Tuxedo开发的问题.<br />此文被Tuxedoer?003/04/21 23:16:46修改!ULT:<br />                APPDIR="F:\SimpDir"                 #q个地方被我改写<br />                TUXCONFIG="F:\SimpApp\tuxconfig"    #q个地方被我改写<br />                TUXDIR="D:\bea\tuxedo8.1"           #q个地方被我改写  <br />#Example:<br /># APPDIR="/home/me/simpapp"<br /># TUXCONFIG="/home/me/simpapp/tuxconfig"<br /># TUXDIR="/usr/tuxedo"<br /><br />CNH LMID=simple      #q个地方被我改写      <br /><br />#Example:<br />#beatux LMID=simple<br /><br />*GROUPS<br />GROUP1<br />LMID=simple GRPNO=1 OPENINFO=NONE<br /><br />*SERVERS<br />DEFAULT:<br />CLOPT="-A"<br /><br />simpserv SRVGRP=GROUP1 SRVID=1<br /><br />*SERVICES<br />TOUPPER <br /><img src ="http://www.tkk7.com/Vencent/aggbug/67698.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2006-09-04 23:25 <a href="http://www.tkk7.com/Vencent/articles/67698.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TUXEDO多机模式的配|?/title><link>http://www.tkk7.com/Vencent/articles/67696.html</link><dc:creator><font color='GREEN'>Vincent Chen</font></dc:creator><author><font color='GREEN'>Vincent Chen</font></author><pubDate>Mon, 04 Sep 2006 15:24:00 GMT</pubDate><guid>http://www.tkk7.com/Vencent/articles/67696.html</guid><wfw:comment>http://www.tkk7.com/Vencent/comments/67696.html</wfw:comment><comments>http://www.tkk7.com/Vencent/articles/67696.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Vencent/comments/commentRss/67696.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Vencent/services/trackbacks/67696.html</trackback:ping><description><![CDATA[ <p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 36pt;"> <span lang="EN-US"> <font face="宋体">tuxedo多机方式配置有两个方?/font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt 10.5pt; text-indent: -10.5pt;"> <font face="宋体"> <span lang="EN-US">1.</span>启动<span lang="EN-US">tlisten</span></font> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 36pt;"> <span lang="EN-US"> <font face="宋体">tlisten在tuxedo启动时扮演控制者的角色,在非masterZ由tlisten启动bbl和应用服务器,tlisten的启动方法ؓ(f)</font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 36pt;"> <span lang="EN-US"> <font face="宋体">tlisten<span style="">   </span>-l //host:ipport<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 36pt;"> <font face="宋体">注意q里?span lang="EN-US">ipport必须和ubb文g中NETWORK域NLSADDR一?/span></font> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 36pt;"> <span lang="EN-US"> <font face="宋体">tlisten必须在所有的机器上启?启动后才能运行tmboot.操作pȝ启动时就q行tlisten.</font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt 10.5pt; text-indent: -10.5pt;"> <font face="宋体"> <span lang="EN-US">2.</span> <span lang="EN-US">ubb文g配置</span> </font> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 36pt;"> <font face="宋体">对于多机模式一般就是指单一<span lang="EN-US">domain理的多台机?所有机器上仅需要一个ubb文g,以下是ubb文g的模?/span></font> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">*RESOURCES<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">IPCKEY<span style="">      </span>80952<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">MAXACCESSERS<span style="">    </span>40<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">MAXSERVERS<span style="">  </span>35<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">MAXSERVICES<span style=""></span>75<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">MASTER<span style="">      </span>SITE1,SITE2<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">OPTIONS<span style=""></span>LAN,MIGRATE<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">MODEL<span style="">       </span>MP<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">*MACHINES<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"><SITE1's uname> LMID=SITE1<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">        </span>TUXDIR="<TUXDIR1>"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">        </span>APPDIR="<APPDIR1>"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">        </span>TUXCONFIG="<APPDIR1>/tuxconfig"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">        </span>TYPE="<machine type1>"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">        </span>ULOGPFX="<APPDIR1>/ULOG"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"><SITE2's uname><span style=""></span>LMID=SITE2<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">        </span>TUXDIR="<TUXDIR2>"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">        </span>APPDIR="<APPDIR2>"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">        </span>TLOGDEVICE="<APPDIR2>/TLOG"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">        </span>TLOGNAME=TLOG<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">        </span>TUXCONFIG="<APPDIR2>/tuxconfig"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">        </span>TYPE="<machine type2>"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">        </span>ULOGPFX="<APPDIR2>/ULOG"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">#<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">*GROUPS<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">*NETWORK<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">SITE1<span style="">   </span>NADDR="<network address of SITE1>"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">    </span>BRIDGE="<device of provider1>"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">    </span>NLSADDR="<network listener address of SITE1>"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">SITE2<span style="">   </span>NADDR="<network address of SITE2>"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">    </span>BRIDGE="<device of provider2>"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体"> <span style="">    </span>NLSADDR="<network listener address of SITE2>"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">*SERVERS<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">DEFAULT: RESTART=Y MAXGEN=5 REPLYQ=Y CLOPT="-A"<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">#<o:p></o:p></font> </span> </p> <p class="MsoPlainText" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font face="宋体">*SERVICES<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 10.5pt; text-indent: -10.5pt;"> <span lang="EN-US"> <font size="2">3.</font> <span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">   </span> </span> <span style="font-family: 宋体;"> <font size="2">理</font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 36pt;"> <font size="2"> <span style="font-family: 宋体;">只能?/span> <span lang="EN-US">master</span> <span style="font-family: 宋体;">Zq行</span> <span lang="EN-US">tmadmin</span> <span style="font-family: 宋体;">q行理。要获得l计信息?/span> <span lang="EN-US">tmadmin</span> <span style="font-family: 宋体;">中应q行</span> <span lang="EN-US">default –m</span> <span style="font-family: 宋体;">命o(h)?/span> </font> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 36pt;"> <span style="font-family: 宋体;"> <font size="2">例如Q?/font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 36pt;"> <span lang="EN-US"> <font size="2">tmadmin<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 36pt;"> <span lang="EN-US"> <font size="2">>default –m SITE1<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 36pt;"> <span lang="EN-US"> <font size="2">>printservice<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 36pt;"> <span lang="EN-US"> <font size="2"> <o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">Sample:<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">#ident<span style="">       </span>"@(#) samples/atmi/simpapp/ubbmp<span style="">        </span>$Revision: 1.2.8.1 $"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">*RESOURCES<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">IPCKEY<span style="">             </span>87654<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">MASTER<span style="">            </span>site1,site2<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">MAXACCESSERS<span style="">     </span>40<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">MAXSERVERS<span style=""></span>20<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">MAXSERVICES<span style="">         </span>40<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">UID<span style="">           </span>0<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">GID<span style="">           </span>0<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">MODEL<span style="">             </span>MP<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">OPTIONS<span style="">          </span>LAN,MIGRATE<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">*MACHINES<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">CHRIS<span style="">                </span>LMID=site1<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">                   </span>APPDIR="d:\tuxedo\samples\atmi\simpapp"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">                   </span>TUXCONFIG="d:\tuxedo\samples\atmi\simpapp\tuxconfig"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">#<span style="">                </span>TYPE="<Replace with the proper machine type for site1>"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">                   </span>TUXDIR="d:\tuxedo"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">chrislinux<span style="">          </span>LMID=site2<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">                   </span>APPDIR="/home/tuxedo/samples/atmi/simpapp"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">                   </span>TUXCONFIG="/home/tuxedo/samples/atmi/simpapp/tuxconfig"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">#<span style="">                </span>TYPE="<Replace with the proper machine type for site2>"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">                   </span>TUXDIR="/home/tuxedo"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">                   </span>UID=503<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">                   </span>GID=503<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">*GROUPS<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">GROUP1<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">         </span>LMID=site1<span style="">      </span>GRPNO=1<span style="">        </span>OPENINFO=NONE<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">GROUP2<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">         </span>LMID=site2<span style="">      </span>GRPNO=2<span style="">        </span>OPENINFO=NONE<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">*NETWORK<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">site1<span style=""></span>NADDR="http://10.10.10.10:6033"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">         </span>NLSADDR="http://10.10.10.10:6034"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">#<span style="">       </span>BRIDGE="<Replace with the network device or omit if there is none>"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">site2<span style=""></span>NADDR="http://10.10.10.11:6033"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">         </span>NLSADDR="http://10.10.10.11:6034"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">#<span style="">       </span>BRIDGE="<Replace with the network device or omit if there is none>"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">*SERVERS<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">DEFAULT:<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <span style="">                   </span>CLOPT="-A"<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">simpserv<span style="">   </span>SRVGRP=GROUP1 SRVID=3<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <o:p></o:p></font> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2">*SERVICES<o:p></o:p></font> </span> </p> <span lang="EN-US"> <font size="2">TOUPPER</font> </span> <img src ="http://www.tkk7.com/Vencent/aggbug/67696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2006-09-04 23:24 <a href="http://www.tkk7.com/Vencent/articles/67696.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tuxedo的配|管理简要说?/title><link>http://www.tkk7.com/Vencent/articles/67695.html</link><dc:creator><font color='GREEN'>Vincent Chen</font></dc:creator><author><font color='GREEN'>Vincent Chen</font></author><pubDate>Mon, 04 Sep 2006 15:23:00 GMT</pubDate><guid>http://www.tkk7.com/Vencent/articles/67695.html</guid><wfw:comment>http://www.tkk7.com/Vencent/comments/67695.html</wfw:comment><comments>http://www.tkk7.com/Vencent/articles/67695.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Vencent/comments/commentRss/67695.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Vencent/services/trackbacks/67695.html</trackback:ping><description><![CDATA[Tuxedo的配|管理简要说?<p><br />Tuxedo的配|管理简要说?<br />一、Tuxedo基本命o(h)2<br />二、UBB文g配置说明3<br />三、数据库XA讄7<br />3.1 ORACLE XA7<br />3.2 SYBASE XA8<br />3.3 INFORMIX XA8<br />四、Tuxedo多机方式配置要点9<br />4.1启动tlisten9<br />4.2 ubb文g配置9<br />4.3理11<br />五、用JOLTq接Tuxedo和W(xu)eblogic11<br />5.1在Tuxedo上安装、配|JOLT Server11<br />5.2 配置Weblogic Server 6.x12<br />5.3 Example setup13<br />六、TUXEDO动态配|?3<br />6.1  用tmadmin修改配置13<br />6.2  用tmconfig更改TUXCONFIGQUBBCONFIGQ?4<br /></p><p>一、Tuxedo基本命o(h) </p><p>#1.讄环境变量TUXDIR,APPDIR,TUXCONFIGQLANG(跟OS相关),LD_LIBRARY_PATH(跟OS相关)<br />#2.~译ubb文本生成二进刉|文Ӟ(x)tmloadcf –y ubbconfig<br />#3.所有机器上q行tlisten,具体见文中NETWORK一?br />#4.启动tmboot –y <br />#5.关闭tmshutdown –y<br />参数Q?<br />-A在所有机器上启动/关闭理的Serverq程<br />-M只在MASTER机器上启?关闭理的Serverq程<br />-isrvid  启动/关闭某个server id指定的Serverq程<br />-ggrpname启动/关闭某个server group名字指定的Server Group<br />-S启动/关闭所有应用服务器QLMIDQ?br />-sserver-name 启动/关闭某个server名字指定的Serverq程<br />-llmid option 在指定的机器上启?关闭所有TMSq程和应用服务器QLMIDQ?br />-Tgrpname 启动/关闭指定的server group中所有的TMSq程<br />-Blmid 在指定的机器上启?关闭BBLq程<br />-ecommand 指定一个程序可以当在MASTER机器上启动Q何一个进E失败时执行<br />-c计算出当前UBB配置的Tuxedo启动最要占用的系lIPC资源 </p><p>#用tmunloadcf > generated.ubb 可以得出目前配置得UBB文g所有得参数|没有讄的有~省|<br />#用tmloadcf –c或tmboot –c可以计算出当前UBB配置的Tuxedo启动最要占用的系lIPC资源?</p><p><br />二、UBB文g配置说明 </p><p>UBB配置文g分成*RESOURCES,*GROUP,*SERVER,*SERVICE,*NETWORK{若q节。DEFAULT表示该节中所有对象共有的~省属性?</p><p>*RESOURCES <br />#RESOUCES节提供整个系l的基本参数?</p><p>IPCKEY55555 Q?2767-262143Q?<br />#q行IPC通讯的key?br />DOMAINIDunicom  <br />#DOMAIN的ID?br />MASTERunicom1,unicom2<br />#指定DOMAIN中的理L为unicom1,q行q程中unicom1若出现问题,理L切换至unicom2<br />MAXACCESSERS  1000 <br />#q里该DC整个系l中单个机器上可以访问TUXEDO的最多的Client和Server的L(可以讉K BBL的最大进E数)Q应大于license用户?server敎ͼ副本应记入)。该字段?x)被MACHINE部分的MAXACCESSERS覆盖?br />#pȝ核心参数中SEMAPHORE的数?SEMMNS)要大于这里的MAXACCESSERS数目Q而ipc消息个数QMSGMAXQ应大于MAXACCESSERS?所有带REPLYQ的SERVER的个数?br />MAXSERVERS80  <br />#最大的server敎ͼ副本应记入)<br />MAXSERVICES200 <br />#最大的service敎ͼ多个server重复记入Q?br />MAXGTT20<br />#pȝ最多的q发的全局交易数目<br />MODELMP  <br />#表示cluster方式Q否则ؓ(f)SHM<br />OPTIONSLAN,MIGRATE  <br />#多机cluster方式时必L定ؓ(f)LAN方式QMIGRATE表示可以以组为单位进行机器间SERVER的迁UR?br />LDBALY  <br />#允许负蝲均衡 </p><p>SCANUNIT10<br />#SCANUNIT 是BBL在所有服务请求中定期扫描以寻找超时的交易和被d徯用和德间隔时_(d)U)。这个参数指定BBL扫描间隔旉的基本单位, 它会(x)影响在tpbegin中指定的交易时旉和用BLOCKTIME指定的请求阻塞超时时间的_E度。SANITYSCAN, BBLQUERY, DBBLWAIT, BLOCKTIME{参数都是SCANUNIT的倍数Q而不是实际秒数。而作为时间单位SCANUNIT必须?的倍数Qƈ且满?< SCANUNIT<60?</p><p>SANITYSCAN12<br />#SANITYSCAN的值指定在每个MACHINE上BBL自动所有进E的旉间隔Q以SCANUNIT为单元。缺省值满ISCANUNIT*SANITYSCANQ约?20U?</p><p>DBBLWAIT 2<br />#DBBLWAIT 的值指定DBBL扫描BBL时等待所有BBL应答的最大时_(d)以SCANUNIT为单元,卌qDBBLWAIT*SCANUNITQ秒Q就时。每一? DBBL请求{发给它的BBLӞBBL?x)在hq回l果之前先回复一个肯定的应答。这样可以定时检死掉或不正常的BBL。缺省值满? QSCANUNIT*DBBLWAITQ的值等于SCANUNIT?0U两者之间的最大者?</p><p>BBLQUERY30<br />#BBLQUERY指定DBBLҎ(gu)有BBLq行状态检查的旉间隔Q它也是以SCANUNIT单位。如果DBBL的状态询问没有回{,该BBLp‘隔Z了。缺省值满?SCANUNIT * BBLQUERY) Uؓ(f) 300U?</p><p>BLOCKTIME6<br />#BLOCKTIME指定在阻塞队列中的被dh的超时时?包括客户端从tpinit到tpterm的等待时?Q以SCANUNIT单位。缺省值满?SCANUNIT * BLOCKTIME) Uؓ(f)60U?</p><p>*MACHINES<br />DEFAULT:<br />#该部分对各主行描q?br />unicom2LMID=unicom2<br />APPDIR="/usr/tuxedo/apps/simpapp"<br />TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"<br />TUXDIR="/usr/tuxedo"<br />UID=17<br />GID=26<br />MAXACCESSERS=100<br />unicom1LMID=unicom1<br />APPDIR="/usr/tuxedo/apps/simpapp"<br />TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"<br />TUXDIR="/usr/tuxedo"<br />UID=17<br />GID=26<br />MAXWSCLIENTS=50 </p><p>#unicom2, unicom1为网l主机名用hostname获得?br />#LMIDQLogical Machines ID 为tuxedo对主机的内部逻辑命名?br />#APPDIR要求攄SERVER的可执行文g?br />#TUXCONFIG为全路径的二q制配置文gQ要求和环境变量TUXCONFIG相同。对于master机tuxconfig文g是由tmloadcf生成的,而非master机则是由tmboot启动后由tlisten从masterZ拯获得?br />#TUXDIR为tuxedo安装目录Q要求和环境变量TUXDIR相同?br />#MAXWSCLIENTS表示可连接client的最大个数?</p><p>*GROUPS<br />#GROUP1为组名,LMID表示该组q行的主机,GRPNO为组POPENINFOl通过XA打开RM(通常指数据库)的初始串?</p><p>GROUP1 LMID=unicom2GRPNO=1 OPENINFO=NONE<br />GROUP2  LMID=unicom3GRPNO=2 OPENINFO=NONE </p><p><br />*SERVERS<br />#q里描述应用服务器。SRVGRP的该SERVER所属组名,SRVID为服务器IDPMIN表示该服务器CLOPT提供q行的相兛_敎ͼ要求是?A -- ??可以在应用服务器的srvinit函数中获得这些参数?br />DEFAULT:<br />CLOPT="-A" </p><p>BillServer SRVGRP=GROUP1 SRVID=1 MIN=2 MAX=4<br />RQADDR=QNAME REPLYQ=Y<br />CLOPT="-A -o ./out.log –r -e ./err.log -- <br />-p [L][low_water][,[terminate_time]][:[high_water][,create_time]] <br />? 果MAX>1Qƈ且用了MSSQQRQADDRQ? RQPERMQ的Server可以配置-p来控制进E的增加和减。控制算法如下:(x)如果h队列中的h个数大于high_water 后超qcreate_time U?增加该服务的一个新q程Q?如果h队列中的h个数于low_water 后超qterminate_time U? 停止该服务的一个进E。low_water ~省是^均每个服务进E有一个请求消息或者workload 50Qhigh_water ~省是^均每个服务进E有两个h消息或者workload 100。create_time ~省最是50U? and terminate_time ~省最是60U?br />注意Q?br />使用TUXEDO的服务进E池Ӟ用户自己在程序中如果用alarmQ){系l调用来停止q程是不起作用的Q但也不?x)报错?br />   [L] 标记意味着增减服务q程Z负蝲而不是请求队列的长度。仅用于SHM模式下ƈ且LDBAL=YQ否则会(x)报错 (LIBTUX_CAT:1542) Q服务进E也不会(x)增减?<br /><br />WSLSRVGRP=GROUP2 SRVID=1<br />CLOPT="-A -- -n //130.36.0.103:8889 -m 3 -M 10 -x 10 -T 10"<br />#WSL 用于和client端进行连接?n 表示出接入点为IP:PORT方式Q?m –M 表示最和最大启动多个WSH和前端通讯Q?x则表CZ个WSH和几个client端连接?T 10表示如果client端和serverq接?0分钟内没有交易请求则关闭q接?</p><p>*SERVICES<br />#不要求将所有的service在这里描qͼ当某个service有特别参数时才在SERVICE节中说明?br />TOUPPER<br />LOAD=60  // 负蝲Q当LDBAL=Y时有?br />PRIO=80// 服务在请求队列中的优先<br />TRANSTIME=120 // 交易旉<br />SVCTIMEOUT=600// 服务时旉 </p><p>*NETWORK<br />#NETWORK节对多机之间如何q行|络q接q行描述?br />#cluster方式下要求先启动tlisten。事实上Q对于非master机启动应用服务器是由tlisten完成的?br />#tlisten的启动方式ؓ(f) <br />#unicom1: tlisten –l //130.36.1.101:8891<br />#unicom2: tlisten –l //130.36.0.102:8891<br />#NADDR指定|络q接的接入点?br />#NLSADDR则指定tlisten的接入点?br />#BRIDGE则指TCPq接所用的讑֤文g?</p><p>unicom2    <br />NADDR="http://130.36.0.102:8899"<br />NLSADDR="http://130.36.0.102:8891"<br />BRIDGE="/dev/streams/xtiso/tcp"<br />unicom1<br />NADDR="http://130.36.0.101:8899"<br />NLSADDR="http://130.36.0.101:8891"<br />BRIDGE="/dev/streams/xtiso/tcp" </p><p><br />分类ȝ </p><p>TypeParameters requiring tuning<br />IdentificationTUXCONFIG, UID, GID, IPCKEY, DOMAINID<br />ThresholdsMAXACCESSERS, MAXSERVERS, MAXSERVICES, MAXGTT, MAXCONV, MAXBUFSTYPE, MAXWSCLIENTS<br />Time-outsSCANUNIT, SANITYSCAN, DBBLWAIT, BBLQUERY, BLOCKTIME<br />AvailabilityMASTER, MIGRATE, RESTART, GRACE, MAXGEN, RCMD<br />MachineTYPE, CMPLIMIT, NETLOAD, SPINCOUNT, TLOGDEVICE, PERM<br />NetworkNADDR, NLSADDR<br />ServersCLOPT, ENVFILE<br />ServicesLOAD, PRIO, BUFTYPE, SVCTIMEOUT<br />WorkstationsWSNADDR, WSRPLYMAX<br /></p><p>三、数据库XA讄<br />3.1 ORACLE XA<br />1.在附件中提供了rm文g,另外q行oracle的demo文g获得要连接的所有lib库的名称.然后这些名U全部写在RM文g?<br />如:(x) #Oracle 8i for NT<br />Oracle_XA;xaosw;%ORACLE_HOME%\RDBMS\XA\ORAXA8.LIB %ORACLE_HOME%\PRECOMP\LIB\MSVC\ORASQL8.LIB %ORACLE_HOME%\PRECOMP\LIB\MSVC\ORASQX8.LIB %ORACLE_HOME%\OCI\LIB\MSVC\OCI.LIB %ORACLE_HOME%\OCI\LIB\MSVC\OCIW32.LIB<br />#Oracle 8i for Unix<br />Oracle_XA:xaosw:-L${ORACLE_HOME}/lib -lclntsh </p><p>2.ubb 文g?*GROUP节加?br /> TMSNAME=TMS_ORA<br /> TMSCOUNT=3  OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTM=120+LogDir=.+SqlNet=abcde"<br />? 体在Oracle联机文Application Development->oracle8 Application Development's Guild->Oracle XA->Defining the xa_open String中提供了解释 </p><p>3.在oracle用sys用户dsqlplusQ?br />a)q行${ORACLE_HOME}/rdbms/Admin/xaview.sql,<br />b)grant select on v$xatrans$ to public;<br />c)grant select on dba_pending_transactions to scott; <br />d)commit; </p><p>4.q行 buildtms -o $(TUXDIR)/bin/TMS_ORA -r Oracle_XA<br />5. 在tpsvrinit()中EXEC SQL CONNECT ...Ҏ(gu) tpopen(),  tpsrvdone()中EXEC SQL DISCONNECT...Ҏ(gu)tpclose(); 实际可拷?TUXDIR/apps/bankapp/appinit.c </p><p>6.需在ubb文g中MACHINE节指定TLOGDEVICE,TLOGSIZE<br />?TLOGDEVICE="/home/usr1/TLOGDEV"<br />  TLOGSIZE=500 </p><p>7.建立TLOG文g直接拯$TUXDIR/apps/bankapp/crtlog.sh.讑֮相关的环境变量后q行该shell文g. </p><p>8.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort. </p><p>3.2 SYBASE XA<br />1.在RM文g,q行sybase获得要连接的所有lib库的名称.然后这些名U全部写在RM文g?#Sybase_11 for NT<br />SYBASE_XA_SERVER;sybase_xa_switch;C:\SYBASE_SERVER\lib\libxasrvlib.lib </p><p>2.ubbconfig 文g中的 *GROUP?<br />TMS_NAME=TMS_SYB TMSCOUNT=3  OPENINFO=" SYBASE_XA_SERVER: -Uuserid1 -Ppassword1 -Nconnection2 -Lxa_log -Tall "<br />具体察看Sybase文当中xa_open String中提供了解释 </p><p>3.q行 buildtms -o $(TUXDIR)/bin/TMS_SYB -r SYBASE_XA_SERVER<br />4. 在tpsvrinit()中EXEC SQL CONNECT ...Ҏ(gu) tpopen, tpsrvdone()中EXEC SQL DISCONNECT...Ҏ(gu)tpclose(); 实际可查?TUXDIR/apps/bankapp/appinit.c<br />5.需在ubb文g中MACHINE节指定TLOGDEVICE,TLOGSIZE<br />?TLOGDEVICE="/home/usr1/TLOGDEV"<br />  TLOGSIZE=500<br />6.建立TLOG文g直接拯$TUXDIR/apps/bankapp/crtlog.sh.讑֮相关的环境变量后q行该shell文g.<br />7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort. </p><p><br />3.3 INFORMIX XA<br />1. q行esql -lib获得要连接的所有lib库的名称.然后这些名U全部加到RM文g中INFORMIX-OnLine:infx_xa_switch:$ {INFORMIXDIR}/lib/esql/libinfxxa.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixsql.a /usr/informix/lib/libixasf.a /usr/informix/lib/esql/libixos.a /usr/informix/lib/esql/libixgen.a /usr/informix/lib/esql/libixgls.a -lnsl_s -lm -lV3 -lcl -lsec /usr/informix/lib/esql/libixglx.a<br />2.ubbconfig 文g?br />*GROUP?TMS_NAME=TMS_INFO TMSCOUNT=3  OPENINFO="INFORMIX-OnLine:test_tux"<br />具体察看Sybase文当中xa_open String中提供了解释<br />3.q行 buildtms -o $(TUXDIR)/bin/TMS_INFO -r INFORMIX-OnLine<br />4. 在tpsvrinit()中EXEC SQL CONNECT ...Ҏ(gu) tpopen, tpsrvdone()中EXEC SQL DISCONNECT...Ҏ(gu)tpclose(); 实际可查?TUXDIR/apps/bankapp/appinit.c<br />5.需在ubb文g中MACHINE节指定TLOGDEVICE,TLOGSIZE<br />?TLOGDEVICE="/home/usr1/TLOGDEV"<br />  TLOGSIZE=500<br />6.建立TLOG文g直接拯$TUXDIR/apps/bankapp/crtlog.sh.讑֮相关的环境变量后q行该shell文g.<br />7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort. </p><p>四、Tuxedo多机方式配置要点<br />tuxedo多机方式配置有两个方?br />4.1启动tlisten<br />tlisten在tuxedo启动时扮演控制者的角色,在非masterZ由tlisten启动bbl和应用服务器,tlisten的启动方法ؓ(f)<br />tlisten   -l //hostip:ipport <br />1Q注意这里的ipport必须和ubb文g中NETWORK域的NLSADDR一?最好都用IP地址Q以避免双方对同一机器名解释出不同的IP地址?br />2Q?tlisten必须在所有的机器上启?启动后才能运行tmboot.操作pȝ启动时就q行tlisten.<br />3Q? 注意各个节点的tlisten都有PASSWORDQ存?APPDIR%\.adm\tlisten.pw文g下,如果那里没有Q就读TUXEDO? TUXDIR%\udataobj\tlisten.pw文g中的内容。各节点的tlisten password要保证绝对一P包括回RQ)。否则会(x)报错Q‘Security Violation’?br />4.2 ubb文g配置<br />对于多机模式一般就是指单一domain理的多台机?所有机器上仅需要一个ubb文g,以下是ubb文g的模?br />*RESOURCES<br />IPCKEY80952<br />MAXACCESSERS40<br />MAXSERVERS35<br />MAXSERVICES75<br />MASTERSITE1,SITE2<br />OPTIONSLAN,MIGRATE    // MIGRATE表示MASTER可以动态迁U?br />MODELMP// 多机模式<br />*MACHINES<br />"PATRICK"LMID="site1"<br />APPDIR="DQ?Bea/tuxedo/samples/atmi/simpapp"<br />TUXCONFIG="d:/Bea/tuxedo/samples/atmi/simpapp/tuxconfig"<br />TUXDIR=" d:/Bea /tuxedo"<br />UID=0<br />GID=0<br />TYPE="NT"<br />MAXWSCLIENTS=5<br />MAXACCESSERS=40 </p><p>"test60"LMID="site2"<br />APPDIR="/bea/tuxedo/samples/atmi/simpapp"<br />TUXCONFIG="/bea/tuxedo/samples/atmi/simpapp/tuxconfig"<br />TUXDIR="/bea/tuxedo"<br />UID=1002<br />GID=101<br />TYPE="Sun"<br />MAXWSCLIENTS=15<br />MAXACCESSERS=100 </p><p>*GROUPS<br />GROUP1 LMID=site1GRPNO=1OPENINFO=NONE<br />GROUP2 LMID=site2GRPNO=2OPENINFO=NONE </p><p>*SERVERS<br />DEFAULT:DEFAULT: RESTART=Y MAXGEN=5 REPLYQ=Y CLOPT="-A" </p><p>WSLSRVGRP=GROUP1 SRVID=20 CLOPT="-A -- -n //10.128.5.201:9009"<br />WSLSRVGRP=GROUP2 SRVID=10 CLOPT="-A -- -n //10.128.5.200:9009"<br />simpservSRVGRP=GROUP1 SRVID=3<br />simpservSRVGRP=GROUP2 SRVID=4 </p><p>*SERVICES </p><p>*NETWORK<br />site1NADDR="http://10.128.5.201:6044"<br />       NLSADDR="http://10.128.5.201:6045" </p><p>site2NADDR="http://10.128.5.200:6044"<br />NLSADDR="http://10.128.5.200:6045"<br />#  BRIDGE="/dev/tcp" </p><p>4.3理<br />只能在masterZq行tmadminq行理。要获得l计信息在tmadmin中应q行default –m命o(h)?br />$tmadmin<br />>default –m SITE1<br />>psr<br />>bbi </p><p>当MASTERL意外当机ӞTUXEDO仍可以正常运行,可以在backup的节点上手工做MASTER的动态迁U,在当前的backup节点?DBBL充当MASTER?br />$tmadmin<br />>m </p><p>Windows NT/2000下要注意的问题:(x)<br />1.׃NT机器上MAXACCESSORS受IPC的限刉常较小,因此在MACHINES部分单独讄MAXACCESSORS.<br />2.在MACHINES部分要单独设|UID=0和GID=0<br />3.和其他类型的CPU机器互连?在MACHINES部分一定要指定不同的TYPE.否则提Ctlisten版本不匹配?br />TUXEDO在SERVER和CLIENT之间q行数据交换~省q行数据译,但一个domain的server之间~省不进行数据翻?<br />5.有时LANG环境变量无法改变为C, 可以?%TUXDIR%\locale创徏文g?mkdir %LANG%.<br />6.RM文g使用中发现有效的RM后一定要有回?否则报RM不存? </p><p><br />五、用JOLTq接Tuxedo和W(xu)eblogic<br />5.1在Tuxedo上安装、配|JOLT Server<br />1 ?安装JOLT Server <br />2 -- set your environment<br /> set TUXDIR=d:\bea\tuxedo<br />set JOLTDIR=%TUXDIR%\udataobj\jolt<br /> set APPDIR=%TUXDIR%\samples\atmi\simpapp<br /> set PATH=%TUXDIR%\bin;%JOLTDIR%\bin;%APPDIR%;%PATH%<br /> set NLSPATH=%TUXDIR%\locale\C<br /> set TUXCONFIG=%APPDIR%\tuxconfig </p><p>3 ?added in UBBconfig file <br />JSLSRVGRP=GROUP1 SRVID=6 CLOPT="-A -- -n //10.128.5.112:9001"JREPSVRSRVGRP=GROUP1 SRVID=7 CLOPT="-A -- -W -P d:\Bea\tuxedo\udataobj\jolt\repository\jrepository"JREPSVRSRVGRP=GROUP1 SRVID=8 CLOPT="-A -- -P d:\Bea\tuxedo\udataobj\jolt\repository\jrepository" </p><p>5.2 配置Weblogic Server 6.x<br />1,Download the Jolt client package for WLS from developer.bea.com, unzip it and copy the jar file to %WL_HOME%\lib.  Then add the jar files into your Weblogic domain environment file:<br /> classpath=%classpath%;%WL_HOME%\lib\jolt.jar;%WL_HOME%\lib\joltweblogic.jar </p><p>2,Config Jolt pool manager startup class  in Weblogic <br /> a,start Weblogic and access the console <br /> b,create Startup class and Shutdown class<br />   in console:Deployments->Startup & Shutdown,right click<br />  select create a new StartUp class...:<br />     name:demojoltpoolStartup<br />    classname:bea.jolt.pool.servlet.weblogic.PoolManagerStartUp </p><p>3,Create a jolt pool<br /> in console:Services->Jolt,right click<br />    Select the panel:Configuration<br />    in TAB General<br />    name:demojoltpool<br />    Minimum Pool Size:1<br />    Maximum Pool Size:3<br />    Click the button "Create"<br />    in TAB address<br />       Primary Address://hostname:port<br />       Failover Address://hostname:port<br />    Click the button "Apply"<br />    Select Targets:<br />       in Listbox Available:<br />        select your server add into the listbox Chosen<br />    Click the button "Apply" </p><p>4. Restart your Weblogic </p><p>5.3 Example setup<br />1.Run %WL_HOME%\config\example\setExampleEnv.cmd, <br />2.compile the SimpAppServlet by:<br />javac -d %EX_WEBAPP_CLASSES% SimpAppServlet.java<br />3.Edit WL_HOME%\config\examples\applications\examplesWebApp\WEB-INF\web.xml<br />add the servlet description:<br /> <servlet>    <servlet-name>JoltServlet</servlet-name>    <servlet-class>examples.jolt.servlet.simpapp.SimpAppServlet</servlet-class>  </servlet>  <servlet-mapping><servlet-name>JoltServlet</servlet-name> <url-pattern>/joltservlet</url-pattern>  </servlet-mapping> </p><p>4.Edit a html and put it to %WL_HOME%\config\examples\applications\examplesWebApp<br />内容包含调用JoltServlet<br />Type some text here and click the Post button:<form name="simpapp" action="joltservlet" method="post"><input type="hidden" name="SVCNAME" value="TOUPPER"><input type="text" name="STRING"></td><input type="submit" value="Post!"></form> </p><p>5.Goto %WL_HOME%\config\example, start the examples domain, <br />6.Access http://localhost:7001/examplesWebApp/jolt.html </p><p><br />六、TUXEDO动态配|?br />TUXEDO 的动态配|可以通过tmadmin和tmconfig两个命o(h)行工具实C同别的配置修改。tmadmin的作用主要是监控TUXEDO的运行,可以? Ҏ(gu)务的参数Q而tmconfig功能更强大,可以在线修改当前TUXEDO的系lUBB配置Q即通过MIB修改用UBBCONFIG生成的二q制 TUXCONFIG在内存的拯?br />6.1  用tmadmin修改配置<br />q入tmadmin后用命o(h)help可以列出所有命令?</p><p>6.2  用tmconfig更改TUXCONFIGQUBBCONFIGQ?br />tmconfig工具实际上遍历TUXCONFIG的内容ƈ通过MIB API修改光|。要正确q行tmconfigQ徏议设|以下环境变量:(x)<br />TUXDIR=/usr/tuxedo<br />TUXCONFIG=/usr/app/tuxconfig<br />EDITOR=vi </p><p>主要的界面如下:(x) </p><p>  $ tmconfig<br />  Section: 1) RESOURCES, 2) MACHINES, 3) GROUPS 4) SERVERS<br />   5)SERVICES  6) NETWORK 7) ROUTING q) QUIT 9) WSL<br />   10) NETGROUPS 11) NETMAPS 12) INTERFACES [1]: </p><p>  Operation: 1) FIRST 2) NEXT 3) RETRIEVE 4) ADD 5) UPDATE<br />   6) CLEAR BUFFER 7) QUIT [1]:  4<br />  Enter editor to add/modify fields [n]? <br />  Perform operation [y]? </p><p><br />1. 用tmconfig增加C?</p><p>1.q入tmconfig后,选择2QMACHINES?br />2.然后可以先选择3QRETRIEVE看看当前的配|,~省是第一个MACHINE的配|?br />3.通过选择2QNEXT可以一直向后搜索MACHINE配置Q直到空记录为止?br />4.选择4QADD<br />  Enter editor to add/modify fields [n]? y <br />5.q入vi~辑状态,可以按照一定格式增加配|。格式ؓ(f)Q?br />MIB域名[tab]?br />6.增加MACHINE必须加入以下的域Q?br />oTA_TUXCONFIG<br />oTA_TUXDIR<br />oTA_APPDIR<br />oTA_TLOGDEVICE<br />oTA_TLOGSIZE<br />oTA_PMID<br />oTA_LMID<br />oTA_TYPE<br />例:(x)<br />TA_TUXCONFIG             /usr/apps/bank/tuxconfig<br />TA_TUXDIR                /usr/tuxroot<br />TA_APPDIR                /usr/apps/bank<br />TA_TLOGDEVICE            /usr/apps/bank/TLOG<br />TA_ULOGPFX               /usr/apps/bank/ULOG<br />TA_ENVFILE               /usr/apps/bank/ENVFILE<br />TA_TLOGSIZE              150<br />TA_PMID                  SERVER109<br />TA_LMID                  SITE1<br />TA_TYPE                  Sun<br />7.存盘退出viQ执行操作即可? <br />8.ȀzL增的MACHINEQ?重新选择2QMACHINES ?gt; 5)UPDATE<br />9.q入vi后查找TA_STATE,其gNEW改ؓ(f)ACTIVE<br />10.存盘退出viq执行操作?</p><p><br />2. 用tmconfig增加新Serverq程 </p><p>1.q入tmconfig后,选择2QSERVER?br />2.可以先选择3QRETRIEVE看看当前的配|,~省是第一个SERVER的配|?br />3.通过选择2QNEXT可以一直向后搜索SERVER配置Q直到空记录为止?br />4.选择4QADD<br />Enter editor to add/modify fields [n]? y <br />5.q入vi~辑状态,可以按照一定格式增加配|。格式ؓ(f)QMIB域名[tab]?br />6.增加MACHINE必须加入以下的域Q?br />oTA_SERVERNAME <br />oTA_SRVGRP  <br />oTA_SRVID  <br />例:(x)<br />TA_SERVERNAME          /usr/apps/bank/teller_server<br />TA_SRVGRP                GROUP1<br />TA_SRVID                  15<br />7Q存盘退出viQ执行操作即可?</p><p>七、系l核心参数参?br />Message Queues Parameters </p><p>·MSGMNI: Total Number of Queues (Use this formula: Add  MAXACCESSERS + (No. Servers with Reply Queues) - (No. Servers in MSSQ Set) + (No. MSSQ Sets) + 7) to determine the appropriate value<br />·MSGMAP: Number of entries in control map used to manage message segments (Not defined in NT). Set to 2 * MSGMNI<br />·MSGMAX:  Maximum message size in bytes.  Set to the largest message size or 75% of the queue size (whichever is bigger)<br />·MSGMNB:  This is the queue size itself (64K, 128K, etc.)<br />·MSGSSZ: Size of a segment in bytes (Not defined in NT). The value of MSGSSZ should be such that a multiple of  MSGSSZ is equal to the size (including the BEA TUXEDO System header) of the most commonly sent message.  Usually set to 16, 32, or 64.<br />·MSGTQL: Total Number of In-Flight messages in the system at once<br />·MSGSEG: Number of message segments in the system (Not defined in NT). You need to find out the queue space of your machine and then the following formula applies:  MSGSEG * MSGSSZ = Machine Queue Space Size (note it will swap)<br />Semaphores Parameters </p><p>·SEMMNS: Maximum number of semaphores in the system. The minimum requirement for SEMMNS is MAXACCESSERS - MAXWSCLIENTS + 13 (local clients and all servers)<br />·SEMMNI:  Maximum number of active semaphore sets.  For small apps,(100 to 500 servers),10 sets are usually sufficient.  For large apps, (>500 servers) 32-64 sets are usually sufficient (do a tmloadcf -c to see which is the best)<br />·SEMMSL: Maximum number of semaphores per semaphore sets (Not defined in NT).  Use the formula:  SEMMNS = SEMMNI * SEMMSL <br />·SEMMAP: Size of the control map used to control semaphore sets (Not defined in NT).  Set to SEMMNI<br />·SEMMNU: Number of undo structures in the system.  Set to SEMMNS<br />·SEMUME:  Maximum number of undo entries per undo structure (Not defined in NT).  Set to SEMMNS </p><p>Shared Memory Parameters </p><p>·SHMMAX: Maximum shared memory segment size in bytes. Bulletin Board Size (must be greater than 1,400,000). Largest BB today is approx. 5 MB (this parameter is normally set much higher for the database, so use their rules)<br />·SHMSEG: Maximum number of segments one process can attach to (for a busy  application you need to set this from 32-64)<br />·SHMMNI: Maximum number of shared memory identifiers in the system. Normally the default of 100 is acceptable (unless more than 100 entities plan on allocating shared memory)<br />·SHMMIN: Minimum shared memory segment size in bytes.  MUST be set to 1. </p><p>Other Tunables </p><p>·ULIMIT: Maximum file size. ULIMIT needs to be large enough so that you can install BEA TUXEDO and build servers. 4 megabytes recommended.<br />·MAXUP: Maximum number of processes per non-super user. The BEA     TUXEDO system processes--servers and administrative processes—run      with the UID specified in the application's UBBCONFIG file. MAXUP needs      to be large enough to allow all of these processes to run.<br />·NOFILES:  Maximum number of open files per process. A BEA TUXEDO server requires a minimum of four file descriptors.<br />·NPROC:  Maximum number of processes (systemwide).<br />·NREGION:  Number of region table entries to allocate. Most processes have three regions: text, data, and stack. Additional regions are needed for each shared memory segment and shared library (text and data) attached. However, the region table entry for the text of a ``shared text'' program is shared by all processes executing that program. Each shared memory segment attached to one or more processes uses another region table entry. <br />·NUMTIM: Maximum number of STREAMS modules that can be pushed by the Transport Layer Interface (TLI). A typical default value is 16; you should have it set to at least 256. <br />·NUMTRW: The number of TLI read/write structures to allocate in kernel data  space. A typical default value is 16; you should have it set to at least 256. </p><p><br />Tuxedopȝq_的调试参数及(qing)步骤<br />1Q配|MAXSERVERS、MAXSERVICES两个参数Q看是否满ubbfile文g的配|的服务数和服务参数的个数。Tmadmin——bbsQ看里面的参C数?br />2Q数据库的可以连接数的大是否满ubbfile文g里面同一个数据库q接得servers的数目。参照xa_NULL*.trc文g的错误提C?br />3Q用命o(h)tmloadcf –c ubbfile看tuxedo的进E所需要的׃n内存配置。然后修改系l的׃n内存的配|。除了AIXq_外,pȝ的共享内存参数——set shmsys:shminfo_shmmin要设|ؓ(f)1?br />4QTmunloadcf  看现在运行的TUXEDO环境?br />5QTmadmin——crdl  -b   -z  创徏日志文g?br />6QTUXEDO环境的设|顺序。Tuxconfig——tmadmin——TLOGQ?br /></p><hr /><p>-- 作者:(x) whiteclude<br />-- 发布旉Q?2002/07/27 05:53pm </p><p>TUXEDO与ORACLE数据库的互连 </p><p>(来源Qhttp://www.ccw.com.cn) </p>前言 <br />? 银行、电(sh)信、金融等行业的大型计机应用pȝ中,中间件的使用日益普及(qing)Q中间g已与操作pȝ、数据库q列Z大基软g。BEA Tuxedo作ؓ(f)最优秀的中间g产品Q在我国的很多行业中q泛使用Q本文通过一个简单的例子介绍如何在TUXEDO中访问ORACLE数据库?<br />? 两层的C/Sl构中,客户端直接访问数据库Q当采用TUXEDO中间件后QŞ成三层结构。这Ӟ客户端不直接讉K数据库,而是改ؓ(f)调用中间件TUXEDO 服务端上的服务,由TUXEDO服务端访问数据库Qƈ把结果返回给客户端。TUXEDO服务端可以和ORACLE在同一台服务器上,也可以在不同的机? 上,如果在不同的机器上,在TUXEDO的服务端所在的机器要安装一个ORACLE的客L(fng)?<br />TUXEDO服务端与ORACLE数据库连接有两种方式Q?<br />1、不通过XA接口直接互连。适用于整个系l只有一个数据库的情c(din)?<br />2、通过XA接口互连Q对整个pȝ有一个数据库或多个数据库都适用Q徏议采用,本文介绍q种互连的配|方法?<br />pȝ说明 <br />TUXEDO版本:7.1 安装目录 d:\tuxedo71 <br />ORACLE版本:8.1.5 安装目录 d:\ora81 <br />操作pȝQ?win2000 <br />配置的步?<br />一、ORACLE的的配置 <br />1Q用internal用户Q缺省的口o(h)是oracleQ进入SQLPLUS <br />C:\>sqlplus internal/oracle <br />2Q运行ORACLE的安装\径下?rdbms/admin/xaview.sql <br />SQL> @d:\ora81\rdbms\admin\xaview.sql <br />3Q授?<br />SQL>grant select on v$xatrans$ to public with grant option; <br />SQL>grant select on v$pending_xatrans$ to public with grant option; <br />4. 用system用户Q缺省的口o(h)是managerQ连接ƈ授权 <br />SQL>connect system/manager <br />SQL>grant select any table to public; <br />二、TUXEDO的配|?<br />1Q修改TUXEDO安装路径的udataobj目录下的RM文gQ把以Oracle_XA:xaosw:开头的一行用#注释掉,q加入一行:(x) <br />Oracle_XA;xaosw;d:\ora81\rdbms\xa\oraxa8.lib d:\ora81\precomp\lib\msvc\orasql8.lib <br />如果是在UNIX环境下,则ؓ(f)Q?<br />Oracle_XA:xaosw:-L${ORACLE_HOME}/lib -lclntsh <br />2. 在TUXEDO用户下创建TMS文g:TMS_ORA8iQTUXEDO通过TMS_ORA8i与ORACLE数据库采用XA协议q行通讯 <br />buildtms -o d:\tuxedo71\bin\TMS_ORA8i -r Oracle_XA <br /><br />注意:如果TUXEDO 服务端与ORACLE数据库不在同一台服务器上,可能?x)提C找不到 库文件oraxa8.lib和orasql8.libQ可到ORACLE数据库的服务端相应目录下把这两个文g拷到当前机器ORACLE的客L(fng)下的对应目录下?<br />3. 配置 UBBCONFIG <br />Q?Q在*MACHINES节中增加Q?<br />TLOGDEVICE = "/home/oracle/temp/simpdb/TLOG" <br />TLOGNAME=TLOG <br />TLOGSIZE=200 <br />Q?Q改*GROUPS节的配置为:(x)(scott/tiger为本数据库所采用的用户及(qing)口o(h)Q可Ҏ(gu)需要更? <br />*GROUPS <br />GROUP1 LMID=simple GRPNO=1 <br />OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=600+MaxCur=5+LogDir=." <br />TMSNAME="TMS_ORA8i" TMSCOUNT=2 <br />修改后的配置文gubb内容如下Q用tmloadcf -y ubb重新生成tuxconfig <br />IPCKEY 123456 <br />DOMAINID simpapp <br />MASTER simple <br />MAXACCESSERS 100 <br />MAXSERVERS 50 <br />MAXSERVICES 100 <br />MODEL SHM <br />LDBAL N <br /><br />*MACHINES <br />server LMID=simple <br />APPDIR="d:\test" <br />TUXCONFIG="d:\test\tuxconfig" <br />TUXDIR="d:\tux71" <br />TLOGDEVICE = "d:\test\TLOG" <br />TLOGNAME=TLOG <br />TLOGSIZE=100 <br />*GROUPS <br />GROUP1 LMID=simple GRPNO=1 <br />OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=600+MaxCur=5+LogDir=." <br />TMSNAME="TMS_ORA8i" TMSCOUNT=2 <br />*SERVERS <br />DEFAULT: <br />CLOPT="-A" <br />test SRVGRP=GROUP1 SRVID=1 <br />*SERVICES <br /><br />4.重命名下列文Ӟ因ؓ(f)下列文g名与ORACLE带的文g名有冲突Q所以要改名?<br />Q?QTUXEDO安装路径include目录下的下面文g <br />把sqlca.h 改名?sqlca.h.bbb <br />把sqlcode.h 改名?sqlcode.h.bbb <br />把sqlda.h 改名?sqlda.h.bbb <br />Q?Q重命名TUXEDO安装路径lib目录下的下面文g <br />把libsql.lib 改名?libsql.lib.bbb <br />5.用TMADMIN创徏TLOG文gQTUXEDO用一个文件TLOG记录Ҏ(gu)据库操作的日志。用于协调分布式数据库的提交与回滚?<br />D:\>tmadmin <br />>crdl -b 500 -z d:\test\TLOG <br />>crlog -m simple <br />>q <br /><br />三、服务端的程序:(x)test.pc <br />功能:Ҏ(gu)客户端传的EMPNO到表EMP中取ENAME的|q把它返回给客户?<br />#include <stdio.h> <br />#include <atmi.h> <br />#include <userlog.h> <br /><br />EXEC SQL INCLUDE sqlca; <br /><br />EXEC SQL BEGIN DECLARE SECTION; <br />long al_empno=0; <br />char ac_ename[11]=""; <br /><br />EXEC SQL VAR ac_ename IS STRING(11);  <br />EXEC SQL END DECLARE SECTION; <br /><br /><br />TEST(TPSVCINFO *rqst) <br />{ <br /><br />/*接收客户端来的数?/ <br />al_empno = (FBFR32 *)rqst->data; <br /><br />EXEC SQL select ename into :ac_ename from EMP where empno=:al_empno; <br />if(sqlca.sqlcode!=0) <br />{  <br />userlog("select from EMP failureQsqlcode=%ldQ?sqlerr=%s\n"Qsqlca.sqlcodeQ?char *)sqlca.sqlerrm.sqlerrmc); <br />strcpy(rqst->dataQsqlca.sqlerrm.sqlerrmc); <br />tpreturn( TPFAILQ?0Q?rqst->dataQ?0Q?0 ); <br />} <br />/*把取出的l果q回l客L(fng)*/ <br />strcpy(rqst->dataQac_ename); <br />tpreturn( TPSUCCESSQ?0Q?rqst->dataQ?0Q?0 ); <br />} <br />四、编写客L(fng)E序: testcli.c <br />功能:调用TUXEDO服务端的服务TESTQ取EMPNO=1000所对应的ENAME的|q显C出?<br />#include <stdio.h> <br />#include "atmi.h"  <br /><br />main(argcQ?argv) <br />{ <br />long reqlen=1024; <br />char *reqbuf; <br /><br />/* 与TUXEDO服务端徏立连?*/ <br />if (tpinit((TPINIT *) NULL) == -1) <br />{ <br />(void) fprintf(stderrQ?"Tpinit failed\n"); <br />exit(1); <br />} <br />/* 分配发送缓冲区*/ <br />reqbuf = (char *)tpalloc("STRING"QNULLQreqlen); <br />if ( reqbuf == (char *)NULL) <br />{ <br />printf("tpalloc failed\n"); <br />tpterm(); <br />} <br />strcpy(reqbufQ?1000"); <br />/*调用TUXEDO的服务TEST*/ <br />if (tpcall("TEST"Q?(char *)reqbufQ?0LQ?(char **)&reqbufQ?(long *)&reqlenQ?0< 0 ) <br />{ <br />printf("tpcall failedQtperrno=%ldQtperrtext=%s\n"QtperrnoQtpstrerror(tperrno)); <br />tpfree(reqbuf); <br />tpterm(); <br />exit(1); <br />} <br />printf("name=%s\n"Qreqbuf); <br />tpfree(reqbuf); <br />tpterm(); <br />return(0); <br />} <br />五、编译服务端E序 <br />1.用ORACLE的PROC把test.pc 文g预编译成test.c文g <br />d:\test> proc test.pc include=%TUXDIR%/include <br />2.用buildserver把test.c~译成可执行文gQ注?r 后带的Oracle_XA 与RM文g中的一致?<br />d:\test> buildserver -o simpserv -f simpserver.c -r Oracle_XA -s TEST <br />六、编译客L(fng)E序 <br />d:\test> buildclient -o testcli -f testcli.c <br />七、用 tmboot –y 启动TUXEDO <br />? 能看到所有的SERVER都启动成功。这Ӟ我们的服务端E序test ?x)自动与ORACLE数据库徏立连接,q一直保持这个连接,直到TUXEDOpȝ或ORACLE数据库关闭。所以在我们的程序test.pc中看不到与数 据库q接的语句,因ؓ(f)现在与数据库的连接由TUXEDO自动理。如果TMS_ORA8i启动p|?x)在当前目录生成一?.trc文gQ记录失败的原因Q? 同时TUXEDO的ULOG文g中也?x)有一些错误信息。可参考这些错误信息进行错误分析?<br />d:\test> tmboot -y <br />exec TMS_ORA8i-A : <br />process id=1072 ... Started. <br />exec TMS_ORA8i-A : <br />process id=528 ... Started. <br />exec test -A : <br />process id=876 ... Started. <br />八、运行客L(fng)E序 <br />q行后应能看到服务端q回的结果?<br />d:\test> testcli <br />name=bill <br />到此Q整个配|过E就大功告成了。ORACLE的其他版本的配置?qing)在其他操作pȝ上的配置基本与本文所q差不多Q差别主要在RM文g中所q的库文件可能会(x)不样?<img src ="http://www.tkk7.com/Vencent/aggbug/67695.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2006-09-04 23:23 <a href="http://www.tkk7.com/Vencent/articles/67695.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TUXEDO在文件传输中的应?/title><link>http://www.tkk7.com/Vencent/articles/67694.html</link><dc:creator><font color='GREEN'>Vincent Chen</font></dc:creator><author><font color='GREEN'>Vincent Chen</font></author><pubDate>Mon, 04 Sep 2006 15:16:00 GMT</pubDate><guid>http://www.tkk7.com/Vencent/articles/67694.html</guid><wfw:comment>http://www.tkk7.com/Vencent/comments/67694.html</wfw:comment><comments>http://www.tkk7.com/Vencent/articles/67694.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Vencent/comments/commentRss/67694.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Vencent/services/trackbacks/67694.html</trackback:ping><description><![CDATA[ <p>TUXEDO在文件传输中的应?/p> <p>1 引言 </p> <p>  q几q来Q以交易中间件ؓ(f)框架基础的三层客h/服务器模式已被广泛证实ؓ(f)建立开攑ּ关键业务应用pȝ的最佳环境?/p> <p>  TUXEDO是美国BEA公司的一U交易中间g产品Q它在银行、电(sh)信、邮ѝ金融证券等大规模关键事务处理领域中有着q泛的应用。它能够? C/S环境下整合各U异构^収ͼ通过联机事务处理机制Q保证交易的完整性和数据的一致性。BEA TUXEDO是在企业、Internet q样的分布式q算环境中开发和理三层l构的客?服务器型关键d应用pȝ的强有力工具?/p> <p>  BEA TUXEDO 采用三层l构的客h/服务器模式组件Y件模?该结构利用交易中间g应用的业务逻辑、表C逻辑和数据分Z个不同的处理层:(x)客户为第一表示逻辑层,? 现用户交互和数据表示Q第二层的逻辑业务层ؓ(f)应用的主体,负责业务的逻辑处理Q第三层数据层负责对数据库的索、读取和更新{操作。交易中间g作ؓ(f)构造三 层结构应用系l的基础q_Q提供了两个主要功能Q负责客h和服务器间的联接和通讯Q提供一个三层结构应用开发和q行的^台。由此可见,交易中间件提供了 一个基的框架去帮助你徏立、运行和理一个三层客h/服务器模式的应用Q你不需要从零做P大大~短了应用开发的旉Q提高了应用开发的成功率?/p> <p>  本文以应用TUXEDO的同步调用tpcall方式和FML~程方式ZQ介l了在Windows客户端和Unix服务器之间完成文件传输的? 法。客L(fng)调用VC++制作的传输文件的tuxedo动态链接库Q实现Windows客户端与Unix服务器端传输文gQ包括上传和下蝲文g两种方式Q的 实现Ҏ(gu)?/p> <p>2 客户端应用TUXEDO实现文g传输Ҏ(gu)</p> <p>  在客L(fng)Q首先设|客L(fng)与服务器端在文g传输中文件块的大、文件的块标识等基本信息Q将字节数比较大的文件分为很多小块,利用TUXEDO 的同步调用tpcall方式循环调用后台的文件处理服务,字节数较大的文件按着块的大小分多ơ传输到UNIX后台。下面以下蝲文gZ讲解使用 tuxedo同步调用tpcall方式完成文g传输的例子?/p> <p>  首先利用TUXEDO的tpalloc甌需要用的发送和接收~存Q用Fchg32函数在缓存中攑օ服务器端需要的域|(x)文g块的大小、文件的标识{基本信息?/p> <p>SndBuf = (FBFR32 *)tpalloc("FML32", NULL, 1024); /* 甌发送的~存 */<br />iRet = Fchg32(SndBuf,BLOCKSIZE,0,(char *)&lBlockSize,0); /* 讄文g块的大小 */<br />讄完毕后,开始用同步tpcall调用UNIX后台文g处理FTPSVR服务?<br />/* 客户端同步调用UNIXq_文g处理服务*/<br />iRet = tpcall("FTPSVR",(char *)SndBuf,0L,(char **)&RcvBuf,(long *)&len,0L);<br />iRet = Fget32(RcvBuf, FILELEN, 0, (char *)&lFileLen, 0);/* 接收文g长度*/<br />接收文gq将W一块数据写入文?br />iRet = Fget32(RcvBuf, FILEDATA, 0, pszFileBuf, (FLDLEN32 *)&lFileDataLen);<br />fp = fopen(pszCltFileName, "wb+"); /* 创徏文g*/<br />lBlkLen = fwrite(pszFileBuf,1,lFileDataLen,fp); /* 接收第一块数据写入文?/<br />同时计算需要调用下载文件服务的ơ数Q多ơ调用文件服务,后l文件下载到客户端?br />lBlkNum = (lFileLen -1)/lBlockSize +1 ;<br />for(i=2; i<lBlkNum+1;i++)?br />…?br />iRet = tpcall("FTPSVR",(char *)SndBuf,0L,(char **)&RcvBuf,(long *)&len,0L);<br />Fget32(RcvBuf, FILEDATA, 0, pszFileBuf, (FLDLEN32 *)&lBlockSize);<br />lBlkLen = fwrite(pszFileBuf, 1, lBlockSize, fp);<br />…?br />?/p> <p>3 UNIX服务器端实现Ҏ(gu)</p> <p>  在Unix服务器端Q接收客L(fng)发送过来的~存内容Q如Q文件块的大、文件块内容、文件块标识{。根据文件块的标识移动文件指针来写文Ӟ? ơ文件指针移动的大小由文件块的大决定,q将d的文件块的内Ҏ(gu)入输出缓存中Qƈq回l客L(fng)。Unix服务器端E序例子说明如下Q?/p> <p>FTPSVR(TPSVCINFO *rqst)<br />{<br />………?br />RcvBuf = (FBFR32 *)rqst->data; /*指向接收客户端的~存*/<br />iRet = Fget32(RcvBuf, BLOCKID, 0, (char *)&lBlockID, 0); /* 接收client发送的块标?/<br />fp = fopen(pszSvrFileName, "rb");  /* 打开文gQ准备读?/<br />(fseek(fp, (lBlockID-1)*lBlockSize, 0)!=0)  /* Ҏ(gu)块标识移动文件指?/<br />lReadLen=fread(pszFileBuf, 1, lBlockSize, fp);  /* d文g?/<br />Fchg32(SndBuf, FILEDATA, 0, pszFileBuf, (FLDLEN32 )lReadLen); /* 文件块的内Ҏ(gu)式放入tuxedo甌的缓存中*/<br />tpreturn(TPSUCCESS, 0, (char *)SndBuf, 0L, 0);  /* 输出缓存返回给客户?/<br />?</p> <p>4 WINDOWSq_文g传输的设?/p> <p>4.1 WINDOWS客户端动态链接库的实?/p> <p>  使用PowerBuilder、Delphi、VB{Y件不能直接调? C语言源代码,它们只能调用动态链接库文g。下面我们讲q如何用VC++6.0Windows客户端的文g传输的C、TUXEDO代码制作成动态链? 库供Power Builder、Delphi、VB{程序调用?br /> 使用VC++可以制作三种DLLQ分别是 <br /> (1)Non-MFC Dlls <br /> (2).Regular Dlls <br /> (3)Extension Dlls <br />  Non-MFC DLL:指的是不用MFC的类库结构,直接用C语言写的DLLQ其输出的函C般用的是标准C接口Qƈ能被非MFC或MFC~写的应用程序所调用。因为我们不使用MFCcdQ所以采用Non-MFC Dlls?</p> <p>  每一个DLL必须有一个入口点Q就象用C~写的应用程序,必须有一个main函数一? DllMain是一个缺省的函数入口?/p> <p>  创徏一个动态链接库Q选择File->New菜单Q弹出New对话框。在Projects标签下Q选择"Win32 Dynamic-Link Library"。Visual C++׃(x)创徏动态链接库所需的工E文件?br />创徏ftpfile.def文gQ这个文件记录了可被外部应用E序使用的DLL库函数名字。这些名字信息和对应的函C|的信息被~译q动态链接库文g中,然后应用E序Ҏ(gu)函数名字和函C|对照表来找到对应的函数。ftpfile.def内容如下Q?/p> <p>LIBRARY "ftpfile"<br />EXPORTS<br />ftpfile; /*与C代码中的函数名称相同*/<br />ftpfile.def? 源程序ftpfile.cpp、头文gpublic.h和ftpfld.h、tuxedo库文件wtuxws32.lib和libwsc.lib加入到工 E中。选择Project->add to projectQ?gt;files.然后开始编译动态链接库生成ftpfile.dll?br />代码样例如下Q?br />BOOL WINAPI DllMain( HMODULE hModule, DWORD dwReason, LPVOID lpvReserved )<br />/* 动态链接库函数入口*/<br />{<br />return TRUE;<br />}<br />LRESULT WINAPI ftpfile(char* CltFileName,char* SvrFileName,long lBlockSize,long lOptFlag) /* 动态链接库函数M*/<br />{<br />FBFR32 *RcvBuf,*SndBuf; /*变量声明*/<br />int iRet;<br />long i,lBlkLen,len,lFileLen,lBlkNum;<br />………?br />/* 动态链接库E序M*/<br />SndBuf = (FBFR32 *)tpalloc("FML32", NULL, MAXBUFLEN); /*甌发送缓?/<br />if (SndBuf == NULL)<br />{<br />userlog("tpalloc sndbuf error errno=[%d] err=[%s]",tpstrerror(tperrno));<br />tpterm();<br />return TPALLOCERR;<br />}<br />RcvBuf = (FBFR32 *)tpalloc("FML32", NULL, MAXBUFLEN);/*甌接收~存*/<br />iRet = Fchg32(SndBuf,BLOCKSIZE,0,(char *)&lBlockSize,0); /*把块大小攑օ发送缓?/<br />if (iRet <0){ /*错误处理*/<br />tpfree((char *)SndBuf);<br />tpfree((char *)RcvBuf);<br />tpterm();<br />return FCHGERR; <br />}<br />iRet = Fchg32(SndBuf,OPTFLAG,0,(char *)&lOptFlag,0);<br />…………………………?br />}/* E序Ml束*/</p> <p>4.2 WINDOWS客户端动态链接库的调?/p> <p>  以Power Builder7.0ZQ讲q如何在Power Builder中调用文件传输的客户端动态链接库?/p> <p>  首先Q在Power Builder声明该函敎ͼ声明如下Q?br />Function Integer ftpfile(string CltFileName,string SvrFileName,long lBlockSize,long lOptFlag) LIBRARY "ftpfile.dll"<br />然后Q在E序中就可以应用了。示例如下:(x)<br />string CltFileName<br />string SvrFileName<br />long lBlockSize<br />long lOptFlag /*讄文g上传或下载标?/<br />integer iRet</p> <p>CltFileName="..\data\report.txt"<br />SvrFileName="../up/form.txt"<br />LBlockSize=1024<br />LOptFlag=1<br />IRet = ftpfile(CltFileName,SvrFileName,lBlockSize,lOptFlag)<br />If (iret< 0){<br />messagebox('pȝ提示','调用ftpfile函数错误')<br />return <br />}</p> <p>5 l束?/p> <p>  本文通过分析TUXEDO交易中间件的同步调用TPCALL和FML~程方式Q描qC在Windows和UNIXq_之间如何完成文g传输的方法,概述了Windowsq_如何制作和调用动态链接库?/p> <img src ="http://www.tkk7.com/Vencent/aggbug/67694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2006-09-04 23:16 <a href="http://www.tkk7.com/Vencent/articles/67694.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TUXEDO函数说明http://www.tkk7.com/Vencent/articles/67691.html<font color='GREEN'>Vincent Chen</font><font color='GREEN'>Vincent Chen</font>Mon, 04 Sep 2006 15:01:00 GMThttp://www.tkk7.com/Vencent/articles/67691.htmlhttp://www.tkk7.com/Vencent/comments/67691.htmlhttp://www.tkk7.com/Vencent/articles/67691.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/67691.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/67691.html阅读全文

Vincent Chen 2006-09-04 23:01 发表评论
]]>
վ֩ģ壺 M ŷSSSS222| ĻƷƵ| ղϵ| ŮëƬƵ| ڵƵ| ƷСƵapp| ޸Ƶ| ޹Ʒһ | þùƷһ| ˬˬƵѿԿ| 30Ů˺ѹۿ| ˿appַios| ѸAëƬ߲| ޹Ʒѹۿ| ޵һƷӰ| ޹ۺרߵӰ| һAV| AVƬ| ŮоƷƵվ | ŮƵ| AVһ| þӰۺ| ޾Ʒa߹ۿ| vѹۿ| ƷƵ| ҹƵѹۿ| ߿Ƭ˳Ƶڵ| ձXXXѿ| պƵ| ƷһVR| þ޾Ʒ| պ尡Ƶ߹ۿ| ˾þAV| þùƷһ| þþѾƷre6| Ƶѹۿˬˬˬ| ƷרëƬ| պƷһƵ| Ʒ69׽߹ۿ| ˾Ƶ| ĻmvֻѸ|