TUXEDO:Transaction for UNIX has been Extended for Distributed Operation,即被分布式操作扩展之后的UNIX事务系统

个人评语:一个让C程序员爽,让JAVA程序员心烦的东西。作为一个中间件最最关键的是它不爽了你不知道它哪里不舒服。

TUXEDO客户端环境变量

安装TUXEDO客户端后使用tuxedo需要下列环境变量,不要采用在程序设置环境变量,血的教训啊,宕机!

TUXDIR=/home/admin/tuxedo10g

export TUXDIR

WSNADDR=//[ip]:[port]

export WSNADDR

WSINTOPPRE71=yes

export WSINTOPPRE71

PATH=$TUXDIR/bin:$PATH:$HOME/bin

export PATH

#找到动态链接库的路径

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TUXDIR/lib

export LD_LIBRARY_PATH

C编程中的TUXEDO

如果要教程,请去CSDN下载频道下载,我的积分不够了http://download.csdn.net/source/2067895

简单的来说,要用tuxedo编程只需要进行下面的步骤:

1.tpinit();//连接服务器,获取应用上下文

2.tpalloc();//申请用于通讯的空间地址

3.tpcall();//进行SOCKET连接,并同步获取返回信息

4.tpfree();//释放由tpalloc申请的内存地址

5.tpterm();//断开服务器连接

建议看oracle英文原版的函数说明,里面有很多特殊用法、调用注意事项和优化方案.http://download.oracle.com/docs/cd/E13203_01/tuxedo/tux80/atmi/rf3c53.htm

编译TUXEDO的C程序

C程序写好了,当然还需要编译。如果是单纯C语言写的tuxedo客户端,编译的时候只需要libwsc.so,libbuft.so,libgpnet.so,libfml.so,libfml32.so,libengine.so,libdl.so,libpthread.so这些动态库文件在${TUXDIR}/lib目录下,头文件在${TUXDIR}/include目录下。

另外,linux系统还需要链接/usr/lib/libcrypt.a加密静态库

以pbctuxedosend.c文件为例我们的gcc脚本就可以写成

gcc -I$JAVA_HOME/include -I$JAVA_HOME/include/linux -I$TUXDIR/include -c -L${TUXDIR}/lib pbctuxedosend.c

gcc --kill-at -shared -I$JAVA_HOME/include -I$JAVA_HOME/include/linux -I$TUXDIR/include -L$TUXDIR/lib  -lwsc -lbuft -lwsc  -lgpnet -lfml -lfml32 -lengine -ldl -lpthread /usr/lib/libcrypt.a -Wl,-soname,libpbctuxedosend.so.1 -o libpbctuxedosend.so.1.0 pbctuxedosend.o

结果就是得到我们jni调用所需要的动态库文件libpbctuxedosend.so.1.0将它拷贝成libpbctuxedosend.so就得到我们jni调用所需要的动态库。

实例演练C

Pbctuxedosend.c

头文件,必须包含

#include         /* TUXEDO  Header File */

//申请了tpinit结构对象

TPCONTEXT_T  ctxt;

TPINIT *tpinitbuf = (TPINIT* )tpalloc((char*)"TPINIT",NULL,TPINITNEED(0));

//设置为多会话模式

tpinitbuf->flags = TPMULTICONTEXTS;

//加入服务器多会话上下文

tpinit((TPINIT *)tpinitbuf)

//申请通讯用内存地址

sendbuf = (char *) tpalloc("CARRAY",NULL, sendlen+1)

rcvbuf = (char *) tpalloc(“CARRAY”,NULL, sendlen+1)

//使用内存拷贝将发送报文置入发送内存

(void) memcpy(sendbuf,strSendContext,sendlen);

//调用tpcall与服务器进行同步通讯

ret = tpcall(strServiceName, (char *)sendbuf, 0, (char **)&rcvbuf, &rcvlen, TPNOBLOCK);

//释放资源

tpfree(sendbuf);

tpfree(rcvbuf);

tpfree((char *)tpinitbuf);

//断开连接

tpterm();

(需要C完整源文件请联系我,这边发不了附件,上传不了图像。。。不知道为什么)

实例演练JNI

/**

* 调用封装的Tuxedo库函数类,演示用

* @author jun.lijun

* @version $Id: PbcInvokeTuxedo.java,v 0.1 2010-3-12 下午08:16:02 jun.lijun Exp $

*/

public class PbcInvokeTuxedo {

static {

try {

System.loadLibrary("pbctuxedosend");

} catch (Exception e) {

}

}

public native static byte[] sendByTuxedoTpCall(String wsnaddr, String serviceName,

String sendContext);

}

