前段时间有个小项目,需要用C#开发一个服务作为客户端,定期调用BEA Tuxedo中间件架设的服务端,向另外一个系统发送数据。我这边引用tuxedo提供给.NET的组件来实现调用服务端的逻辑。
系统上线后,发现一个问题,就是服务每运行一段时间后,在初始化tuxedo连接(即Bea.Tuxedo.ATMI.AppContext.tpinit)时,总是报错,tuxedo组件记录下下面的日志:
085623.WB03!?proc.3812.1720.0: GP_CAT:1241: ERROR: An error occurred in the encryption subsystem code(60)
085623.WB03!?proc.3812.1720.0: LIBWSC_CAT:1512: ERROR: Unable to generate first diffie-hellman packet
085623.WB03!?proc.3812.1720.0: LIBWSC_CAT:1055: ERROR: Unable to establish WSL connection
085623.WB03!?proc.3812.1720.0: LIBWSC_CAT:1027: ERROR: Unable to connect to WSH
085623.WB03!?proc.3812.1720.0: LIBWSC_CAT:1020: ERROR: Unable to obtain authentication level
而重启服务后,又可以正常运行一段时间。
代码里检查了很久,也没发现产生问题的原因,而网上关于Tuxedo中间件的资料很少,也没找到解决方法。
最后尝试在系统环境上找原因,生产环境的操作系统是WINDOWS2008,而我安装的组件是tuxedo10gR3_32_win_2k3_x86_VS2005.exe,是提供给WINDOWS2003的安装包,因为开发环境用的是WINDOWS2003,部署生产环境时想当然,以为兼容没问题,就安装上去。
卸载tuxedo10gR3_32_win_2k3_x86_VS2005.exe,重新安装tuxedo11gR1_32_win_2k8_x86_VS2008.exe,问题解决,囧~。