对于BEA的中间价产品TUXEDO,常采用C/C++语言编写后台服务程序,广泛应用于电信、金融等领域,因项目的需要,我们经常面临调TUXEDO服务的需求!
对于JAVA调TUXEDO服务,有三种方法:一是通过JNI,二是通过WTC,三是通过JOLT!这三种方式各有优劣,简单的描述为:
JNI
优--无需购买License;发布TUXEDO服务无需做额外限制;无需借助于任何J2EE容器
劣--JNI影响系统移植;防止过度JNI带来性能问题
WTC(WEBLOGIC为TUXEDO定制)
优--因定制,存在一套和TUXEDO API相对应的JAVA API;发布TUXEDO服务无需做额外限制;双向调用
劣--需要购买License;依赖于WEBLOGIC容器,不能移植到其它J2EE容器(如WEBSPHERE,JBOSS)
JOLT
优--可用于但不依赖于J2EE容器(如WEBLOGICWEBSPHERE,JBOSS);提供的API用WTC类似但不同;
劣--需要购买License;发布TUXEDO服务有些额外的要求;不提供集成的 WebLogic Server-Tuxedo 事务的机制
由此可知,第一,在受限于License经济压力或无法要求UXEDO服务方发布服务的情况下,我们可以选择JNI方式调TUXEDO服务;
第二,当需要一般 Java 客户端或其他 Web 服务器应用程序且 WebLogic Server 不是解决方案的一部分时,用户应使用 Jolt(而不使用 WTC)作为解决方案。
对于jolt方式调TUXEDO服务,3个必须的JAR包:jolt.jar、joltjse.jar、joltwls.jar,下面信息也许对您有帮助:
使用XMLink和Jolt实现IBM WebSphere与BEA Tuxedo的互连 第一部分
使用XMLink和Jolt实现IBM WebSphere与BEA Tuxedo的互连 第二部分
下面,我们重点关注下WTC,WebLogic Tuxedo Connector (WTC) 提供了 WebLogic Server 应用程序与 Tuxedo 服务之间的互操作性。WTC 允许 WebLogic Server 客户端调用 Tuxedo 服务,Tuxedo 客户端调用 WebLogic Server Enterprise Java Bean (EJB) 来响应服务请求,两者之间的简单关联关系如下图:
关于WTC的配置原则和最佳实践可参考下面的链接:
为方便记,摘录过来:
在配置 WebLogic Tuxedo Connector 时请使用以下准则:
接受更改,但是要到连接断开并重新连接后,才在现有的连接/会话中实现这些更改。请参阅“管理控制台联机帮助”中的定位 WTC 服务。
对已部署的 WTC 服务进行任何更改都会导致异常。在进行任何 tBridge 配置更改前都必须先取消对 WTC 服务的定位。在取消定位和进行配置更改后,必须定位 WTC 服务以便实现更改。
ON_STARTUP
和 INCOMING_ONLY
。 ON_STARTUP
和 INCOMING_ONLY
总是成对出现。例如,如果使用 ON_STARTUP
配置了 WTC 远程访问点,则必须将远程访问点的 Tuxedo 域配置的 DM_TDOMAIN
部分配置为 INCOMING_ONLY
。在此情况下,WTC 总是充当会话发起方。请参阅“WebLogic Tuxedo Connector 管理指南”中的配置访问点之间的连接。
ON_DEMAND
。首选连接策略是 ON_STARTUP
和 INCOMING_ONLY
。这样会减少因路由 ON_DEMAND
的语义而引起的服务请求失败。请参阅“WebLogic Tuxedo Connector 管理指南”中的配置访问点之间的连接。 请参阅“WebLogic Tuxedo Connector 管理指南”中的如何管理群集环境中的 WebLogic Tuxedo Connector。
Security
的值设置为 DM_PW
。请参阅“WebLogic Tuxedo Connector 管理指南”中的远程访问点的身份验证。 min-encrypt-bits
参数设置为 40,将 max-encrypt-bits
设置为 128。请参阅“WebLogic Tuxedo Connector 管理指南”中的链接级加密。 TypedFML32
缓冲区内使用嵌入的 TypedFML32
缓冲区。请参阅“WebLogic Tuxedo Connector 编程人员指南”中的将 FML 用于 WebLogic Tuxedo Connector。 TypedFML32
。即使是很难预测最大数量,提供合理的数量也可以提高性能。可以通过将字段的数量乘以 1.33 得到近似的最大数量。 注意: | 注意,此性能提示不应用于 TypedFML 缓冲区类型。 |
如果在 TypedFML32
缓冲区类型中有 50 个字段,那么最大数量就是 63。调用构造方法 TypedFML32(63, 50)
比 TypedFML32()
执行得更好。
如果在 TypedFML32
缓冲区类型中有 50 个字段,并且每个字段最多可以有 10 个事件,则调用构造方法 TypedFML32(625, 50) 将会有比 TypedFML32() 更好的性能。
下面是一个如何为 service1
在 TDomainSession(WDOM1,TUXDOM1)
和 TDomainSession(WDOM1,TUXDOM2)
之间正确配置负载平衡请求的示例: