求助,JNI调用TUXEDO报错_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3580 | 回复: 1   主题: 求助,JNI调用TUXEDO报错        下一篇 
pojiqi1
注册用户
等级:新兵
经验:61
发帖:5
精华:0
注册:2013-3-7
状态:离线
发送短消息息给pojiqi1 加好友    发送短消息息给pojiqi1 发消息
发表于: IP:您无权察看 2014-9-26 10:28:50 | [全部帖] [楼主帖] 楼主

求助,JNI调用TUXEDO报错

麻烦大家帮忙看看

 103225.cbly03!?proc.438306.1.0: 07-24-2009: Tuxedo Version 8.1, 32-bit

103225.cbly03!?proc.438306.1.0: GP_CAT:1561: ERROR: Problem with license file /tuxedo/tuxedo8.1/udataobj/lic.txt

103225.cbly03!?proc.438306.1.0: LIBTUX_CAT:6031: ERROR: Unable to pre-process buffer before tranmission.  Error code(4/3606)

103225.cbly03!?proc.438306.1.0: LIBWSC_CAT:1045: ERROR: Presend on message failed

103225.cbly03!?proc.438306.1.0: LIBWSC_CAT:1011: ERROR: tpcall() message send failure

我是在AIX5.2 上装的TUXDO8.1,是用C 的maikefile调用.so文件没有问题,用JNI调用就报这个错

xlc -c testconnect.c -I$TUXDIR/include -I/usr/java14/include

xlc -G -o libct.so testconnect.o -L${TUXDIR}/lib -I$TUXDIR/include -lwsc -lbuft -lwsc -lgpnet -lfml -lfml32 -lengine -lpthread

下面是我C文件调用的部分

JNIEXPORT jint JNICALL Java_testconnect_send_1recv(JNIEnv * env, jobject obj)

{

    char * sendbuf;

    char * rcvbuf;

    int sendlen;

    long rcvlen;

    int ret;

    jfieldID commStringfid;

    TPINIT * tpinfo = NULL;

    char * sendjstr;

    int tmpi;

    tuxputenv("WSNADDR=//192.168.221.105:4444");

    printf("wsnaddr=[%s]\n", tuxgetenv("WSNADDR"));

    tpinfo = (TPINIT *)tpalloc("TPINIT", NULL, TPINITNEED(32));

    if(tpinfo != NULL)

    {

    tpinfo->datalen = 0;

    sprintf(tpinfo->usrname, "");

    sprintf((char*) &(tpinfo->data), "");

    sprintf(tpinfo->cltname, "");

    sprintf(tpinfo->passwd, "");

    tpinfo->flags = TPU_IGN | TPSA_FASTPATH;

    }

    else {

    (void)fprintf(stderr, "\nERROR: tpalloc failed (%s)\n", tpstrerror(tperrno));

    tpterm();

    return -101;

    }

    tmpi = tpinit(tpinfo);

    printf("tpinit(tpinfo)=[%d]\n", tmpi);

    if (tmpi == -1)

    {

    (void)fprintf(stderr, "\nERROR: tpalloc failed (%s)\n", tpstrerror(tperrno));

    tpfree((char *)tpinfo);

    tpterm();

    return -101;

    }

    sendjstr = "339 0000@INQ A0005 TYUIO userid=A0005|brchno=9901|tmnlno=A005|prcscd=@INQ|RGCD=9901|TSRG=9901|SVID=A005|USID=A0005|PRID=@INQ|";

    sendlen = strlen(sendjstr);

    if((sendbuf = (char *) tpalloc("STRING", NULL, sendlen + 1)) == NULL) {

    (void) fprintf(stderr, "\nError allocating send buffer\n");

    tpterm();

    return -102;

    }

    (void) strcpy(sendbuf, sendjstr);

    if((rcvbuf = (char *) tpalloc("STRING", NULL, rcvlen)) == NULL) {

    (void) fprintf(stderr, "\nError allocating receive buffer\n");

    tpfree(sendbuf);

    tpterm();

    return -103;

    }

    printf("sendbuf=[%s],sendlen=[%d]\n", sendbuf, sendlen);

    ret = tpcall("MIDDB", (char *)sendbuf, 0, (char **)&rcvbuf, &rcvlen, (long)0);

    if(ret == -1) {

    if (tperrno==TPETIME)

    ret=-105;

    else

    ret=-104;

    (void) fprintf(stderr, "\nCan't send request to service MIDDB\n");

    (void) fprintf(stderr, "\nTperrno = %d\n", tperrno);

    tpfree(sendbuf);

    tpfree(rcvbuf);

    tpterm();

    printf("ret=[%d]\n", ret);

    return ret;

    }

    if (commStringfid != 0)

    {

    (*env)->SetObjectField(env, obj, commStringfid, JNU_NewStringNative(env, rcvbuf));

    }

    printf("rcvbuf =[%s],rcvlen =[%d]\n", rcvbuf, rcvlen);

    tpfree(sendbuf);

    tpfree(rcvbuf);

    tpfree((char *)tpinfo);

    return ret;

}




赞(0)    操作        顶端 
koei123
注册用户
等级:大校
经验:4196
发帖:16
精华:0
注册:2011-7-21
状态:离线
发送短消息息给koei123 加好友    发送短消息息给koei123 发消息
发表于: IP:您无权察看 2014-9-29 11:50:38 | [全部帖] [楼主帖] 2  楼

如果开始报lic.txt错误,而C语言自己调动态库又成功的话:
1. 检查Tuxedo产品自己的共享库,是否都已在路径里;
2. 检查JVM的设置,是否有权访问得到那个lic.txt文件目录;



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论