Tuxedo Client调用无法连接WSL

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> Tuxedo Client调用无法连接WSL

预计阅读时间:7分钟

Tuxedo Client调用无法连接WSL

Tuxedo历史文章如下,

《》

《》

《》

最近写了Tuxedo的监控程序,其中有一个逻辑,就是使用Tuxedo Client调用Server的服务,调用失败,ULOG中记录了,


000002.vm-app!?proc.81511.257603328.0: 07-02-2018: Tuxedo Version 9.1, 64-bit
000002.vm-app!?proc.81511.257603328.0: LIBWSC_CAT:1037: ERROR: Network message receive failure
000002.vm-app!?proc.81511.257603328.0: LIBWSC_CAT:1059: ERROR: WSL returns error on connection request
000002.vm-app!?proc.81511.257603328.0: LIBWSC_CAT:1055: ERROR: Unable to establish WSL connection
000002.vm-app!?proc.81511.257603328.0: LIBWSC_CAT:1027: ERROR: Unable to connect to WSH
000002.vm-app!?proc.81511.257603328.0: LIBWSC_CAT:1020: ERROR: Unable to obtain authentication level</code><p>
</p></pre>
</section>
Client逻辑比较简单,通过shell脚本调用,由于调用多套的环境,因此执行Client前,会先执行export WSNADDR的操作,指定不同环境的IP和端口,
<pre style="margin-top: 0px;margin-bottom: 0px;padding: 0px;background-image: none;background-color: initial;"><section class="mpa-template" mpa-preserve="t" style="white-space: normal;"><pre style="margin-top: 0px;margin-bottom: 0px;padding: 0px;background-image: none;background-color: initial;"><section class="mpa-template" mpa-preserve="t"><pre style="margin-top: 0px;margin-bottom: 0px;padding: 0px;background-image: none;background-color: initial;"><code class="hljs-default" style="margin-right: 0.15em;margin-left: 0.15em;padding: 6px;border-radius: 4px;font-size: 0.85em;background: rgb(40, 44, 52);color: rgb(171, 178, 191);display: block;overflow-x: auto;white-space: nowrap;">...
export WSNADDR=10.1.1.1:10001
./service_client
...

从错误提示看,是指客户端,没能建立和服务端WSL的连接,因此无法连接WSH,进而调用服务。

WSL是Tuxedo服务端的监听进程,L即是Listener,用来监听来自远程客户端的请求。当一笔Tuxedo交易开始时,远程客户端会首先与监听进程WSL建立连接,安全验证通过后,WSL就从WSH进程池里面分配给客户端一个空闲的WSH进程去处理客户端请求,H即是Handler。

WSH与workstation客户端的通信,以及与WSL的通信,都是使用专有的Tuxedo workstation协议。WSH不能理解telnet协议,所以尝试使用telnet到WSH端口都不会连通。

常见的WSL配置如下,


"WSL"   SRVGRP="GRP"      SRVID=1
        CLOPT="-A -- -p 10002 -n //10.1.1.1:10001 -P 10003 -T 180" 
        RQPERM=0666     REPLYQ=N        RPPERM=0666     MIN=1   MAX=1   CONV=N
        SYSTEM_ACCESS=FASTPATH
        MAXGEN=200      GRACE=86400     RESTART=Y
        MINDISPATCHTHREADS=0    MAXDISPATCHTHREADS=1    THREADSTACKSIZE=0
        SICACHEENTRIESMAX="500"

其中参数的说明,

[-p minwshport],WSH分配的起始端口
[-P maxwshport],WSH分配的结束端口
This pair of command line options can be used to specify the number range for port numbers available for use by WSHs associated with this listener server. The port numbers must be in the range between 0 and 65535. The default is 2048 for minwshport and 65535 for maxwshport.
[-T client_timeout], 
客户端在与服务器端建立连接后,允许最大的空闲时间; 
[-m number],
The minimum number of handlers that should be booted and always available. The default is 0.
[-M number]
The maximum number of handlers that can be booted. The default is the value of MAXWSCLIENTS for the machine being configured, divided by the multiplexing value (specified with -x)
[-x number]
The maximum number of clients that a WSH can multiplex at one time. The value must be greater than 0. The default is 10.

针对ULOG报错,常见的原因诸如:

  1. WSNADDR配置的IP存在问题,导致不能找到WSH。 

  2. 网络不通,导致client不能连接到WSH的机器上。

  3. 程序编译有问题,例如,没有使用-w参数编译client,但是却是使用WSNADDR寻找服务,导致出现这样的错误。若不用-w进行编译,则找本地服务。

这个问题中,网络端口通,排除2,编译正确,排除3,就只有1了,才发现是因为shell中,WSNADDR的格式错误了,IP前应该用//,


...
export WSNADDR=//10.1.1.1:10001
./service_client
...

改正之后,执行就正常了。因此,任何一个小环节,都可能成为执行出错的原因,谨慎书写。

如果您觉得本文有帮助,欢迎关注转发:bisal的个人杂货铺

Tuxedo Client调用无法连接WSL
本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> Tuxedo Client调用无法连接WSL


 上一篇
PL,SQL中SQL语句10053创建方法 PL,SQL中SQL语句10053创建方法
预计阅读时间:5分钟 《》介绍了使用alter session … 10053 trace和alter session … trace [SQL_Compiler.*],以及DBMS_SQLDIAG包的存储过程DUMP_TRACE,三种生成
下一篇 
Tuxedo错误号汇总 Tuxedo错误号汇总
预计阅读时间:8分钟 Tuxedo历史文章如下, 《》 《》 《》 《》 最近已经被Tuxedo摧残,碰见了各种问题,列出一些常见的错误码,便于检索。 #define TPMINVAL 0 /* minimum error mes