﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-VincentChen‘s Blog-文章分类-BEA</title><link>http://www.blogjava.net/Vencent/category/14863.html</link><description>&lt;font color='orange'&gt;本博客仅为收集所用。在此对原作者表示感谢。&lt;/font&gt;
&lt;center&gt;
&lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;div class="custom"&gt;
&lt;script type="text/javascript"&gt;&lt;!--
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"];
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/div&gt;&lt;/center&gt;
&lt;!--bgsound src="http://www.blogjava.net/Files/Vencent/The%20Mass%20Era.zip" volume="10" loop="10"/--&gt;</description><language>zh-cn</language><lastBuildDate>Mon, 18 Jun 2007 21:46:55 GMT</lastBuildDate><pubDate>Mon, 18 Jun 2007 21:46:55 GMT</pubDate><ttl>60</ttl><item><title>整合weblogic cluster ＋ apache</title><link>http://www.blogjava.net/Vencent/articles/125027.html</link><dc:creator>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</dc:creator><author>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</author><pubDate>Mon, 18 Jun 2007 17:02:00 GMT</pubDate><guid>http://www.blogjava.net/Vencent/articles/125027.html</guid><wfw:comment>http://www.blogjava.net/Vencent/comments/125027.html</wfw:comment><comments>http://www.blogjava.net/Vencent/articles/125027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vencent/comments/commentRss/125027.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vencent/services/trackbacks/125027.html</trackback:ping><description><![CDATA[1. 在Weblogic安装目录中找到For Apache的Plug-ins<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 位于$WL_HOME/bin目录下，其中：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mod_wl128_20.so：用于Standard Apache Version 2.0.x（Regular Strength Encryption）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mod_wl_20.so：用于Standard Apache Version 2.0.x（128-bit Encryption）<br><br>2. 确认需要的Apache版本<br><br>3. 确认在Apache中支持Plug-ins<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 执行:$APACHE_HOME/bin/apache -l，如果没有列出来mod_so.c，则需要重新<br>Build。<br><br>4. 安装Apache HTTP Server Plug-In module<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将mod_wl_20.so复制到$APACHE_HOME/modules目录下；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 修改$APACHE_HOME/conf/httpd.conf配置文件，增加如下行：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LoadModule weblogic_module&nbsp;&nbsp;&nbsp;&nbsp; modules/mod_wl_20.so<br><br>5. 在httpd.conf中配置其它参数<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #800000;">IfModule&nbsp;</span><span style="color: #ff0000;">mod_weblogic.c</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WebLogicCluster&nbsp;localhost:90,localhost:91<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MatchExpression&nbsp;*.jsp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">IfModule</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Location&nbsp;</span><span style="color: #ff0000;">/weblogic</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetHandler&nbsp;weblogic-handler<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PathTrim&nbsp;/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Location</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">IfModule&nbsp;</span><span style="color: #ff0000;">mod_weblogic.c</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WebLogicCluster&nbsp;localhost:7003,localhost:7005,localhost:7007<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MatchExpression&nbsp;*<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">IfModule</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Location&nbsp;</span><span style="color: #ff0000;">/DizzyTixWeb</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetHandler&nbsp;weblogic-handler<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PathTrim&nbsp;/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Location</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Location&nbsp;</span><span style="color: #ff0000;">/DizzySupplies</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetHandler&nbsp;weblogic-handler<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PathTrim&nbsp;/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Location</span><span style="color: #0000ff;">&gt;</span></div>
<br>检查httpd.conf配置是否正确：APACHE_HOME\bin\Apache -t<br><br>6. 重启Weblogic Server<br>7. 启动Apache HTTP Server<br>8. 测试插件 http://localhost/weblogic/<br><br><br><img src ="http://www.blogjava.net/Vencent/aggbug/125027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2007-06-19 01:02 <a href="http://www.blogjava.net/Vencent/articles/125027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> [转帖] Windows下Tuxedo的安装与配置-无数据库</title><link>http://www.blogjava.net/Vencent/articles/123731.html</link><dc:creator>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</dc:creator><author>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</author><pubDate>Tue, 12 Jun 2007 14:34:00 GMT</pubDate><guid>http://www.blogjava.net/Vencent/articles/123731.html</guid><wfw:comment>http://www.blogjava.net/Vencent/comments/123731.html</wfw:comment><comments>http://www.blogjava.net/Vencent/articles/123731.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vencent/comments/commentRss/123731.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vencent/services/trackbacks/123731.html</trackback:ping><description><![CDATA[<span class="bright-message-list">一、安装前的文件准备<br><br>下载Tuxedo For Windows版本和License文件，本机采用的是Tuxedo9 windows版本。具体<br>Windows安装过程略。正常安装后Tuxedo会建一个tlisten的服务，且已自动启动。<br><br>本机Tuxedo安装路径 C:\bea\tuxedo9.0<br><br>二、Tuxedo安装完成后的环境变量配置<br>&nbsp; <br>&nbsp; [Win2000,XP]<br>&nbsp; <br>&nbsp; 右键我的电脑-&gt;属性-&gt;高级-&gt;环境变量，更改变量值。<br>&nbsp; <br>&nbsp; 在LIB项添加&nbsp;&nbsp;&nbsp;&nbsp; C:\bea\tuxedo9.0\lib<br>&nbsp; 在INCLUDE项添加 C:\bea\tuxedo9.0\include<br>&nbsp; 在PATH项添加&nbsp;&nbsp;&nbsp; C:\bea\tuxedo9.0\bin<br>&nbsp; <br>&nbsp; 添加下面两个新项<br>&nbsp; TUXDIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\bea\tuxedo9.0<br>&nbsp; WSNADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //192.168.98.166:4050&nbsp; Tuxedo服务器IP与端口<br>&nbsp; <br>&nbsp; 除此之外还需要指定Tuxedo应用服务的路径，如果你用C开发了一个Tuxedo服务，这个服务<br>&nbsp; 文件所在的路径。本机路径为F:\Liwei\Tuxedo\dbread。<br>&nbsp; <br>&nbsp; 根据机器实际情况添加<br>&nbsp; APPDIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F:\Liwei\Tuxedo\dbread<br>&nbsp; TUXCONFIG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F:\Liwei\Tuxedo\dbread\tuxconfig<br>&nbsp; <br>&nbsp; 注：环境变量更改后确定即生效。<br> <br>&nbsp; [Win98]<br>&nbsp; <br>&nbsp; 与2000,XP不同的是需要更改AUTOEXEC.BAT文件，加入以下命令。<br>&nbsp; 如SET TUXDIR=C:\bea\tuxedo9~1<br>&nbsp; <br>&nbsp; 注：AUTOEXEC.BAT有一个缺点，就是更改后需要重启机器才能生效，如果我们设一个环境<br>&nbsp; 变量文件（如TUXENV），那只要在文件里修改后存盘就能生效。在AUTOEXEC.BAT中长文件<br>&nbsp; 名必须用缩写。<br>&nbsp; <br>&nbsp; 例：<br>&nbsp; <br>&nbsp; SET TUXENV=C:\bea\tuxedo9~1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //TUXDEO环境变量文件<br><br>&nbsp; 在C:\bea\tuxedo9.0目录下创建TUXENV文件，在文件里加上<br>&nbsp; APPDIR=F:\Liwei\Tuxedo\dbread<br>&nbsp; TUXCONFIG=F:\Liwei\Tuxedo\dbread\tuxconfig<br>&nbsp; ...<br><br>三、准备Tuxedo客户端，服务端程序代码<br><br>&nbsp; 可以直接用Tuxedo本身带的例子：C:\bea\tuxedo9.0\samples\atmi\simpapp<br>&nbsp; 客户端 simpcl.c<br>&nbsp; 服务端 simpserv.c<br>&nbsp; <br>四、准备编译客户端服务端程序<br><br>&nbsp; 这里最好是自已把各种编译命令写成批处理文件。在编译之前需要安装C语言编译器，我们<br>&nbsp; 通常使用VC++6.0，安装时如果没有让VC设置环境变量，在编译前需要手工运行:<br>&nbsp; E:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT<br>&nbsp; <br>&nbsp; 注：手工设置的变量在关闭命令行环境就失效了。最好是复制到本地文件夹。<br>&nbsp; <br>&nbsp; bclt.bat文件内容<br>&nbsp; F:<br>&nbsp; cd F:\liwei\tuxedo\dbread<br>&nbsp; buildclient -o simpcl -f simpcl.c -v<br> <br>&nbsp; bsrv.bat文件内容<br>&nbsp; F:<br>&nbsp; cd F:\liwei\tuxedo\dbread<br>&nbsp; buildserver&nbsp; -o simpserv -f simpserv.c -s TOUPPER -v<br>&nbsp; <br>&nbsp; start.bat文件内容&nbsp;&nbsp; 这文件主要作用是启动当前目录的命令环境<br>&nbsp; cd<br>&nbsp; cmd<br>&nbsp; <br>&nbsp; 编译完成后会在本地目录生成simpcl.exe和simpserv.exe。要想启动服务，则需要配置<br>&nbsp; ubbconfig了。<br>&nbsp; <br>五、配置ubbconfig<br><br>&nbsp; 下面是一个完整的ubbconfig文件，此文件要放在本地目录下。即与环境变量APPDIR保持<br>&nbsp; 一致。文件名随意，这里使用config文件名。<br><br>#Liwei<br><br>*RESOURCES<br>IPCKEY&nbsp;&nbsp;&nbsp; 123456<br>DOMAINID liweiapp<br>MASTER&nbsp; lw<br>MAXACCESSERS 3<br>MAXSERVERS 3<br>MAXSERVICES 3<br>MODEL&nbsp; SHM<br>LDBAL&nbsp; N<br><br>*MACHINES<br>LWYM<br> LMID = lw <br> TUXDIR = "C:\bea\tuxedo9.0"<br> TUXCONFIG = "F:\Liwei\Tuxedo\dbread\tuxconfig"<br> APPDIR = "F:\Liwei\Tuxedo\dbread"<br><br>*GROUPS<br>GROUP1 LMID=lw GRPNO = 1 OPENINFO=NONE<br>*SERVERS<br>DEFAULT:<br>&nbsp; CLOPT="-A"<br>simpserv SRVGRP=GROUP1 SRVID=1<br>*SERVICES<br>TOUPPER<br><br>&nbsp; 每段详细的说明很复杂，具体可以查看相关资料。这里只对比较迷惑的地方说明下。<br>&nbsp; <br>&nbsp; *RESOURCES下MASTER名称任意，但要与*MACHINES，*GROUPS里的LMID保持一致。<br>&nbsp; <br>&nbsp; *RESOURCES下如MAXACCESSERS，MAXSERVERS，MAXSERVICES等设置错误如1，编译config后，<br>&nbsp; 在命令行运行tmboot，BBL是启动不起来的，重新设置正确的值后，再编译config,tmboot<br>&nbsp; BBL也启动不起来。原因是任务管理器残存tuxipc这个进程，在编译config前，干掉它就<br>&nbsp; 没问题了。<br>&nbsp; <br>&nbsp; *MACHINES下面的服务器机器名必须是大写。否则编译config会提示什么non master的错误。<br>&nbsp; <br>&nbsp; *MACHINES类似TUXDIR的内容必须与环境变量设置一致。<br>&nbsp; <br>&nbsp; *SERVERS中的simpserv名子必须是你服务端程序编译后的EXE文件名。<br>&nbsp; <br>&nbsp; *SERVICES的TOUPPER是你服务端程序编译时-s制定的服务名。<br>&nbsp; <br>五、编译config，运行tmboot启动服务<br>&nbsp; <br>&nbsp; 设置完成。运行<br>&nbsp; <br>&nbsp; load.bat 文件内容 <br>&nbsp; F:<br>&nbsp; cd F:\liwei\tuxedo\dbread<br>&nbsp; tmloadcf -y config<br>&nbsp; <br>&nbsp; 编译config文件完成后，会在APPDIR下生成tuxconfig文件。<br>&nbsp; 运行tmboot -y <br>&nbsp; BBL服务启动成功，simpserv启动成功!<br>&nbsp; <br>&nbsp; 运行tmadmin可以查看维护服务的状态等。运行simpcl.exe就可以看到交互过程了。</span><img src ="http://www.blogjava.net/Vencent/aggbug/123731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2007-06-12 22:34 <a href="http://www.blogjava.net/Vencent/articles/123731.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tuxedo学习笔记－UBBCONFIG</title><link>http://www.blogjava.net/Vencent/articles/67699.html</link><dc:creator>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</dc:creator><author>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</author><pubDate>Mon, 04 Sep 2006 15:26:00 GMT</pubDate><guid>http://www.blogjava.net/Vencent/articles/67699.html</guid><wfw:comment>http://www.blogjava.net/Vencent/comments/67699.html</wfw:comment><comments>http://www.blogjava.net/Vencent/articles/67699.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vencent/comments/commentRss/67699.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vencent/services/trackbacks/67699.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一个				Tuxedo				应用系统的所有资源都在一个文本文件中进行定义，该文件称为				UBBCONFIG				。在配置完成之后，				UBBCONFIG				被编译成一个二进制的文件				TUXCONFIG				。在				Tuxedo				系统启动时，从该文件中读取系统的配置信息。				UBBCONFIG				文件类似于...&nbsp;&nbsp;<a href='http://www.blogjava.net/Vencent/articles/67699.html'>阅读全文</a><img src ="http://www.blogjava.net/Vencent/aggbug/67699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2006-09-04 23:26 <a href="http://www.blogjava.net/Vencent/articles/67699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows下Tuxedo的安装与配置-无数据库</title><link>http://www.blogjava.net/Vencent/articles/67697.html</link><dc:creator>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</dc:creator><author>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</author><pubDate>Mon, 04 Sep 2006 15:25:00 GMT</pubDate><guid>http://www.blogjava.net/Vencent/articles/67697.html</guid><wfw:comment>http://www.blogjava.net/Vencent/comments/67697.html</wfw:comment><comments>http://www.blogjava.net/Vencent/articles/67697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vencent/comments/commentRss/67697.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vencent/services/trackbacks/67697.html</trackback:ping><description><![CDATA[
		<p>Windows下Tuxedo的安装与配置-无数据库</p>
		<p>草木瓜 2005-5-18</p>
		<p>一、安装前的文件准备</p>
		<p>下载Tuxedo For Windows版本和License文件，本机采用的是Tuxedo9 windows版本。具体<br />Windows安装过程略。正常安装后Tuxedo会建一个tlisten的服务，且已自动启动。</p>
		<p>本机Tuxedo安装路径 C:\bea\tuxedo9.0</p>
		<p>二、Tuxedo安装完成后的环境变量配置<br />  <br />  [Win2000,XP]<br />  <br />  右键我的电脑-&gt;属性-&gt;高级-&gt;环境变量，更改变量值。<br />  <br />  在LIB项添加     C:\bea\tuxedo9.0\lib<br />  在INCLUDE项添加 C:\bea\tuxedo9.0\include<br />  在PATH项添加    C:\bea\tuxedo9.0\bin<br />  <br />  添加下面两个新项<br />  TUXDIR          C:\bea\tuxedo9.0<br />  WSNADDR         //192.168.98.166:4050  Tuxedo服务器IP与端口<br />  <br />  除此之外还需要指定Tuxedo应用服务的路径，如果你用C开发了一个Tuxedo服务，这个服务<br />  文件所在的路径。本机路径为F:\Liwei\Tuxedo\dbread。<br />  <br />  根据机器实际情况添加<br />  APPDIR          F:\Liwei\Tuxedo\dbread<br />  TUXCONFIG       F:\Liwei\Tuxedo\dbread\tuxconfig<br />  <br />  注：环境变量更改后确定即生效。<br /> <br />  [Win98]<br />  <br />  与2000,XP不同的是需要更改AUTOEXEC.BAT文件，加入以下命令。<br />  如SET TUXDIR=C:\bea\tuxedo9~1<br />  <br />  注：AUTOEXEC.BAT有一个缺点，就是更改后需要重启机器才能生效，如果我们设一个环境<br />  变量文件（如TUXENV），那只要在文件里修改后存盘就能生效。在AUTOEXEC.BAT中长文件<br />  名必须用缩写。<br />  <br />  例：<br />  <br />  SET TUXENV=C:\bea\tuxedo9~1           //TUXDEO环境变量文件</p>
		<p>  在C:\bea\tuxedo9.0目录下创建TUXENV文件，在文件里加上<br />  APPDIR=F:\Liwei\Tuxedo\dbread<br />  TUXCONFIG=F:\Liwei\Tuxedo\dbread\tuxconfig<br />  ...</p>
		<p>三、准备Tuxedo客户端，服务端程序代码</p>
		<p>  可以直接用Tuxedo本身带的例子：C:\bea\tuxedo9.0\samples\atmi\simpapp<br />  客户端 simpcl.c<br />  服务端 simpserv.c<br />  <br />四、准备编译客户端服务端程序</p>
		<p>  这里最好是自已把各种编译命令写成批处理文件。在编译之前需要安装C语言编译器，我们<br />  通常使用VC++6.0，安装时如果没有让VC设置环境变量，在编译前需要手工运行:<br />  E:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT<br />  <br />  注：手工设置的变量在关闭命令行环境就失效了。最好是复制到本地文件夹。<br />  <br />  bclt.bat文件内容<br />  F:<br />  cd F:\liwei\tuxedo\dbread<br />  buildclient -o simpcl -f simpcl.c -v<br /> <br />  bsrv.bat文件内容<br />  F:<br />  cd F:\liwei\tuxedo\dbread<br />  buildserver  -o simpserv -f simpserv.c -s TOUPPER -v<br />  <br />  start.bat文件内容   这文件主要作用是启动当前目录的命令环境<br />  cd<br />  cmd<br />  <br />  编译完成后会在本地目录生成simpcl.exe和simpserv.exe。要想启动服务，则需要配置<br />  ubbconfig了。<br />  <br />五、配置ubbconfig</p>
		<p>  下面是一个完整的ubbconfig文件，此文件要放在本地目录下。即与环境变量APPDIR保持<br />  一致。文件名随意，这里使用config文件名。</p>
		<p>#Liwei</p>
		<p>*RESOURCES<br />IPCKEY    123456<br />DOMAINID liweiapp<br />MASTER  lw<br />MAXACCESSERS 3<br />MAXSERVERS 3<br />MAXSERVICES 3<br />MODEL  SHM<br />LDBAL  N</p>
		<p>*MACHINES<br />LWYM<br /> LMID = lw <br /> TUXDIR = "C:\bea\tuxedo9.0"<br /> TUXCONFIG = "F:\Liwei\Tuxedo\dbread\tuxconfig"<br /> APPDIR = "F:\Liwei\Tuxedo\dbread"</p>
		<p>*GROUPS<br />GROUP1 LMID=lw GRPNO = 1 OPENINFO=NONE<br />*SERVERS<br />DEFAULT:<br />  CLOPT="-A"<br />simpserv SRVGRP=GROUP1 SRVID=1<br />*SERVICES<br />TOUPPER</p>  每段详细的说明很复杂，具体可以查看相关资料。这里只对比较迷惑的地方说明下。<br />  <br />  *RESOURCES下MASTER名称任意，但要与*MACHINES，*GROUPS里的LMID保持一致。<br />  <br />  *RESOURCES下如MAXACCESSERS，MAXSERVERS，MAXSERVICES等设置错误如1，编译config后，<br />  在命令行运行tmboot，BBL是启动不起来的，重新设置正确的值后，再编译config,tmboot<br />  BBL也启动不起来。原因是任务管理器残存tuxipc这个进程，在编译config前，干掉它就<br />  没问题了。<br />  <br />  *MACHINES下面的服务器机器名必须是大写。否则编译config会提示什么non master的错误。<br />  <br />  *MACHINES类似TUXDIR的内容必须与环境变量设置一致。<br />  <br />  *SERVERS中的simpserv名子必须是你服务端程序编译后的EXE文件名。<br />  <br />  *SERVICES的TOUPPER是你服务端程序编译时-s制定的服务名。<br />  <br />五、编译config，运行tmboot启动服务<br />  <br />  设置完成。运行<br />  <br />  load.bat 文件内容 <br />  F:<br />  cd F:\liwei\tuxedo\dbread<br />  tmloadcf -y config<br />  <br />  编译config文件完成后，会在APPDIR下生成tuxconfig文件。<br />  运行tmboot -y <br />  BBL服务启动成功，simpserv启动成功!<br />  <br />  运行tmadmin可以查看维护服务的状态等。运行simpcl.exe就可以看到交互过程了。<img src ="http://www.blogjava.net/Vencent/aggbug/67697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2006-09-04 23:25 <a href="http://www.blogjava.net/Vencent/articles/67697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tuxedo8.1安装终结篇（转自dev2dev.bea在线）</title><link>http://www.blogjava.net/Vencent/articles/67698.html</link><dc:creator>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</dc:creator><author>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</author><pubDate>Mon, 04 Sep 2006 15:25:00 GMT</pubDate><guid>http://www.blogjava.net/Vencent/articles/67698.html</guid><wfw:comment>http://www.blogjava.net/Vencent/comments/67698.html</wfw:comment><comments>http://www.blogjava.net/Vencent/articles/67698.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vencent/comments/commentRss/67698.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vencent/services/trackbacks/67698.html</trackback:ping><description><![CDATA[Tuxedo8.1 + Windows2000 Server<br />看来安装Tuxedo出问题的人还不少啊！<br />   <br />我上次出问题后，来这儿问了，后来自己摆弄，终于弄好了。<br />现在也来介绍一下我的经验，愿大家都走出初学者的阴影，早日成为像wsywin,qiupeng,damask一样的高手！<br />  <br />我这里把我的安装经历说一下。<br />1，安装准备：<br />   安装前一定要注意，如果想卸载掉原有版本，就注意一定要停止当前行的Tuxedo版本，并且程序-〉管理工具-〉服务中停止掉关于<br /><br />Tuxedo的几个服务。<br />   下载到Tuxedo8.1版本以及相应的Lic.txt文件，这个可以在Bea的网站上下载（ft，好像白天下载快些，老外的嘛）。<br />   <br />2，安装，选择路径D:\Bea(随便选择),选择Full安装模式，一路点击OK。<br />   Create tlisten Password, 不知道干什么的，随便输入一个吧。<br />   Would you like to configure LDAP for SSL Support? yes.管她呢，以后问wsywin,damask 他们了，<br />   看资料也行，写得很详细。后面的LDAP Configuration配置不用管她,就用缺省的吧。<br />  <br />3，选择好License文件的位置，安装到次结束。<br />  <br />安装告一段落，不过还早着呢，下面的配置直到运行一个简单的Simpapp很重要！<br /> <br />1,我们准备测试D:\bea\tuxedo8.1\samples\atmi\simpapp下面的例子，所以我们把这里文件<br />  拷贝到,例如: F:\SimpApp。<br />  <br />2,配置环境变量：<br />  我的电脑-〉属性-〉高级-〉环境变量，在Administator的用户变量中：<br />  添加：TUXDIR="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,检查并编译客户程序<br />  运行cmd,到F:\SimpApp目录下， 输入buildclient -o simpcl -f simpcl.c<br /> <br />4,检查并编译服务程序<br />  运行cmd，到F:\SimpApp目录下,输入buildserver –o simpserv –f simpserv.c –s TOUPPER<br /> <br />5,编辑并加配置文件(这里有些麻烦，其实文件提示写得很清楚，需要认真看，改写的地方不多)<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 &lt;bracketed&gt; items with the appropriate values.<br /><br />*RESOURCES<br />IPCKEY          123456  #这个地方被我改写<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"                 #这个地方被我改写<br />                TUXCONFIG="F:\SimpApp\tuxconfig"    #这个地方被我改写<br />                TUXDIR="D:\bea\tuxedo8.1"           #这个地方被我改写  <br />#Example:<br /># APPDIR="/home/me/simpapp"<br /># TUXCONFIG="/home/me/simpapp/tuxconfig"<br /># TUXDIR="/usr/tuxedo"<br /><br />CNH LMID=simple      #这个地方被我改写      <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 />  编辑好后：<br />  tmloadcf ubbsimple     <br />  Initialize TUXCONFIG file: /usr/me/simpdir/tuxconfig [y, q] ? y<br /> <br />6,启动应用程序<br />  tmboot<br />   <br />7,执行运行时应用程序<br />  simpcl “hello, world”<br />  Returned string is: HELLO, WORLD<br />    <br />8,关闭应用程序<br />  tmshutdown<br /><br />参考文献：<br />《Bea Tuxedo应用程序开发指南》经乾。网上可以下载<br />  <br />稍候我将会把Delphi开发客户端的体会写出来，用View方式.<br />我的QQ是：77764686,欢迎又诚意者探讨Tuxedo开发的问题.<br />此文被Tuxedoer在2003/04/21 23:16:46修改!ULT:<br />                APPDIR="F:\SimpDir"                 #这个地方被我改写<br />                TUXCONFIG="F:\SimpApp\tuxconfig"    #这个地方被我改写<br />                TUXDIR="D:\bea\tuxedo8.1"           #这个地方被我改写  <br />#Example:<br /># APPDIR="/home/me/simpapp"<br /># TUXCONFIG="/home/me/simpapp/tuxconfig"<br /># TUXDIR="/usr/tuxedo"<br /><br />CNH LMID=simple      #这个地方被我改写      <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.blogjava.net/Vencent/aggbug/67698.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2006-09-04 23:25 <a href="http://www.blogjava.net/Vencent/articles/67698.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TUXEDO多机模式的配置</title><link>http://www.blogjava.net/Vencent/articles/67696.html</link><dc:creator>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</dc:creator><author>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</author><pubDate>Mon, 04 Sep 2006 15:24:00 GMT</pubDate><guid>http://www.blogjava.net/Vencent/articles/67696.html</guid><wfw:comment>http://www.blogjava.net/Vencent/comments/67696.html</wfw:comment><comments>http://www.blogjava.net/Vencent/articles/67696.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vencent/comments/commentRss/67696.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/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启动时扮演控制者的角色,在非master机上由tlisten启动bbl和应用服务器,tlisten的启动方法为</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="宋体">注意这里的<span lang="EN-US">ipport必须和ubb文件中NETWORK域NLSADDR一致</span></font>
		</p>
		<p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 36pt;">
				<span lang="EN-US">
						<font face="宋体">tlisten必须在所有的机器上启动,启动后才能运行tmboot.建议操作系统启动时就运行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文件配置</span>
				</font>
		</p>
		<p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 36pt;">
				<font face="宋体">对于多机模式一般就是指单一<span lang="EN-US">domain管理的多台机器,所有机器上仅需要一个ubb文件,以下是ubb文件的模板</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="宋体">&lt;SITE1's uname&gt; 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="&lt;TUXDIR1&gt;"<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="&lt;APPDIR1&gt;"<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="&lt;APPDIR1&gt;/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="&lt;machine type1&gt;"<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="&lt;APPDIR1&gt;/ULOG"<o:p></o:p></font>
				</span>
		</p>
		<p class="MsoPlainText" style="margin: 0cm 0cm 0pt;">
				<span lang="EN-US">
						<font face="宋体">&lt;SITE2's uname&gt;<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="&lt;TUXDIR2&gt;"<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="&lt;APPDIR2&gt;"<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="&lt;APPDIR2&gt;/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="&lt;APPDIR2&gt;/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="&lt;machine type2&gt;"<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="&lt;APPDIR2&gt;/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="&lt;network address of SITE1&gt;"<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="&lt;device of provider1&gt;"<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="&lt;network listener address of SITE1&gt;"<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="&lt;network address of SITE2&gt;"<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="&lt;device of provider2&gt;"<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="&lt;network listener address of SITE2&gt;"<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: 宋体;">机上运行</span>
						<span lang="EN-US">tmadmin</span>
						<span style="font-family: 宋体;">进行管理。要获得统计信息在</span>
						<span lang="EN-US">tmadmin</span>
						<span style="font-family: 宋体;">中应运行</span>
						<span lang="EN-US">default –m</span>
						<span style="font-family: 宋体;">命令。</span>
				</font>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 36pt;">
				<span style="font-family: 宋体;">
						<font size="2">例如：</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">&gt;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">&gt;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="&lt;Replace with the proper machine type for site1&gt;"<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="&lt;Replace with the proper machine type for site2&gt;"<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="//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="//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="&lt;Replace with the network device or omit if there is none&gt;"<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="//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="//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="&lt;Replace with the network device or omit if there is none&gt;"<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.blogjava.net/Vencent/aggbug/67696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2006-09-04 23:24 <a href="http://www.blogjava.net/Vencent/articles/67696.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tuxedo的配置管理简要说明</title><link>http://www.blogjava.net/Vencent/articles/67695.html</link><dc:creator>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</dc:creator><author>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</author><pubDate>Mon, 04 Sep 2006 15:23:00 GMT</pubDate><guid>http://www.blogjava.net/Vencent/articles/67695.html</guid><wfw:comment>http://www.blogjava.net/Vencent/comments/67695.html</wfw:comment><comments>http://www.blogjava.net/Vencent/articles/67695.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vencent/comments/commentRss/67695.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vencent/services/trackbacks/67695.html</trackback:ping><description><![CDATA[Tuxedo的配置管理简要说明 <p><br />Tuxedo的配置管理简要说明1<br />一、Tuxedo基本命令2<br />二、UBB文件配置说明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文件配置9<br />4.3管理11<br />五、用JOLT连接Tuxedo和Weblogic11<br />5.1在Tuxedo上安装、配置JOLT Server11<br />5.2 配置Weblogic Server 6.x12<br />5.3 Example setup13<br />六、TUXEDO动态配置13<br />6.1  用tmadmin修改配置13<br />6.2  用tmconfig更改TUXCONFIG（UBBCONFIG）14<br /></p><p>一、Tuxedo基本命令 </p><p>#1.设置环境变量TUXDIR,APPDIR,TUXCONFIG，LANG(跟OS相关),LD_LIBRARY_PATH(跟OS相关)<br />#2.编译ubb文本生成二进制配置文件：tmloadcf –y ubbconfig<br />#3.所有机器上运行tlisten,具体见文档中NETWORK一节<br />#4.启动tmboot –y <br />#5.关闭tmshutdown –y<br />参数： <br />-A在所有机器上启动/关闭管理的Server进程<br />-M只在MASTER机器上启动/关闭管理的Server进程<br />-isrvid  启动/关闭某个server id指定的Server进程<br />-ggrpname启动/关闭某个server group名字指定的Server Group<br />-S启动/关闭所有应用服务器（LMID）<br />-sserver-name 启动/关闭某个server名字指定的Server进程<br />-llmid option 在指定的机器上启动/关闭所有TMS进程和应用服务器（LMID）<br />-Tgrpname 启动/关闭指定的server group中所有的TMS进程<br />-Blmid 在指定的机器上启动/关闭BBL进程<br />-ecommand 指定一个程序可以当在MASTER机器上启动任何一个进程失败时执行<br />-c计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源 </p><p>#用tmunloadcf &gt; generated.ubb 可以得出目前配置得UBB文件所有得参数值（没有设置的有缺省值）<br />#用tmloadcf –c或tmboot –c可以计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源。 </p><p><br />二、UBB文件配置说明 </p><p>UBB配置文件分成*RESOURCES,*GROUP,*SERVER,*SERVICE,*NETWORK等若干节。DEFAULT表示该节中所有对象共有的缺省属性。 </p><p>*RESOURCES <br />#RESOUCES节提供整个系统的基本参数。 </p><p>IPCKEY55555 （32767-262143） <br />#进行IPC通讯的key值<br />DOMAINIDunicom  <br />#DOMAIN的ID值<br />MASTERunicom1,unicom2<br />#指定DOMAIN中的管理主机为unicom1,运行过程中unicom1若出现问题，管理主机切换至unicom2<br />MAXACCESSERS  1000 <br />#这里该值表示整个系统中单个机器上可以访问TUXEDO的最多的Client和Server的总数(可以访问 BBL的最大进程数)，应大于license用户数+server数（副本应记入）。该字段会被MACHINE部分的MAXACCESSERS覆盖。<br />#系统核心参数中SEMAPHORE的数目(SEMMNS)要大于这里的MAXACCESSERS数目，而ipc消息个数（MSGMAX）应大于MAXACCESSERS数+所有带REPLYQ的SERVER的个数。<br />MAXSERVERS80  <br />#最大的server数（副本应记入）<br />MAXSERVICES200 <br />#最大的service数（多个server重复记入）<br />MAXGTT20<br />#系统最多的并发的全局交易数目<br />MODELMP  <br />#表示cluster方式，否则为SHM<br />OPTIONSLAN,MIGRATE  <br />#多机cluster方式时必须指定为LAN方式，MIGRATE表示可以以组为单位进行机器间SERVER的迁移。<br />LDBALY  <br />#允许负载均衡 </p><p>SCANUNIT10<br />#SCANUNIT
