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

📄 jk_jnicb.c

📁 Tomcat 4.1与WebServer集成组件的源代码包.
💻 C
📖 第 1 页 / 共 2 页
字号:
        (*env)->SetObjectArrayElement(env,                                       envbuf,                                       11,                                       (*env)->NewStringUTF(env, ps->server_software));        jk_log(pl, JK_LOG_DEBUG, "---> server_software: %s\n", ps->server_software);    }    if(ps->is_ssl) {        if(ps->ssl_cert) {            (*env)->SetObjectArrayElement(env,                                           envbuf,                                           12,                                           (*env)->NewStringUTF(env, ps->ssl_cert));            jk_log(pl, JK_LOG_DEBUG, "---> ssl_cert: %s\n", ps->ssl_cert);        }                if(ps->ssl_cipher) {            (*env)->SetObjectArrayElement(env,                                           envbuf,                                           13,                                           (*env)->NewStringUTF(env, ps->ssl_cipher));            jk_log(pl, JK_LOG_DEBUG, "---> ssl_cipher: %s\n", ps->ssl_cipher);        }        if(ps->ssl_session) {            (*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 + -