tuxedo java_【译】使用Java编写Oracle Tuxedo应用

Oracle Tuxedo Java编程介绍

简介

Oracle Tuxedo服务可以使用纯java来编写。使用java实现的服务的功能和其他Tuxedo服务实现是一样的。你可以使用客户端或者Tuxedo服务器通过ATMI接口来调用Tuxedo Java Server(TMJSVASVR)对外提供的服务;你也在java实现的服务中通过TJATMI接口来调用Tuxedo server提供的服务。

另外,你可以使用任何类型的Tuxedo客户端调用java实现的服务,比如本地客户端,/WS客户端和Jolt客户端。

可以使用TJATMI接口、JATMI类型缓冲、POLO java对象等主流Java技术来实现Tuxedo服务。

编程方针

Java服务类,实现Java服务,需要继承TuxedoJavaServer类;Java服务类应该有一个默认的构造函数

Java服务类中的Java方法会被向外提供成Java服务,应该声明为public, 并将TPSVCINFO接口作为唯一的输入参数

Java服务类应该实现tpsvrinit()方法,在Tuxedo Java服务启动时会被调用

Java服务类应该实现tpsvrdone()方法,在Tuxedo Java服务关闭时会被调用

Java服务可以使用Tuxedo Java ATMI接口(例如tpcall,tpbegin等)

Java服务可以使用tpreturn向客户端返回结果,或者通过抛出异常退出

Tuxedo Java 服务器线程与Java类实例模型

Tuxedo Java服务使用传统的Tuxedo多线程模型,必须运行在多线程模式下

一旦启动,Tuxedo Java服务为每一个定义在配置文件中的类创建一个全局对象(实例),处理Java服务时工作线程共享全局对象(实例)

Tudexo Java服务器 tpsvrinit()/tpsvrdone()处理

tpsvrinit()处理:

用户需要实现tpsvrinit()方法。由于该方法会在服务启动时调用,最好在该方法中完成类的初始化。如果一个类的tpsvrinit()方法失败,用户日志中会报告一条警告信息,Java服务会继续执行。

tpsvrdone()处理:

用户需要实现tpsvrinit()方法。该方法在服务关闭时调用,推荐将类范围的清理工作放入这个方法中。

Tuxedo Java服务器tpreturn()处理

Java服务的tpreturn()并不会立即结束Java服务方法的执行,而是向Tuxedo Java服务器返回一个结果。

Java 服务的tpreturn()的行为与现有Tuxedo系统的tpreturn()行为不同:

当现有Tuxedo系统调用tpreturn()时,流控制自动转向Tuxedo

当Java服务调用tpreturn()时,tpreturn()之后的语句依旧会被执行。用户必须保证tpreturn()是Java服务中最后一条执行的语句。如果不是,建议在tpreturn()之后加上return;否则tpreturn()不会自动将流控制转向Tuxedo系统

注意:不建议在Java服务中前面没有tpreturn()时使用return。这种用法会使Java服务器返回rcode为0的TPFAIL到相关的客户端。

Tuxedo Java服务器异常处理

Java服务执行期间可以抛出任何的异常然后退出Java服务。这种情况下Java服务器会返回TPFAIL到其客户端,其中rcode设置为0

所有的异常信息会记录在$APPDIR/stderr文件中。

编程环境

更新UBB配置文件

你需要配置一个路径,通过该路径Tuxdeo Java服务器可以找到CLOPT中Java实现的服务的配置文件。

由于ATMI Java服务器是一个多线程服务器,你还需要指名线程分配的限制。可以查看Defining the Server Dispatch Threads一章获取更多关于多线程服务配置的信息。

清单2-1 显示了ATMI Java服务器的UBB配置文件示例:

清单2-1

conf*SERVERS

TMJAVASVR SRVGRP=TJSVRGRP SRVID=3

CLOPT="-- -c /home/oracle/app/javaserver/TJSconfig.xml"

MINDISPATCHTHREADS=2 MAXDISPATCHTHREADS=3

注意:UBBCONFIG中为Java服务器指明的MAXDISPATCHTHREADS最小值为2。

参见

Setting Up an Oracle Tuxedo Application

UBBCONFIG(5) in the File Formats, Data Descriptions, MIBs, and System Processes Reference

ATMI Java Server 用户接口

TuxedoJavaServer

TuxedoJavaServer是一个抽象类,所有用户定义的实现服务的类都应该继承它。

表3-1 TuxedoJavaServer接口

函数

描述

tpsvrinit

抽象方法,子类实现时做一些初始化的工作

tpsvrdone

抽象方法,子类实现时做一些清理工作

getTuxAppContext

用来取回当前连接的Tuxedo应用Java上下文

Oracle Tuxedo Java上下文

为了获取Oracle Tuxedo Java Server提供的TJATMI原始功能,你需要获取一个TuxAppContext对象,该对象实现了所有的TJATMI功能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值