日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java调用tuxedo中间件_初探TUXEDO中间件

發(fā)布時(shí)間:2023/12/9 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java调用tuxedo中间件_初探TUXEDO中间件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

TUXEDO:Transaction for UNIX has been Extended for Distributed Operation,即被分布式操作擴(kuò)展之后的UNIX事務(wù)系統(tǒng)

個(gè)人評語:一個(gè)讓C程序員爽,讓JAVA程序員心煩的東西。作為一個(gè)中間件最最關(guān)鍵的是它不爽了你不知道它哪里不舒服。

TUXEDO客戶端環(huán)境變量

安裝TUXEDO客戶端后使用tuxedo需要下列環(huán)境變量,不要采用在程序設(shè)置環(huán)境變量,血的教訓(xùn)啊,宕機(jī)!

TUXDIR=/home/admin/tuxedo10g

export TUXDIR

WSNADDR=//[ip]:[port]

export WSNADDR

WSINTOPPRE71=yes

export WSINTOPPRE71

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

export PATH

#找到動態(tài)鏈接庫的路徑

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TUXDIR/lib

export LD_LIBRARY_PATH

C編程中的TUXEDO

如果要教程,請去CSDN下載頻道下載,我的積分不夠了http://download.csdn.net/source/2067895

簡單的來說,要用tuxedo編程只需要進(jìn)行下面的步驟:

1.tpinit();//連接服務(wù)器,獲取應(yīng)用上下文

2.tpalloc();//申請用于通訊的空間地址

3.tpcall();//進(jìn)行SOCKET連接,并同步獲取返回信息

4.tpfree();//釋放由tpalloc申請的內(nèi)存地址

5.tpterm();//斷開服務(wù)器連接

建議看oracle英文原版的函數(shù)說明,里面有很多特殊用法、調(diào)用注意事項(xiàng)和優(yōu)化方案.http://download.oracle.com/docs/cd/E13203_01/tuxedo/tux80/atmi/rf3c53.htm

編譯TUXEDO的C程序

C程序?qū)懞昧?#xff0c;當(dāng)然還需要編譯。如果是單純C語言寫的tuxedo客戶端,編譯的時(shí)候只需要libwsc.so,libbuft.so,libgpnet.so,libfml.so,libfml32.so,libengine.so,libdl.so,libpthread.so這些動態(tài)庫文件在${TUXDIR}/lib目錄下,頭文件在${TUXDIR}/include目錄下。

另外,linux系統(tǒng)還需要鏈接/usr/lib/libcrypt.a加密靜態(tài)庫

以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

結(jié)果就是得到我們jni調(diào)用所需要的動態(tài)庫文件libpbctuxedosend.so.1.0將它拷貝成libpbctuxedosend.so就得到我們jni調(diào)用所需要的動態(tài)庫。

實(shí)例演練C

Pbctuxedosend.c

頭文件,必須包含

#include ??????? /* TUXEDO? Header File */

//申請了tpinit結(jié)構(gòu)對象

TPCONTEXT_T? ctxt;

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

//設(shè)置為多會話模式

tpinitbuf->flags = TPMULTICONTEXTS;

//加入服務(wù)器多會話上下文

tpinit((TPINIT *)tpinitbuf)

//申請通訊用內(nèi)存地址

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

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

//使用內(nèi)存拷貝將發(fā)送報(bào)文置入發(fā)送內(nèi)存

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

//調(diào)用tpcall與服務(wù)器進(jìn)行同步通訊

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

//釋放資源

tpfree(sendbuf);

tpfree(rcvbuf);

tpfree((char *)tpinitbuf);

//斷開連接

tpterm();

(需要C完整源文件請聯(lián)系我,這邊發(fā)不了附件,上傳不了圖像。。。不知道為什么)

實(shí)例演練JNI

/**

* 調(diào)用封裝的Tuxedo庫函數(shù)類,演示用

* @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);

}

總結(jié)

以上是生活随笔為你收集整理的java调用tuxedo中间件_初探TUXEDO中间件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。