`

调用TUXEDO服务概览

阅读更多

      对于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,下面信息也许对您有帮助:

    [转贴]不涉及wls的jolt客户端实现

  

1、如果不使用wls,同样可以使用jolt提供的pool功能,而这又分为两种:一种是基于web容器的servlet jolt pool,另一种则是普通java客户端的jolt pool。前者在$TUXDIR/udataobj/jolt/examples/servlet/simpapp下有示例,后者则未提供。
2、如果不使用jolt产品自带的pool,也可以自己实现。套路为:创建Jolt Session > 基于此session构建JoltRemoteService对象并发起tuxedo调用 > 释放jolt session。这里有个要点就是在使用session前需要用session.isAlive()来判断当前session是否可用,因为JSL的-T参数及防火墙对idle连接的干扰都可能导致已有的session是无效的。
3、创建JoltRemoteSession时一定记得为三个超时属性(IDLETIMEOUT/RECVTIMEOUT/SENDTIMEOUT)进行显式的设置。idle超时和tuxedo的JSL -T属性对应,该设置将保证session.isAlive()返回正确的布尔值。RECV超时则控制client端自发起call至收到tuxedo return这一过程的预期时常。
5、tuxedo侧在ubb里为相应的service配置了SVCTIMEOUT,所以service执行超时后会收到SIGKILL而被终止,这样一来,客户端的call会收到TPESVCERR错,对应的异常为bea.jolt.ServiceException。客户端需要对此异常进行处理,此外,客户端捕获此异常的时间点应当和ulog中该server被kill的时间点对应。
6、在客户端,时不时会发现由于达到RECVTIMEOUT而导致的客户端接收超时。客户的疑问是:当前RECVTIMEOUT设置为25s,而ubb中相应SVCTIMEOUT设置为10s且scanunit为默认的10s,所以理论上不应发生25s的客户端RECVTIMEOUT超时。庹达人提出了一种怀疑,即client端请求抵达tuxedo侧时,server出现排队情况,请求未被及时处理,这个排队时长决定了20s以外的时间差。对于此,建议客户使用MSSQ,并监控pq的情况。

 使用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 服务定位到服务器实例。
    • WTC 不支持连接缓冲池。WTC 通过单个物理连接多路传输请求。
    • 配置更改可按照如下方式实现:
      • 在建立连接/会话前更改该会话/连接配置(本地 AP、远程 AP、密码和资源):

        接受更改并在新的会话/连接中实现这些更改。

      • 在建立连接/会话后更改该会话/连接配置(本地 AP、远程 AP、密码和资源):

        接受更改,但是要到连接断开并重新连接后,才在现有的连接/会话中实现这些更改。请参阅“管理控制台联机帮助”中的定位 WTC 服务

      • 更改导入和导出服务配置:

        接受更改并在下一个入站或出站请求中实现这些更改。BEA 建议不要使用此做法,因为这会让正在进行的请求处于未知状态。

      • 更改 tBridge 配置:

        对已部署的 WTC 服务进行任何更改都会导致异常。在进行任何 tBridge 配置更改前都必须先取消对 WTC 服务的定位。在取消定位和进行配置更改后,必须定位 WTC 服务以便实现更改。

     


    最佳实践

    以下部分提供了使用 WTC 时的最佳实践:

    • 在配置连接策略时,请使用 ON_STARTUPINCOMING_ONLY

      ON_STARTUPINCOMING_ONLY 总是成对出现。例如,如果使用 ON_STARTUP 配置了 WTC 远程访问点,则必须将远程访问点的 Tuxedo 域配置的 DM_TDOMAIN 部分配置为 INCOMING_ONLY。在此情况下,WTC 总是充当会话发起方。请参阅“WebLogic Tuxedo Connector 管理指南”中的配置访问点之间的连接

    • 避免使用连接策略 ON_DEMAND。首选连接策略是 ON_STARTUPINCOMING_ONLY。这样会减少因路由 ON_DEMAND 的语义而引起的服务请求失败。请参阅“WebLogic Tuxedo Connector 管理指南”中的配置访问点之间的连接
    • 在设计应用程序时,请考虑使用以下 WTC 功能:链接级故障转移、服务级故障转移和负载平衡。请参阅“WebLogic Tuxedo Connector 管理指南”中的配置故障转移和故障回复
    • 请考虑使用 WebLogic Server 群集提供额外的负载平衡和故障转移。要在 WebLogic Server 群集中使用 WTC,请执行下列操作:
    • 如果 WTC 到 Tuxedo 的连接使用了 Internet,则要使用以下安全设置:
      • 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
    • 如果应用程序处理重负载,请考虑配置更多的远程 Tuxedo 访问点并让 WTC 平衡访问点之间的工作负载。请参阅“WebLogic Tuxedo Connector 管理指南”中的配置故障转移和故障回复
    • 在使用事务应用程序时,尽量让同一事务中涉及的远程服务能够从同一远程访问点访问。请参阅“WebLogic Tuxedo Connector 编程人员指南”中的 WebLogic Tuxedo Connector JATMI 事务
    • 从网关调度服务时,可用的客户端线程数可能会限制运行的并发服务数。没有任何 WebLogic Tuxedo Connector 特性可以增加可用线程的数量。在调用服务时请使用合理的线程模型。请参阅“配置 WebLogic Server 环境”中的线程管理使用工作管理器优化调度的工作
    • WebLogic Server 9.2 及更高版本提供了改进的路由算法,这增强了事务性能。具体说就是,当 2 阶段提交 (2PC) 事务中具有不止一项 Tuxedo 服务请求时,性能就会相应提高。如果应用程序仅向 Tuxedo 域执行单个服务请求,则可以通过设置以下 WebLogic Server 命令行参数来禁用此功能:
    • 通过在缓冲区中使用最大数量的对象来调用构造方法 TypedFML32。即使是很难预测最大数量,提供合理的数量也可以提高性能。可以通过将字段的数量乘以 1.33 得到近似的最大数量。
      注意: 注意,此性能提示不应用于 TypedFML 缓冲区类型。

      例如:

      如果在 TypedFML32 缓冲区类型中有 50 个字段,那么最大数量就是 63。调用构造方法 TypedFML32(63, 50)TypedFML32() 执行得更好。

      如果在 TypedFML32 缓冲区类型中有 50 个字段,并且每个字段最多可以有 10 个事件,则调用构造方法 TypedFML32(625, 50) 将会有比 TypedFML32() 更好的性能。

    • 当配置 Tuxedo 应用程序(这些应用程序可以作为与 WTC 客户端互操作的服务器)时,请考虑平行问题,这一点可以通过在不同 Tuxedo 计算机上仔细配置不同服务器来实现。
    • 要知道在 Tuxedo 应用程序中可能会存在数据库访问死锁现象。可以通过认真配置 Tuxedo 应用程序来避免死锁现象。
    • 如果正在使用 WTC 负载平衡或服务级故障转移,BEA 建议不要禁用 WTC 事务关系。
    • 针对负载平衡出站请求,为导入服务配置使用不同密钥的多个条目。导入服务将使用复合密钥来确定每个记录的唯一性。复合密钥的构成:服务名称 + 本地访问点 + 远程访问点列表中的主要路由。

      下面是一个如何为 service1TDomainSession(WDOM1,TUXDOM1)TDomainSession(WDOM1,TUXDOM2) 之间正确配置负载平衡请求的示例:

      ResourceName
      LocalAccessPoint
      RemoteAccessPointList
      RemoteName
      service1
      WDOM1
      TUXDOM1
      TOLOWER
      service1
      WDOM1
      TUXDOM2
      TOLOWER2

       

      下面是一个错误配置负载平衡请求的示例。下面的配置会导致 service1 具有相同的复合密钥:

      ResourceName
      LocalAccessPoint
      RemoteAccessPointList
      RemoteName
      service1
      WDOM1
      TUXDOM1
      TOLOWER
      service1
      WDOM1
      TUXDOM1
      TOLOWER
    分享到:
    评论
    2 楼 liubang201010 2012-07-18  
    Oracle Tuxedo Cartridge for Foglight可以实现对Oracle Tuxedo的监控管理.
    通过此软件,每个Tuxedo的可用性状态,健康情况,版本,资源数量等汇总值,警报情况等一目了然,大大方便了Tuxedo中间件的运维工作!

    原文参考:http://www.innovatedigital.com/node/709

    1 楼 yiyanwan77 2011-11-11  
    java里调用wtc使用的TuxedoConnectionFactory在哪个包里?

    相关推荐

      Java通过Jolt调用Tuxedo服务

      Java 通过 Jolt 调用 Tuxedo 服务是一种常见的技术实践,特别是在集成传统企业级应用时。本文将详细阐述如何在特定环境下(Eclipse3.1, Jolt, WebLogic8.1, Tuxedo9.0)实现这一过程。 首先,Jolt 是 BEA Tuxedo ...

      Java通过Jolt调用Tuxedo服务[定义].pdf

      3. 调用 Tuxedo 服务的步骤包括准备 Tuxedo 服务端代码、在 Tuxedo 中配置 Jolt 相关文件、启动 Tuxedo 服务、配置 WebLogic 服务与 Tuxedo Jolt 相关的参数、配置 Eclipse 3.1 启动 WebLogic 服务、编写 Eclipse ...

      用JAVA调用Tuxedo服务必须的JAR包

      这就涉及到我们今天要讨论的主题——如何用JAVA调用Tuxedo服务。 首先,我们需要理解的是Java调用Tuxedo服务的基础:Jolt(Java to Tuxedo)。Jolt是一个Java接口,它提供了连接到Tuxedo服务的桥梁,使得Java开发者...

      Weblogic wtc调用tuxedo服务

      WebLogic WTC 支持与 Tuxedo(Transaction Processing Facility)服务的集成,使得基于Java的应用程序能够调用运行在Linux或AIX系统上的Tuxedo服务。以下是如何配置WebLogic WTC以调用Tuxedo服务的详细步骤: 1. **...

      03.Weblogic通过WTC调用Tuxedo服务参考文档@xutt.docx

      这种集成允许WebLogic应用程序调用Tuxedo服务,同时也支持Tuxedo调用WebLogic中的Enterprise JavaBeans (EJBs)。 **一、环境配置** 1. **服务端**:在这个例子中,服务端运行在Asianux release 2.0操作系统上,...

      Java通过Jolt调用Tuxedo服务[参考].pdf

      本文主要讲解如何使用Jolt库来调用Tuxedo服务,以实现Java与Tuxedo的集成。 一、Jolt调用Tuxedo服务的基本流程 1. **准备Tuxedo服务端代码**: Tuxedo服务的实现通常涉及C或C++编写的服务程序,这些程序通过...

      delphi调用TUXEDO的单元文件

      之后,在需要调用TUXEDO服务的地方,使用`tpcall`函数传递相应的参数,执行远程操作。 值得注意的是,由于TUXEDO是C接口,因此Delphi在调用时需要处理类型匹配和内存管理的问题。例如,可能需要使用`External`或`...

      delphi 调用Tuxedo服务

      本资源聚焦于如何在Delphi编程环境中调用Tuxedo服务,以实现更高效的数据管理和处理。 首先,我们要理解Tuxedo服务的核心概念。Tuxedo是一个基于消息传递的事务处理监控系统(TPM),它提供了一套API(应用程序接口...

      weblogic调用tuxedo示例

      本示例主要探讨如何在WebLogic中调用Tuxedo服务,实现两者的通信。 首先,了解WebLogic和Tuxedo的基本概念。WebLogic是Oracle公司的一款基于Java EE的中间件产品,它提供了一个完整的、可扩展的、高性能的应用...

      JAVA通过Jolt调用Tuxedo服务参考文档@xutt

      JAVA 通过 Jolt 调用 Tuxedo 服务参考文档 本文档旨在介绍如何使用 JAVA 通过 Jolt 调用 Tuxedo 服务,以实现字符串大写转换服务。下面将详细介绍服务端环境配置、服务部署、客户端调用等相关知识点。 服务端环境...

      Java通过WTC调Tuxedo服务实例(String)

      Java通过WTC调Tuxedo服务实例,传入类型:String型

      02.Weblogic通过Jolt pool调用Tuxedo服务参考文档@xutt.docx

      【Weblogic通过Jolt pool调用Tuxedo服务】\n\nWeblogic是Oracle公司的一款企业级应用服务器,而Tuxedo是Oracle的分布式事务处理(DTP)系统,主要用于构建高可用性和高性能的企业级应用。Jolt Pool是Weblogic中用于...

      delphi调用tuxedo服务编写为dll详解

      1。如何编写dll,示例两个,一个是double参数的,一个是...如何把调用tuxedo服务写成dll函数; 3。环境如何搭建的,如何进行调用的,例子很简单实用,细节描述也非常详细 绝对原创,7是我的幸运数字,7分绝对物有所值

      新WTC开发指南 调用Tuxedo服务返回的内存结构

      本次新开发架构,抛弃了EJB。采用JSP tag Libraries的方式,调用WTC 继承了老的properties 配置文件。

      jolt WTC 调用TUXEDO jar包

      本文将深入探讨这些概念以及如何将它们结合使用,特别是Jolt如何调用Tuxedo服务。 首先,Jolt是一个Java库,主要用于处理JSON数据的转换和验证。它提供了多种工具,如Chainr(用于数据结构的转换)、Listr(用于...

      delphi中调用tuxedo示例

      本文将详细介绍如何在Delphi中调用Tuxedo服务,并通过一个具体的示例来展示这一过程。 #### 二、基础知识概述 在深入讲解之前,我们先对Delphi和Tuxedo做一些基础性的介绍: - **Delphi**:一种基于Pascal语言的...

      .net调用tuxedo

      对于.NET开发者来说,能够直接从.NET应用程序中调用Tuxedo服务是一种强大的能力,这不仅可以提高应用的灵活性,还可以增强现有系统的功能性和可扩展性。本文将详细介绍如何使用Tuxedo.NET工作站客户端来实现这一目标...

      Tuxedo与IIS的集成

      例如,可以创建一个ASP页面来调用Tuxedo中的某个服务,并显示其结果。这种方式极大地简化了IIS与Tuxedo服务器之间的交互过程,提高了系统的灵活性和可维护性。 #### 七、总结 通过对Tuxedo与IIS集成的详细介绍,...

      joltwls.jar Tuxedo服务调用的jar

      用JAVA调用Tuxedo服务必须的JAR包:jolt.jar、joltjse.jar、joltwls.jar。

    Global site tag (gtag.js) - Google Analytics