java调用tuxedo中间件_初探TUXEDO中间件相关推荐

  1. 东方通 中间件_东方通:中间件国产替代进程中的艰难领军者

    引言 东方通自1992年成立以来,一直深耕基础软件中间件的产品及相关技术研发,为国产中间件的开创者,连续十几年保持中间件市场占有率国内厂商第一.其时,国外的中间件也才开始起步,可以说与国际厂商站在了同 ...

  2. java 调用postgresql 函数_从Java调用PostgreSQL中的存储过程

    我编写了一个我想用Java调用的存储过程.但我不认为它能够对我通过的查询做任何事情.以下是我的java代码: String QUERY_LOCATION = "select (license ...

  3. java调用siri 语言_如何更改Siri的声音,口音,性别和语言

    java调用siri 语言 Most of us are familiar with Siri as an American female voice. What you may not realiz ...

  4. java 调用祖父方法_在Java中调用祖父母方法:您不能

    java 调用祖父方法 在文章保护的重点中,我详细介绍了"受保护"如何扩展"包私有"访问. 我在那儿写道: 你能做的是 覆盖子类中的方法或 使用关键字super ...

  5. java 调用 js性能_太快了,太变态了:什么会影响Java中的方法调用性能?

    java 调用 js性能 那么这是怎么回事? 让我们从一个简短的故事开始. 几周前,我提议对Java核心libs邮件列表进行更改 ,以覆盖当前final一些方法. 这刺激了一些讨论主题-其中之一是其中 ...

  6. java调用oracle存储过程_做一点,记一点 ~ Java调用Oracle存储过程

    一.需求 传入一个参数,返回一条或多条记录(列表). 二.实现步骤 1. 编写Oracle存储过程. -- 声明包和包体的语句应该分两次执行,即使声明在前定义在后,如果一起执行依然会编译出错 --调用 ...

  7. java 调用.net类库_通过COM组件方式实现java调用C#写的DLL文件

    通过Java调用C#的DLL文件实现.网上资料很多,自己整合总结了一下,做个备忘. 一.C#写com组件 开发环境 VS2013 1.新建工程:TestDemo(类库项目)     //根据自己需要取 ...

  8. java 调用火狐内核_[图文]自己动手做J浏览器——基于JAVA和火狐内核(gecko)

    网上有关于JAVA调用火狐内核的资料不多,而且比较杂乱.我在此处整理出JAVA调用火狐内核制作浏览器最简单的方案,以供参考. 教程中所涉及到需要下载的资源,都在代码示例中,如果您不想一个一个下载资源, ...

  9. aspx 使用什么中间件_.NET Core中间件与依赖注入的一些思考

    点击上方蓝字"小黑在哪里"关注我吧 1.起源? 为什么会有这篇文章呢? 源于我看了老A的aspnet core 3 框架揭秘[1]请求管道 篇产生的疑惑? 三点疑惑: Single ...

  10. java调用easyxml接口_【技术教程】如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口?...

    原标题:[技术教程]如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口? RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访 ...

最新文章

  1. 大学士带你领略“大院大所”黑科技!
  2. H.265(HEVC)深度解析
  3. python psycopg2_如何在Python上用“pip”安装psycopg2?
  4. phpcms v9 index.php,【转】phpcms v9中tags列表页url用拼音作为路径的方法
  5. ReentrantLock之公平锁源码分析
  6. 华为上机考试题系列(二):HJ107求解立方根
  7. raptor算法流程图例题_RAPTOR流程图+算法程序设计教程
  8. linux那些事之 page translation(硬件篇)
  9. c oracle 多条语句,Oracle 实践:如何编写一条 sql 语句获取数据表的全部索引信息(兼容 Oracle 19c、Oracle 11g)...
  10. URAL 1823. Ideal Gas(数学啊 )
  11. [网络安全自学篇] 八十八.基于机器学习的恶意代码检测技术详解
  12. Java算法-堆排序
  13. cocos2dx基础篇(14)——基本绘图DrawPrimitives
  14. 基于java的超市积分管理系统设计(含源文件)
  15. 一个计算机爱好者的不完整回忆(十二)下载软件
  16. Excel插入复选框
  17. 如何在word中的图片上画圈标注_怎么在word画圈标注 如何在word图片中进行画圈标示...
  18. 使用python冻结excel窗格:sheet.freeze_panes
  19. 英语作文中常见的连接词
  20. 举一个简单的例子,轻松搞懂所谓的“观察者模式”

热门文章

  1. css总常用的font-family
  2. OCJP之Console
  3. matlab画图(plot)命令。长期更新!
  4. Win10系统下使用Setuna截图自动放大解决办法
  5. 空间变换与计算_02_3x3矩阵
  6. 大学英语综合教程二 Unit 7 课文内容英译中 中英翻译
  7. GX Works2无法步执行调试的说明
  8. ps怎么导入lut预设?Photoshop导入lut调色预设教程
  9. linux环境生成pdf字体问题,字体概述与Linux字体常见问题的解决.pdf
  10. 管理账目的计算机软件有哪些,最好的记账软件哪个好