Java通过Jolt调用Tuxedo服务

本文详细介绍了如何在Eclipse3.1+Jolt+WebLogic8.1+Tuxedo9.0环境下,通过Jolt调用Tuxedo服务的全过程。从Tuxedo服务端代码编写、配置Jolt相关文件,到启动Tuxedo服务、配置WebLogic服务,再到编写Eclipse Servlet代码,一步步展示了如何实现Java调用Tuxedo服务。
摘要由CSDN通过智能技术生成

Java通过Jolt调用Tuxedo服务

草木瓜 2006-6-1

------------------------
一、简介
------------------------

外部应用访问Tuxedo服务是很经常的事,一般有两种方法WTC和Jolt,网上很多关于Jolt调用Tuxedo服务
文章,描述的太多笼统,其实通过Jolt并不是很复杂的事情,这里使用Eclipse3.1+Jolt+WebLogic8.1
+Tuxedo9.0环境描述调用服务的全过程。

Jolt是Bea Tuxedo自带的jar组件,在Tuxedo9.0的安装过程中可以看到安装的Jolt组件。

调用服务理论步骤是这样的:

1.先准备Tuxedo服务端代码
2.在Tuxedo中配置Jolt相关文件
3.启动Tuxedo服务
4.配置WebLogic服务与Tuxedo Jolt相关的参数
5.配置Eclipse3.1启动WebLogic服务
6.编写Eclipse Servlet代码,运行调用服务。

本例使用了《Windows Tuxedo的安装配置-数据库补充》一文中的Tuxedo数据服务文件,所以在启动
Tuxedo服务前,必须先启动数据库实例,因为在tpsvinit()里面就配置了数据连接。关于Tuxedo配置
要点需参阅《Tuxedo的安装配置-...》的四篇文章。

------------------------
二、Tuxedo服务文件全代码
------------------------

这里把server.pc服务文件代码再次列出。其中包括三个服务DBREAD(读数据库)和TOUPPER(转换大写)。
本例不使用TOUPPER,所以不用理会那段代码。

其中liwei/liwei@windb连接的表tuxedo_test,结构如下:

CREATE TABLE TUXEDO_TEST(
ID                        NUMBER(2),
NAME                      VARCHAR2(10)
)

ID            NAME
------------------------
1             aaaaaaa
2             bbbbbbb

#include <stdio.h>
#include <ctype.h>
#include <atmi.h> /* TUXEDO Header File */
#include <userlog.h> /* TUXEDO Header File */

EXEC SQL BEGIN DECLARE SECTION;
VARCHAR ora_no[2];
int ora_id;
VARCHAR ora_value[10];
VARCHAR ora_cn[30];
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE sqlca;

tpsvrinit()
{
  strcpy(ora_cn.arr,"liwei/liwei@windb");
  ora_cn.len = strlen(ora_cn.arr);
  ora_cn.arr[ora_cn.len]='/0';

  //EXEC SQL WHENEVER SQLERROR GOTO cnError;
  EXEC SQL CONNECT :ora_cn;
  return(0);
}
tpsrvdone()
{
  EXEC SQL COMMIT WORK RELEASE;
}

DBREAD(TPSVCINFO *rqst)
{
 
 strcpy(ora_no.arr,(char *)rqst->data);
 ora_no.len=strlen(ora_no.arr);
 ora_no.arr[ora_no.len]='/0';

 userlog("ERRSRV: %s",ora_no.arr);
 EXEC SQL select name into :ora_value from tuxedo_test where id=:ora_no;
 if(sqlca.sqlcode!=0)
 {
  userlog("ERRSRV: select name from tuxedo_test where id=, sqlcode=%ld , sqlerr=/n",sqlca.sqlcode);
  strcpy(rqst->data,sqlca.sqlerrm.sqlerrmc);
  tpreturn(TPFAIL, 0, rqst->data, 0L, 0);
 }

 /* Return the transformed buffer to the requestor. */
 strset(rqst->data,"");
 strcpy(rqst->data,ora_value.arr);
 tpreturn(TPSUCCESS, 0, rqst->data, 0L, 0);
}

TOUPPER(TPSVCINFO *rqst)
{

 int i;

 for(i = 0; i < rqst->len-1; i++)
  rqst->data[i] = toupper(rqst->data[i]);

 /* Return the transforme

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值