是BBL在所有服务请求中定期扫描以寻找超时的交易和被阻塞德调用和德间隔时间（秒）。这个参数指定BBL扫描间隔时间的基本单位，
它会影响在tpbegin中指定的交易超时时间和用BLOCKTIME指定的请求阻塞超时时间的精确程度。SANITYSCAN, BBLQUERY,
DBBLWAIT,
BLOCKTIME等参数都是SCANUNIT的倍数，而不是实际秒数。而作为时间单位SCANUNIT必须是5的倍数，并且满足0&lt;
SCANUNIT&lt;60。 </p><p>SANITYSCAN12<br />#SANITYSCAN的值指定在每个MACHINE上BBL自动检测所有进程的时间间隔，以SCANUNIT为单元。缺省值满足（SCANUNIT*SANITYSCAN）约为120秒。 </p><p>DBBLWAIT 2<br />#DBBLWAIT
的值指定DBBL扫描BBL时等待所有BBL应答的最大时间，以SCANUNIT为单元，即超过DBBLWAIT*SCANUNIT（秒）就超时。每一次
DBBL将请求转发给它的BBL时，BBL会在请求返回结果之前先回复一个肯定的应答。这样可以定时检测死掉或不正常的BBL。缺省值满足
（SCANUNIT*DBBLWAIT）的值等于SCANUNIT和20秒两者之间的最大者。 </p><p>BBLQUERY30<br />#BBLQUERY指定DBBL对所有BBL进行状态检查的时间间隔，它也是以SCANUNIT为计算单位。如果DBBL的状态询问没有回答，该BBL就被‘隔离’了。缺省值满足(SCANUNIT * BBLQUERY) 约为 300秒。 </p><p>BLOCKTIME6<br />#BLOCKTIME指定在阻塞队列中的被阻塞请求的超时时间(包括客户端从tpinit到tpterm的等待时间)，以SCANUNIT为计算单位。缺省值满足(SCANUNIT * BLOCKTIME) 约为60秒。 </p><p>*MACHINES<br />DEFAULT:<br />#该部分对各主机进行描述。<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为网络主机名用hostname获得。<br />#LMID：Logical Machines ID 为tuxedo对主机的内部逻辑命名。<br />#APPDIR要求放置SERVER的可执行文件。<br />#TUXCONFIG为全路径的二进制配置文件，要求和环境变量TUXCONFIG相同。对于master机tuxconfig文件是由tmloadcf生成的，而非master机则是由tmboot启动后由tlisten从master机上拷贝获得。<br />#TUXDIR为tuxedo安装目录，要求和环境变量TUXDIR相同。<br />#MAXWSCLIENTS表示可连接client的最大个数。 </p><p>*GROUPS<br />#GROUP1为组名，LMID表示该组运行的主机，GRPNO为组号，OPENINFO为该组通过XA打开RM(通常指数据库)的初始串。 </p><p>GROUP1 LMID=unicom2GRPNO=1 OPENINFO=NONE<br />GROUP2  LMID=unicom3GRPNO=2 OPENINFO=NONE </p><p><br />*SERVERS<br />#这里描述应用服务器。SRVGRP的该SERVER所属组名，SRVID为服务器ID号，MIN表示该服务器CLOPT提供运行的相关参数，要求是”-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&gt;1，并且使用了MSSQ（RQADDR，
RQPERM）的Server可以配置-p来控制进程的增加和减少。控制算法如下：如果请求队列中的请求个数大于high_water
后超过create_time 秒,就增加该服务的一个新进程； 如果请求队列中的请求个数小于low_water
后超过terminate_time 秒, 就停止该服务的一个进程。low_water 缺省是平均每个服务进程有一个请求消息或者workload
50；high_water 缺省是平均每个服务进程有两个请求消息或者workload 100。create_time 缺省最小是50秒,
and terminate_time 缺省最小是60秒。<br />注意：<br />使用TUXEDO的服务进程池时，用户自己在程序中如果用alarm（）等系统调用来停止进程是不起作用的，但也不会报错。<br />   [L] 标记意味着增减服务进程基于负载而不是请求队列的长度。仅用于SHM模式下并且LDBAL=Y，否则会报错 (LIBTUX_CAT:1542) ，服务进程也不会增减。 <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方式，-m –M
表示最小和最大启动多少个WSH和前端通讯，-x则表示一个WSH和几个client端连接。-T
10表示如果client端和server连接后10分钟内没有交易请求则关闭连接。 </p><p>*SERVICES<br />#不要求将所有的service在这里描述，当某个service有特别参数时才在SERVICE节中说明。<br />TOUPPER<br />LOAD=60  // 负载，当LDBAL=Y时有用<br />PRIO=80// 服务在请求队列中的优先级<br />TRANSTIME=120 // 交易时间<br />SVCTIMEOUT=600// 服务超时时间 </p><p>*NETWORK<br />#NETWORK节对多机之间如何进行网络连接进行描述。<br />#cluster方式下要求先启动tlisten。事实上，对于非master机启动应用服务器是由tlisten完成的。<br />#tlisten的启动方式为 <br />#unicom1: tlisten –l //130.36.1.101:8891<br />#unicom2: tlisten –l //130.36.0.102:8891<br />#NADDR指定网络连接的接入点。<br />#NLSADDR则指定tlisten的接入点。<br />#BRIDGE则指TCP连接所用的设备文件。 </p><p>unicom2    <br />NADDR="//130.36.0.102:8899"<br />NLSADDR="//130.36.0.102:8891"<br />BRIDGE="/dev/streams/xtiso/tcp"<br />unicom1<br />NADDR="//130.36.0.101:8899"<br />NLSADDR="//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文件,另外建议运行oracle的demo文件获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中.<br />如： #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 文件中 *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-&gt;oracle8 Application
Development's Guild-&gt;Oracle XA-&gt;Defining the xa_open String中提供了解释
</p><p>3.在oracle用sys用户登录sqlplus，<br />a)运行${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.运行 buildtms -o $(TUXDIR)/bin/TMS_ORA -r Oracle_XA<br />5.
在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen(),  tpsrvdone()中EXEC SQL
DISCONNECT...改成tpclose(); 实际可拷贝$TUXDIR/apps/bankapp/appinit.c </p><p>6.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE<br />例:TLOGDEVICE="/home/usr1/TLOGDEV"<br />  TLOGSIZE=500 </p><p>7.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件. </p><p>8.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort. </p><p>3.2 SYBASE XA<br />1.在RM文件,运行sybase获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中:#Sybase_11 for NT<br />SYBASE_XA_SERVER;sybase_xa_switch;C:\SYBASE_SERVER\lib\libxasrvlib.lib </p><p>2.ubbconfig 文件中的 *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.运行 buildtms -o $(TUXDIR)/bin/TMS_SYB -r SYBASE_XA_SERVER<br />4.
在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL
DISCONNECT...改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c<br />5.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE<br />例:TLOGDEVICE="/home/usr1/TLOGDEV"<br />  TLOGSIZE=500<br />6.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.<br />7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort. </p><p><br />3.3 INFORMIX XA<br />1.
运行esql
-lib获得要连接的所有lib库的名称.然后将这些名称全部加到RM文件中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 文件中<br />*GROUP节 TMS_NAME=TMS_INFO TMSCOUNT=3  OPENINFO="INFORMIX-OnLine:test_tux"<br />具体察看Sybase文当中xa_open String中提供了解释<br />3.运行 buildtms -o $(TUXDIR)/bin/TMS_INFO -r INFORMIX-OnLine<br />4.
在tpsvrinit()中EXEC SQL CONNECT ...改成 tpopen, tpsrvdone()中EXEC SQL
DISCONNECT...改成tpclose(); 实际可查看$TUXDIR/apps/bankapp/appinit.c<br />5.需在ubb文件中MACHINE节指定TLOGDEVICE,TLOGSIZE<br />例:TLOGDEVICE="/home/usr1/TLOGDEV"<br />  TLOGSIZE=500<br />6.建立TLOG文件直接拷贝$TUXDIR/apps/bankapp/crtlog.sh.设定相关的环境变量后运行该shell文件.<br />7.启动事务用tpbegin(3,0),提交回滚用tpcommit/tpabort. </p><p>四、Tuxedo多机方式配置要点<br />tuxedo多机方式配置有两个方面<br />4.1启动tlisten<br />tlisten在tuxedo启动时扮演控制者的角色,在非master机上由tlisten启动bbl和应用服务器,tlisten的启动方法为<br />tlisten   -l //hostip:ipport <br />1．注意这里的ipport必须和ubb文件中NETWORK域的NLSADDR一致,最好都用IP地址，以避免双方对同一机器名解释出不同的IP地址。<br />2． tlisten必须在所有的机器上启动,启动后才能运行tmboot.建议操作系统启动时就运行tlisten.<br />3．
注意各个节点的tlisten都有PASSWORD，存在%APPDIR%\.adm\tlisten.pw文件下，如果那里没有，就读TUXEDO的%
TUXDIR%\udataobj\tlisten.pw文件中的内容。各节点的tlisten
password要保证绝对一样（包括回车！）。否则会报错：‘Security Violation’。<br />4.2 ubb文件配置<br />对于多机模式一般就是指单一domain管理的多台机器,所有机器上仅需要一个ubb文件,以下是ubb文件的模板<br />*RESOURCES<br />IPCKEY80952<br />MAXACCESSERS40<br />MAXSERVERS35<br />MAXSERVICES75<br />MASTERSITE1,SITE2<br />OPTIONSLAN,MIGRATE    // MIGRATE表示MASTER可以动态迁移<br />MODELMP// 多机模式<br />*MACHINES<br />"PATRICK"LMID="site1"<br />APPDIR="D：/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="//10.128.5.201:6044"<br />       NLSADDR="//10.128.5.201:6045" </p><p>site2NADDR="//10.128.5.200:6044"<br />NLSADDR="//10.128.5.200:6045"<br />#  BRIDGE="/dev/tcp" </p><p>4.3管理<br />只能在master机上运行tmadmin进行管理。要获得统计信息在tmadmin中应运行default –m命令。<br />$tmadmin<br />&gt;default –m SITE1<br />&gt;psr<br />&gt;bbi </p><p>当MASTER主机意外当机时，TUXEDO仍可以正常运行，可以在backup的节点上手工做MASTER的动态迁移，在当前的backup节点上 DBBL充当MASTER。<br />$tmadmin<br />&gt;m </p><p>Windows NT/2000下要注意的问题：<br />1.由于NT机器上MAXACCESSORS受IPC的限制通常较小,因此建议在MACHINES部分单独设置MAXACCESSORS.<br />2.在MACHINES部分要单独设置UID=0和GID=0<br />3.和其他类型的CPU机器互连时,在MACHINES部分一定要指定不同的TYPE.否则将提示tlisten版本不匹配。<br />TUXEDO在SERVER和CLIENT之间进行数据交换缺省进行数据翻译,但一个domain的server之间缺省不进行数据翻译!<br />5.有时LANG环境变量无法改变为C, 可以在 %TUXDIR%\locale创建文件夹 mkdir %LANG%.<br />6.RM文件使用中发现有效的RM后一定要有回车,否则将报RM不存在. </p><p><br />五、用JOLT连接Tuxedo和Weblogic<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-&gt;Startup &amp; 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-&gt;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 /> &lt;servlet&gt;
   &lt;servlet-name&gt;JoltServlet&lt;/servlet-name&gt;  
 &lt;servlet-class&gt;examples.jolt.servlet.simpapp.SimpAppServlet&lt;/servlet-class&gt;
 &lt;/servlet&gt;
 &lt;servlet-mapping&gt;&lt;servlet-name&gt;JoltServlet&lt;/servlet-name&gt;
&lt;url-pattern&gt;/joltservlet&lt;/url-pattern&gt;
 &lt;/servlet-mapping&gt; </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:&lt;form name="simpapp"
action="joltservlet" method="post"&gt;&lt;input type="hidden"
name="SVCNAME" value="TOUPPER"&gt;&lt;input type="text"
name="STRING"&gt;&lt;/td&gt;&lt;input type="submit"
value="Post!"&gt;&lt;/form&gt; </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两个命令行工具实现不同级别的配置修改。tmadmin的作用主要是监控TUXEDO的运行，可以修
改服务的参数；而tmconfig功能更强大，可以在线修改当前TUXEDO的系统UBB配置，即通过MIB修改用UBBCONFIG生成的二进制
TUXCONFIG在内存的拷贝。<br />6.1  用tmadmin修改配置<br />进入tmadmin后用命令help可以列出所有命令。 </p><p>6.2  用tmconfig更改TUXCONFIG（UBBCONFIG）<br />tmconfig工具实际上遍历TUXCONFIG的内容并通过MIB API修改其配置。要正确运行tmconfig，建议设置以下环境变量：<br />TUXDIR=/usr/tuxedo<br />TUXCONFIG=/usr/app/tuxconfig<br />EDITOR=vi </p><p>主要的界面如下： </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增加新主机 </p><p>1.进入tmconfig后，选择2）MACHINES项<br />2.然后可以先选择3）RETRIEVE看看当前的配置，缺省是第一个MACHINE的配置<br />3.通过选择2）NEXT可以一直向后搜索MACHINE配置，直到空记录为止。<br />4.选择4）ADD<br />  Enter editor to add/modify fields [n]? y <br />5.进入vi编辑状态，可以按照一定格式增加配置。格式为：<br />MIB域名[tab]值<br />6.增加MACHINE必须加入以下的域：<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 />例：<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.存盘退出vi，执行操作即可。  <br />8.激活新增的MACHINE： 重新选择2）MACHINES –&gt; 5)UPDATE<br />9.进入vi后查找TA_STATE,将其值从NEW改为ACTIVE<br />10.存盘退出vi并执行操作。 </p><p><br />2. 用tmconfig增加新Server进程 </p><p>1.进入tmconfig后，选择2）SERVER项<br />2.可以先选择3）RETRIEVE看看当前的配置，缺省是第一个SERVER的配置<br />3.通过选择2）NEXT可以一直向后搜索SERVER配置，直到空记录为止。<br />4.选择4）ADD<br />Enter editor to add/modify fields [n]? y <br />5.进入vi编辑状态，可以按照一定格式增加配置。格式为：MIB域名[tab]值<br />6.增加MACHINE必须加入以下的域：<br />oTA_SERVERNAME <br />oTA_SRVGRP  <br />oTA_SRVID  <br />例：<br />TA_SERVERNAME          /usr/apps/bank/teller_server<br />TA_SRVGRP                GROUP1<br />TA_SRVID                  15<br />7．存盘退出vi，执行操作即可。 </p><p>七、系统核心参数参考<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, (&gt;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 />Tuxedo系统平台的调试参数及步骤<br />1．配置MAXSERVERS、MAXSERVICES两个参数，看是否满足ubbfile文件的配置的服务数和服务参数的个数。Tmadmin——bbs，看里面的参数个数。<br />2．数据库的可以连接数的大小是否满足ubbfile文件里面同一个数据库连接得servers的数目。参照xa_NULL*.trc文件的错误提示。<br />3．用命令tmloadcf –c ubbfile看tuxedo的进程所需要的共享内存配置。然后修改系统的共享内存的配置。除了AIX平台外，系统的共享内存参数——set shmsys:shminfo_shmmin要设置为1。<br />4．Tmunloadcf  看现在运行的TUXEDO环境。<br />5．Tmadmin——crdl  -b   -z  创建日志文件。<br />6．TUXEDO环境的设置顺序。Tuxconfig——tmadmin——TLOG；<br /></p><hr /><p>-- 作者： whiteclude<br />-- 发布时间： 2002/07/27 05:53pm </p><p>TUXEDO与ORACLE数据库的互连 </p><p>(来源：http://www.ccw.com.cn) </p>前言 <br />在
银行、电信、金融等行业的大型计算机应用系统中，中间件的使用日益普及，中间件已与操作系统、数据库并列为三大基础软件。BEA
Tuxedo作为最优秀的中间件产品，在我国的很多行业中广泛使用，本文通过一个简单的例子介绍如何在TUXEDO中访问ORACLE数据库。 <br />在
两层的C/S结构中，客户端直接访问数据库，当采用TUXEDO中间件后，形成三层结构。这时，客户端不直接访问数据库，而是改为调用中间件TUXEDO
服务端上的服务，由TUXEDO服务端访问数据库，并把结果返回给客户端。TUXEDO服务端可以和ORACLE在同一台服务器上，也可以在不同的机器
上，如果在不同的机器上，在TUXEDO的服务端所在的机器要安装一个ORACLE的客户端。 <br />TUXEDO服务端与ORACLE数据库连接有两种方式： <br />1、不通过XA接口直接互连。适用于整个系统只有一个数据库的情况。 <br />2、通过XA接口互连，对整个系统有一个数据库或多个数据库都适用，建议采用，本文介绍这种互连的配置方法。 <br />系统说明 <br />TUXEDO版本:7.1 安装目录 d:\tuxedo71 <br />ORACLE版本:8.1.5 安装目录 d:\ora81 <br />操作系统： win2000 <br />配置的步骤 <br />一、ORACLE的的配置 <br />1．用internal用户（缺省的口令是oracle）进入SQLPLUS <br />C:\&gt;sqlplus internal/oracle <br />2．运行ORACLE的安装路径下的/rdbms/admin/xaview.sql <br />SQL&gt; @d:\ora81\rdbms\admin\xaview.sql <br />3．授权 <br />SQL&gt;grant select on v$xatrans$ to public with grant option; <br />SQL&gt;grant select on v$pending_xatrans$ to public with grant option; <br />4. 用system用户（缺省的口令是manager）连接并授权 <br />SQL&gt;connect system/manager <br />SQL&gt;grant select any table to public; <br />二、TUXEDO的配置 <br />1．修改TUXEDO安装路径的udataobj目录下的RM文件，把以Oracle_XA:xaosw:开头的一行用#注释掉，并加入一行： <br />Oracle_XA;xaosw;d:\ora81\rdbms\xa\oraxa8.lib d:\ora81\precomp\lib\msvc\orasql8.lib <br />如果是在UNIX环境下，则为： <br />Oracle_XA:xaosw:-L${ORACLE_HOME}/lib -lclntsh <br />2. 在TUXEDO用户下创建TMS文件:TMS_ORA8i，TUXEDO通过TMS_ORA8i与ORACLE数据库采用XA协议进行通讯 <br />buildtms -o d:\tuxedo71\bin\TMS_ORA8i -r Oracle_XA <br /><br />注意:如果TUXEDO 服务端与ORACLE数据库不在同一台服务器上，可能会提示找不到 库文件oraxa8.lib和orasql8.lib，可到ORACLE数据库的服务端相应目录下把这两个文件拷到当前机器ORACLE的客户端下的对应目录下。 <br />3. 配置 UBBCONFIG <br />（1）在*MACHINES节中增加： <br />TLOGDEVICE = "/home/oracle/temp/simpdb/TLOG" <br />TLOGNAME=TLOG <br />TLOGSIZE=200 <br />（2）改*GROUPS节的配置为：(scott/tiger为本数据库所采用的用户及口令，可根据需要更改) <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 />修改后的配置文件ubb内容如下，用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.重命名下列文件，因为下列文件名与ORACLE带的文件名有冲突，所以要改名。 <br />（1）TUXEDO安装路径include目录下的下面文件 <br />把sqlca.h 改名为 sqlca.h.bbb <br />把sqlcode.h 改名为 sqlcode.h.bbb <br />把sqlda.h 改名为 sqlda.h.bbb <br />（2）重命名TUXEDO安装路径lib目录下的下面文件 <br />把libsql.lib 改名为 libsql.lib.bbb <br />5.用TMADMIN创建TLOG文件，TUXEDO用一个文件TLOG记录对数据库操作的日志。用于协调分布式数据库的提交与回滚。 <br />D:\&gt;tmadmin <br />&gt;crdl -b 500 -z d:\test\TLOG <br />&gt;crlog -m simple <br />&gt;q <br /><br />三、服务端的程序：test.pc <br />功能:根据客户端传的EMPNO到表EMP中取ENAME的值，并把它返回给客户端 <br />#include &lt;stdio.h&gt; <br />#include &lt;atmi.h&gt; <br />#include &lt;userlog.h&gt; <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-&gt;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 failure，sqlcode=%ld， sqlerr=%s\n"，sqlca.sqlcode，(char *)sqlca.sqlerrm.sqlerrmc); <br />strcpy(rqst-&gt;data，sqlca.sqlerrm.sqlerrmc); <br />tpreturn( TPFAIL， 0， rqst-&gt;data， 0， 0 ); <br />} <br />/*把取出的结果返回给客户端*/ <br />strcpy(rqst-&gt;data，ac_ename); <br />tpreturn( TPSUCCESS， 0， rqst-&gt;data， 0， 0 ); <br />} <br />四、编写客户端程序: testcli.c <br />功能:调用TUXEDO服务端的服务TEST，取EMPNO=1000所对应的ENAME的值，并显示出来 <br />#include &lt;stdio.h&gt; <br />#include "atmi.h"  <br /><br />main(argc， argv) <br />{ <br />long reqlen=1024; <br />char *reqbuf; <br /><br />/* 与TUXEDO服务端建立连接 */ <br />if (tpinit((TPINIT *) NULL) == -1) <br />{ <br />(void) fprintf(stderr， "Tpinit failed\n"); <br />exit(1); <br />} <br />/* 分配发送缓冲区*/ <br />reqbuf = (char *)tpalloc("STRING"，NULL，reqlen); <br />if ( reqbuf == (char *)NULL) <br />{ <br />printf("tpalloc failed\n"); <br />tpterm(); <br />} <br />strcpy(reqbuf，"1000"); <br />/*调用TUXEDO的服务TEST*/ <br />if (tpcall("TEST"， (char *)reqbuf， 0L， (char **)&amp;reqbuf， (long *)&amp;reqlen， 0&lt; 0 ) <br />{ <br />printf("tpcall failed，tperrno=%ld，tperrtext=%s\n"，tperrno，tpstrerror(tperrno)); <br />tpfree(reqbuf); <br />tpterm(); <br />exit(1); <br />} <br />printf("name=%s\n"，reqbuf); <br />tpfree(reqbuf); <br />tpterm(); <br />return(0); <br />} <br />五、编译服务端程序 <br />1.用ORACLE的PROC把test.pc 文件预编译成test.c文件 <br />d:\test&gt; proc test.pc include=%TUXDIR%/include <br />2.用buildserver把test.c编译成可执行文件，注意-r 后带的Oracle_XA 与RM文件中的一致。 <br />d:\test&gt; buildserver -o simpserv -f simpserver.c -r Oracle_XA -s TEST <br />六、编译客户端程序 <br />d:\test&gt; buildclient -o testcli -f testcli.c <br />七、用 tmboot –y 启动TUXEDO <br />应
能看到所有的SERVER都启动成功。这时，我们的服务端程序test
会自动与ORACLE数据库建立连接，并一直保持这个连接，直到TUXEDO系统或ORACLE数据库关闭。所以在我们的程序test.pc中看不到与数
据库连接的语句，因为现在与数据库的连接由TUXEDO自动管理。如果TMS_ORA8i启动失败会在当前目录生成一个*.trc文件，记录失败的原因，
同时TUXEDO的ULOG文件中也会有一些错误信息。可参考这些错误信息进行错误分析。 <br />d:\test&gt; 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 />八、运行客户端程序 <br />运行后应能看到服务端返回的结果。 <br />d:\test&gt; testcli <br />name=bill <br />到此，整个配置过程就大功告成了。ORACLE的其他版本的配置及在其他操作系统上的配置基本与本文所述差不多，差别主要在RM文件中所连的库文件可能会不样。 <img src ="http://www.blogjava.net/Vencent/aggbug/67695.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2006-09-04 23:23 <a href="http://www.blogjava.net/Vencent/articles/67695.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TUXEDO在文件传输中的应用</title><link>http://www.blogjava.net/Vencent/articles/67694.html</link><dc:creator>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</dc:creator><author>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</author><pubDate>Mon, 04 Sep 2006 15:16:00 GMT</pubDate><guid>http://www.blogjava.net/Vencent/articles/67694.html</guid><wfw:comment>http://www.blogjava.net/Vencent/comments/67694.html</wfw:comment><comments>http://www.blogjava.net/Vencent/articles/67694.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vencent/comments/commentRss/67694.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vencent/services/trackbacks/67694.html</trackback:ping><description><![CDATA[
		<p>TUXEDO在文件传输中的应用</p>
		<p>1 引言 </p>
		<p>　　近几年来，以交易中间件为框架基础的三层客户机/服务器模式已被广泛证实为建立开放式关键业务应用系统的最佳环境。</p>
		<p>　　TUXEDO是美国BEA公司的一种交易中间件产品，它在银行、电信、邮政、金融证券等大规模关键事务处理领域中有着广泛的应用。它能够在
C/S环境下整合各种异构平台，通过联机事务处理机制，保证交易的完整性和数据的一致性。BEA TUXEDO是在企业、Internet
这样的分布式运算环境中开发和管理三层结构的客户/服务器型关键任务应用系统的强有力工具。</p>
		<p>　　BEA TUXEDO
采用三层结构的客户机/服务器模式组件软件模型,该结构利用交易中间件将应用的业务逻辑、表示逻辑和数据分为三个不同的处理层：客户为第一表示逻辑层，实
现用户交互和数据表示，第二层的逻辑业务层为应用的主体，负责业务的逻辑处理，第三层数据层负责对数据库的检索、读取和更新等操作。交易中间件作为构造三
层结构应用系统的基础平台，提供了两个主要功能：负责客户机和服务器间的联接和通讯；提供一个三层结构应用开发和运行的平台。由此可见，交易中间件提供了
一个基础的框架去帮助你建立、运行和管理一个三层客户机/服务器模式的应用，使你不需要从零做起，大大缩短了应用开发的时间，提高了应用开发的成功率。</p>
		<p>　　本文以应用TUXEDO的同步调用tpcall方式和FML编程方式为例，介绍了在Windows客户端和Unix服务器之间完成文件传输的方
法。客户端调用VC++制作的传输文件的tuxedo动态链接库，实现Windows客户端与Unix服务器端传输文件（包括上传和下载文件两种方式）的
实现方法。</p>
		<p>2 客户端应用TUXEDO实现文件传输方法</p>
		<p>　　在客户端，首先设置客户端与服务器端在文件传输中文件块的大小、文件的块标识等基本信息，将字节数比较大的文件分为很多小块，利用TUXEDO
的同步调用tpcall方式循环调用后台的文件处理服务，将字节数较大的文件按着块的大小分多次传输到UNIX后台。下面以下载文件为例讲解使用
tuxedo同步调用tpcall方式完成文件传输的例子。</p>
		<p>　　首先利用TUXEDO的tpalloc申请需要使用的发送和接收缓存，使用Fchg32函数在缓存中放入服务器端需要的域值：文件块的大小、文件的标识等基本信息。</p>
		<p>SndBuf = (FBFR32 *)tpalloc("FML32", NULL, 1024);　/* 申请发送的缓存 */<br />iRet = Fchg32(SndBuf,BLOCKSIZE,0,(char *)&amp;lBlockSize,0);　/* 设置文件块的大小 */<br />设置完毕后，开始使用同步tpcall调用UNIX后台文件处理FTPSVR服务。 <br />/* 客户端同步调用UNIX平台文件处理服务*/<br />iRet = tpcall("FTPSVR",(char *)SndBuf,0L,(char **)&amp;RcvBuf,(long *)&amp;len,0L);<br />iRet = Fget32(RcvBuf, FILELEN, 0, (char *)&amp;lFileLen, 0);/* 接收文件长度*/<br />接收文件并将第一块数据写入文件<br />iRet = Fget32(RcvBuf, FILEDATA, 0, pszFileBuf, (FLDLEN32 *)&amp;lFileDataLen);<br />fp = fopen(pszCltFileName, "wb+");　/* 创建文件*/<br />lBlkLen = fwrite(pszFileBuf,1,lFileDataLen,fp);　/* 将接收第一块数据写入文件*/<br />同时计算需要调用下载文件服务的次数，多次调用文件服务，将后续文件下载到客户端。<br />lBlkNum = (lFileLen -1)/lBlockSize +1 ;<br />for(i=2; i&lt;lBlkNum+1;i++)｛<br />……<br />iRet = tpcall("FTPSVR",(char *)SndBuf,0L,(char **)&amp;RcvBuf,(long *)&amp;len,0L);<br />Fget32(RcvBuf, FILEDATA, 0, pszFileBuf, (FLDLEN32 *)&amp;lBlockSize);<br />lBlkLen = fwrite(pszFileBuf, 1, lBlockSize, fp);<br />……<br />｝</p>
		<p>3 UNIX服务器端实现方法</p>
		<p>　　在Unix服务器端，接收客户端发送过来的缓存内容，如：文件块的大小、文件块内容、文件块标识等。根据文件块的标识移动文件指针来写文件，每
次文件指针移动的大小由文件块的大小决定，并将读取的文件块的内容放入输出缓存中，并返回给客户端。Unix服务器端程序例子说明如下：</p>
		<p>FTPSVR(TPSVCINFO *rqst)<br />{<br />…………<br />RcvBuf = (FBFR32 *)rqst-&gt;data; /*指向接收客户端的缓存*/<br />iRet = Fget32(RcvBuf, BLOCKID, 0, (char *)&amp;lBlockID, 0); /* 接收client发送的块标识*/<br />fp = fopen(pszSvrFileName, "rb");　　/* 打开文件，准备读取*/<br />(fseek(fp, (lBlockID-1)*lBlockSize, 0)!=0)　 /* 根据块标识移动文件指针*/<br />lReadLen=fread(pszFileBuf, 1, lBlockSize, fp);　 /* 读取文件块*/<br />Fchg32(SndBuf, FILEDATA, 0, pszFileBuf, (FLDLEN32 )lReadLen); /* 将文件块的内容方式放入tuxedo申请的缓存中*/<br />tpreturn(TPSUCCESS, 0, (char *)SndBuf, 0L, 0);　 /* 将输出缓存返回给客户端*/<br />｝ </p>
		<p>4 WINDOWS平台文件传输的设计</p>
		<p>4.1 WINDOWS客户端动态链接库的实现</p>
		<p>　　使用PowerBuilder、Delphi、VB等软件不能直接调用
C语言源代码，它们只能调用动态链接库文件。下面我们讲述如何使用VC++6.0将Windows客户端的文件传输的C、TUXEDO代码制作成动态链接
库供Power Builder、Delphi、VB等程序调用。<br />　使用VC++可以制作三种DLL，分别是 <br />　(1)Non-MFC Dlls <br />　(2).Regular Dlls <br />　(3)Extension Dlls <br />　　Non-MFC DLL:指的是不用MFC的类库结构，直接用C语言写的DLL，其输出的函数一般用的是标准C接口，并能被非MFC或MFC编写的应用程序所调用。因为我们不使用MFC类库，所以采用Non-MFC Dlls。 </p>
		<p>　　每一个DLL必须有一个入口点，就象用C编写的应用程序，必须有一个main函数一样. DllMain就是一个缺省的函数入口。</p>
		<p>　　创建一个动态链接库，选择File-&gt;New菜单，弹出New对话框。在Projects标签页下，选择"Win32 Dynamic-Link Library"。Visual C++就会创建动态链接库所需的工程文件。<br />创建ftpfile.def文件，这个文件记录了可被外部应用程序使用的DLL库函数名字。这些名字信息和对应的函数位置的信息将被编译进动态链接库文件中，然后应用程序根据函数名字和函数位置对照表来找到对应的函数。ftpfile.def内容如下：</p>
		<p>LIBRARY "ftpfile"<br />EXPORTS<br />ftpfile; /*与C代码中的函数名称相同*/<br />将ftpfile.def、
源程序ftpfile.cpp、头文件public.h和ftpfld.h、tuxedo库文件wtuxws32.lib和libwsc.lib加入到工
程中。选择Project-&gt;add to project－&gt;files.然后开始编译动态链接库生成ftpfile.dll。<br />代码样例如下：<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) /* 动态链接库函数主体*/<br />{<br />FBFR32 *RcvBuf,*SndBuf; /*变量声明*/<br />int iRet;<br />long i,lBlkLen,len,lFileLen,lBlkNum;<br />…………<br />/* 动态链接库程序主体*/<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 *)&amp;lBlockSize,0); /*把块大小放入发送缓存*/<br />if (iRet &lt;0){ /*错误处理*/<br />tpfree((char *)SndBuf);<br />tpfree((char *)RcvBuf);<br />tpterm();<br />return FCHGERR; <br />}<br />iRet = Fchg32(SndBuf,OPTFLAG,0,(char *)&amp;lOptFlag,0);<br />……………………………<br />}/* 程序主体结束*/</p>
		<p>4.2 WINDOWS客户端动态链接库的调用</p>
		<p>　　以Power Builder7.0为例，讲述如何在Power Builder中调用文件传输的客户端动态链接库。</p>
		<p>　　首先，在Power Builder声明该函数，声明如下：<br />Function Integer ftpfile(string CltFileName,string SvrFileName,long lBlockSize,long lOptFlag) LIBRARY "ftpfile.dll"<br />然后，在程序中就可以应用了。示例如下：<br />string CltFileName<br />string SvrFileName<br />long lBlockSize<br />long lOptFlag /*设置文件上传或下载标志*/<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&lt; 0){<br />messagebox('系统提示','调用ftpfile函数错误')<br />return <br />}</p>
		<p>5 结束语</p>
		<p>　　本文通过分析TUXEDO交易中间件的同步调用TPCALL和FML编程方式，描述了在Windows和UNIX平台之间如何完成文件传输的方法，概述了Windows平台如何制作和调用动态链接库。</p>
<img src ="http://www.blogjava.net/Vencent/aggbug/67694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2006-09-04 23:16 <a href="http://www.blogjava.net/Vencent/articles/67694.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TUXEDO函数说明</title><link>http://www.blogjava.net/Vencent/articles/67691.html</link><dc:creator>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</dc:creator><author>&lt;font color='GREEN'&gt;Vincent Chen&lt;/font&gt;</author><pubDate>Mon, 04 Sep 2006 15:01:00 GMT</pubDate><guid>http://www.blogjava.net/Vencent/articles/67691.html</guid><wfw:comment>http://www.blogjava.net/Vencent/comments/67691.html</wfw:comment><comments>http://www.blogjava.net/Vencent/articles/67691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vencent/comments/commentRss/67691.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vencent/services/trackbacks/67691.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: TUXEDO函数说明																																						-收集整理																																																																																 																														...&nbsp;&nbsp;<a href='http://www.blogjava.net/Vencent/articles/67691.html'>阅读全文</a><img src ="http://www.blogjava.net/Vencent/aggbug/67691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vencent/" target="_blank"><font color='GREEN'>Vincent Chen</font></a> 2006-09-04 23:01 <a href="http://www.blogjava.net/Vencent/articles/67691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>