⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jk_jnicb.c

📁 jboss与apache集成的中间件,详情请参看文档说明.
💻 C
📖 第 1 页 / 共 2 页
字号:
            (*env)->SetObjectArrayElement(env,                                          envbuf,                                          14,                                          (*env)->NewStringUTF(env,                                                               ps->                                                               ssl_session));            jk_log(pl, JK_LOG_DEBUG, "---> ssl_session: %s\n",                   ps->ssl_session);        }    }    jk_log(pl, JK_LOG_DEBUG, "Done JNIConnectionHandler::readEnvironment\n");    return JK_TRUE;}/* * Class:     org_apache_tomcat_modules_server_JNIConnectionHandler * Method:    readHeaders * Signature: (JJ[Ljava/lang/String;[Ljava/lang/String;)I */JNIEXPORT jint JNICALL    Java_org_apache_tomcat_modules_server_JNIConnectionHandler_readHeaders    (JNIEnv * env, jobject o, jlong s, jlong l, jobjectArray hnames,     jobjectArray hvalues){    jk_ws_service_t *ps = (jk_ws_service_t *)(int)s;    jk_logger_t *pl = (jk_logger_t *)(int)l;    unsigned i;    jk_log(pl, JK_LOG_DEBUG, "Into JNIConnectionHandler::readHeaders\n");    if (!ps) {        jk_log(pl, JK_LOG_ERROR,               "In JNIConnectionHandler::readHeaders, NULL ws service object\n");        return JK_FALSE;    }    jk_log(pl, JK_LOG_DEBUG,           "In JNIConnectionHandler::readHeaders, %d headers follow --->\n",           ps->num_headers);    for (i = 0; i < ps->num_headers; i++) {        (*env)->SetObjectArrayElement(env,                                      hnames,                                      i,                                      (*env)->NewStringUTF(env,                                                           ps->                                                           headers_names[i]));        (*env)->SetObjectArrayElement(env, hvalues, i,                                      (*env)->NewStringUTF(env,                                                           ps->                                                           headers_values                                                           [i]));        jk_log(pl, JK_LOG_DEBUG, "---> %s = %s\n", ps->headers_names[i],               ps->headers_values[i]);    }    jk_log(pl, JK_LOG_DEBUG, "Done JNIConnectionHandler::readHeaders\n");    return JK_TRUE;}/* * Class:     org_apache_tomcat_modules_server_JNIConnectionHandler * Method:    startReasponse * Signature: (JJILjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)I */JNIEXPORT jint JNICALL    Java_org_apache_tomcat_modules_server_JNIConnectionHandler_startReasponse    (JNIEnv * env, jobject o, jlong s, jlong l,     jint sc, jstring msg, jobjectArray hnames, jobjectArray hvalues,     jint hcnt){    jk_ws_service_t *ps = (jk_ws_service_t *)(int)s;    jk_logger_t *pl = (jk_logger_t *)(int)l;    const char *nmsg = NULL;    char **nhnames = NULL;    char **nhvalues = NULL;    jstring *shnames = NULL;    jstring *shvalues = NULL;    int i = 0;    int ok = JK_TRUE;    jk_log(pl, JK_LOG_DEBUG, "Into JNIConnectionHandler::startReasponse\n");    if (!ps) {        jk_log(pl, JK_LOG_ERROR,               "In JNIConnectionHandler::startReasponse, NULL ws service object\n");        return JK_FALSE;    }    jk_log(pl, JK_LOG_DEBUG,           "In JNIConnectionHandler::startReasponse, %d headers follow --->\n",           hcnt);    if (hcnt) {        ok = JK_FALSE;        nhnames = (char **)jk_pool_alloc(ps->pool, hcnt * sizeof(char *));        nhvalues = (char **)jk_pool_alloc(ps->pool, hcnt * sizeof(char *));        shnames = (jstring *) jk_pool_alloc(ps->pool, hcnt * sizeof(jstring));        shvalues =            (jstring *) jk_pool_alloc(ps->pool, hcnt * sizeof(jstring));        if (nhvalues && nhnames && shnames && shnames) {            for (; i < hcnt; i++) {                jboolean iscommit;                shvalues[i] = shnames[i] = NULL;                nhnames[i] = nhvalues[i] = NULL;                shnames[i] = (*env)->GetObjectArrayElement(env, hnames, i);                shvalues[i] = (*env)->GetObjectArrayElement(env, hvalues, i);                if (!shvalues[i] || !shnames[i]) {                    jk_log(pl, JK_LOG_ERROR,                           "In JNIConnectionHandler::startReasponse, GetObjectArrayElement error\n");                    break;                }                nhnames[i] =                    (char *)(*env)->GetStringUTFChars(env, shnames[i],                                                      &iscommit);                nhvalues[i] =                    (char *)(*env)->GetStringUTFChars(env, shvalues[i],                                                      &iscommit);                if (!nhvalues[i] || !nhnames[i]) {                    jk_log(pl, JK_LOG_ERROR,                           "In JNIConnectionHandler::startReasponse, GetStringUTFChars error\n");                    break;                }                jk_log(pl, JK_LOG_DEBUG, "---> %s=%s\n", nhnames[i],                       nhvalues[i]);            }            if (i == hcnt) {                ok = JK_TRUE;                jk_log(pl, JK_LOG_DEBUG,                       "In JNIConnectionHandler::startReasponse. ----- End headers.\n",                       hcnt);            }        }        else {            jk_log(pl, JK_LOG_ERROR,                   "In JNIConnectionHandler::startReasponse, memory allocation error\n");        }    }    if (msg && ok) {        jboolean iscommit;        nmsg = (*env)->GetStringUTFChars(env, msg, &iscommit);        if (!nmsg) {            ok = JK_FALSE;        }    }    if (ok) {        if (!ps->            start_response(ps, sc, nmsg, (const char **)nhnames,                           (const char **)nhvalues, hcnt)) {            ok = JK_FALSE;            jk_log(pl, JK_LOG_ERROR,                   "In JNIConnectionHandler::startReasponse, servers startReasponse failed\n");        }    }    if (nmsg) {        (*env)->ReleaseStringUTFChars(env, msg, nmsg);    }    if (i < hcnt) {        i++;    }    if (nhvalues) {        int j;        for (j = 0; j < i; j++) {            if (nhvalues[j]) {                (*env)->ReleaseStringUTFChars(env, shvalues[j], nhvalues[j]);            }        }    }    if (nhnames) {        int j;        for (j = 0; j < i; j++) {            if (nhnames[j]) {                (*env)->ReleaseStringUTFChars(env, shnames[j], nhnames[j]);            }        }    }    jk_log(pl, JK_LOG_DEBUG, "Done JNIConnectionHandler::startReasponse.\n");    return ok;}/* * Class:     org_apache_tomcat_modules_server_JNIConnectionHandler * Method:    write * Signature: (JJ[BII)I */JNIEXPORT jint JNICALL    Java_org_apache_tomcat_modules_server_JNIConnectionHandler_write    (JNIEnv * env, jobject o, jlong s, jlong l, jbyteArray buf, jint from,     jint cnt){    jk_ws_service_t *ps = (jk_ws_service_t *)(int)s;    jk_logger_t *pl = (jk_logger_t *)(int)l;    jint rc = JK_FALSE;    jboolean iscommit;    jbyte *nbuf;    unsigned nfrom = (unsigned)from;    unsigned ncnt = (unsigned)cnt;    jk_log(pl, JK_LOG_DEBUG, "In JNIConnectionHandler::write\n");    if (!ps) {        jk_log(pl, JK_LOG_ERROR,               "In JNIConnectionHandler::write, NULL ws service object\n");        return JK_FALSE;    }    nbuf = (*env)->GetByteArrayElements(env, buf, &iscommit);    if (!nbuf) {        jk_log(pl, JK_LOG_ERROR,               "In JNIConnectionHandler::write, GetByteArrayElements error\n");        return JK_FALSE;    }    if (!ps->write(ps, nbuf + nfrom, ncnt)) {        jk_log(pl, JK_LOG_ERROR,               "In JNIConnectionHandler::write, failed to write to the web server\n");    }    else {        rc = (jint) JK_TRUE;    }    (*env)->ReleaseByteArrayElements(env, buf, nbuf, JNI_ABORT);    return rc;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -