求助,JNI调用TUXEDO报错

发布于 2022-08-18 11:55:11 字数 6475 浏览 14 评论 2

求助,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 buffern");
      tpterm();
      return -102;
    }
   
    (void) strcpy(sendbuf, sendjstr);
   
    if((rcvbuf = (char *) tpalloc("STRING", NULL, rcvlen)) == NULL) {
                (void) fprintf(stderr, "nError allocating receive buffern");
                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 MIDDBn");
                (void) fprintf(stderr, "nTperrno = %dn", 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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

红ご颜醉 2022-08-25 01:20:32

这样的JNI,也不支持并发吧?

残月升风 2022-08-21 14:07:58

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

license有问题吧?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文