hgomez 01/05/03 07:40:56 Added: proposals/web-connector/native/jni Makefile.nw Makefile.solaris jk_jnicb.c jk_jnicb.exp jk_jnicb.h jni_connect.dsp jni_connect.dsw Log: jni stuff Revision Changes Path 1.1 jakarta-tomcat/proposals/web-connector/native/jni/Makefile.nw Index: Makefile.nw =================================================================== .SILENT: NLM_NAME=jni_conn JDKPATH=k:\jdk\jdk-1_2_2 NOVELLNDK=r:\nwsdk METROWERKSPATH=k:\mw\5.3 CC=$(METROWERKSPATH)\bin\mwccnlm LINK=$(METROWERKSPATH)\bin\mwldnlm JK_OBJS=\ jk_map.obj \ jk_pool.obj \ jk_util.obj \ jk_jnicb.obj \ jk_nwmain.obj \ all: $(NLM_NAME).nlm $(NLM_NAME).nlm: $(JK_OBJS) link.opt @echo Linking $@ @$(LINK) @link.opt %.obj: %.c cc.opt @echo Compiling $< @$(CC) $< -o=$(@F) @cc.opt %.obj: ../common/%.c cc.opt @echo Compiling $< @$(CC) $< -o=$(@F) @cc.opt cc.opt: Makefile.nw -@del cc.opt 2> NUL @echo Generating $@ @echo -nosyspath -ext obj -c -align 1 -w nocmdline -bool on >> $@ ifdef DEBUG @echo -g >> $@ endif @echo -I$(NOVELLNDK)\include\nlm >> $@ @echo -I$(NOVELLNDK)\include >> $@ @echo -I. >> $@ @echo -I..\common >> $@ @echo -I$(METROWERKSPATH)\include >> $@ @echo -I$(JDKPATH)\include >> $@ @echo -I$(JDKPATH)\include\netware >> $@ @echo -DN_PLAT_NLM >> $@ @echo -DNETWARE >> $@ @echo -DXP_NETWARE >> $@ link.opt: Makefile.nw -@del link.opt 2> NUL -@del link.def 2> NUL @echo -warnings off >> $@ @echo -zerobss >> $@ @echo -desc "JNI Natives for Tomcat" >> $@ @echo -o $(NLM_NAME).nlm >> $@ @echo -screenname "System Console" >> $@ @echo -nlmversion 0,1,0 >> $@ ifdef DEBUG @echo -g >> $@ @echo -sym internal >> $@ @echo -sym codeview4 >> $@ @echo -osym $(NLM_NAME).sym >> $@ endif @echo -nodefaults >> $@ @echo -map $(NLM_NAME).map >> $@ @echo -threadname "JK_JNI Thread" >> $@ @echo -stacksize 64000 >> $@ @echo $(METROWERKSPATH)\lib\nwpre.obj $(strip $(JK_OBJS)) >> $@ @echo -commandfile link.def >> $@ @echo module nsapi >> link.def @echo Import @$(NOVELLNDK)\imports\clib.imp >> link.def @echo Import @$(NOVELLNDK)\imports\lib0.imp >> link.def @echo Import @$(NOVELLNDK)\imports\nlmlib.imp >> link.def @echo Import @$(NOVELLNDK)\imports\threads.imp >> link.def @echo Import @$(NOVELLNDK)\imports\socklib.imp >> link.def @echo Export @jk_jnicb.exp >> link.def clean: -@del *.obj 2> NUL -@del *.map 2> NUL -@del link.* 2> NUL -@del cc.opt 2> NUL -@del *.nlm 2> NUL -@del *.sym 2> NUL 1.1 jakarta-tomcat/proposals/web-connector/native/jni/Makefile.solaris Index: Makefile.solaris =================================================================== # Defines for example NSAPI programs running under SOLARIS CC_CMD=gcc -DSOLARIS -D_REENTRANT LD_SHAREDCMD=ld -G all: prepare: OS_TYPE=solaris INCLUDEDIR=../common JAVA_INCLUDE=$(JAVA_HOME)/include JK_OBJS = ../common/jk_map.o ../common/jk_util.o ../common/jk_pool.o jk_jnicb.o INCLUDE_FLAGS=-I$(INCLUDEDIR) -I$(JAVA_INCLUDE) -I$(JAVA_INCLUDE)/$(OS_TYPE) COMMON_DEFS=-Wall all: jni_connect.so jni_connect.so: $(JK_OBJS) $(MAKE) prepare $(LD_SHAREDCMD) $(JK_OBJS) -o jni_connect.so $(EXTRA_LDDEFINES) .c.o: $(CC_CMD) $(COMMON_DEFS) $(INCLUDE_FLAGS) -c $< clean: rm $(JK_OBJS) 1.1 jakarta-tomcat/proposals/web-connector/native/jni/jk_jnicb.c Index: jk_jnicb.c =================================================================== /* * Copyright (c) 1997-1999 The Java Apache Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgment: * "This product includes software developed by the Java Apache * Project for use in the Apache JServ servlet engine project * <http://java.apache.org/>." * * 4. The names "Apache JServ", "Apache JServ Servlet Engine" and * "Java Apache Project" must not be used to endorse or promote products * derived from this software without prior written permission. * * 5. Products derived from this software may not be called "Apache JServ" * nor may "Apache" nor "Apache JServ" appear in their names without * prior written permission of the Java Apache Project. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by the Java Apache * Project for use in the Apache JServ servlet engine project * <http://java.apache.org/>." * * THIS SOFTWARE IS PROVIDED BY THE JAVA APACHE PROJECT "AS IS" AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JAVA APACHE PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * * This software consists of voluntary contributions made by many * individuals on behalf of the Java Apache Group. For more information * on the Java Apache Project and the Apache JServ Servlet Engine project, * please see <http://java.apache.org/>. * */ /*************************************************************************** * Description: JNI callbacks implementation for the JNI in process adapter* * Author: Gal Shachor <[EMAIL PROTECTED]> * * Version: $Revision: 1.1 $ * ***************************************************************************/ #include "jk_jnicb.h" #include "jk_service.h" #include "jk_util.h" #include "jk_pool.h" /* * Class: org_apache_tomcat_service_connector_JNIConnectionHandler * Method: getNumberOfHeaders * Signature: (JJ)I */ JNIEXPORT jint JNICALL Java_org_apache_tomcat_service_connector_JNIConnectionHandler_getNumberOfHeaders (JNIEnv *env, jobject o, jlong s, jlong l) { /* [V] Convert indirectly from jlong -> int -> pointer to shut up gcc */ /* I hope it's okay on other compilers and/or machines... */ jk_ws_service_t *ps = (jk_ws_service_t *)(int)s; jk_logger_t *pl = (jk_logger_t *)(int)l; jk_log(pl, JK_LOG_DEBUG, "Into JNIConnectionHandler::getNumberOfHeaders\n"); if(!ps) { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::getNumberOfHeaders, NULL ws service object\n"); /* [V] JNIConnectionHandler doesn't handle this */ return -1; } jk_log(pl, JK_LOG_DEBUG, "Done JNIConnectionHandler::getNumberOfHeaders, found %d headers\n", ps->num_headers); return (jint)ps->num_headers; } /* * Class: org_apache_tomcat_service_connector_JNIConnectionHandler * Method: read * Signature: (JJ[BII)I */ JNIEXPORT jint JNICALL Java_org_apache_tomcat_service_connector_JNIConnectionHandler_read (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 = -1; jboolean iscommit; jbyte *nbuf; unsigned nfrom = (unsigned)from; unsigned ncnt = (unsigned)cnt; unsigned acc = 0; jk_log(pl, JK_LOG_DEBUG, "Into JNIConnectionHandler::read\n"); if(!ps) { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::read, NULL ws service object\n"); return -1; } nbuf = (*env)->GetByteArrayElements(env, buf, &iscommit); if(!nbuf) { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::read, GetByteArrayElements error\n"); return -1; } if(!ps->read(ps, nbuf + nfrom, ncnt, &acc)) { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::read, failed to read from web server\n"); } else { rc = (jint)acc; } (*env)->ReleaseByteArrayElements(env, buf, nbuf, 0); jk_log(pl, JK_LOG_DEBUG, "Done JNIConnectionHandler::read\n"); return rc; } /* * Class: org_apache_tomcat_service_connector_JNIConnectionHandler * Method: readEnvironment * Signature: (JJ[Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_org_apache_tomcat_service_connector_JNIConnectionHandler_readEnvironment (JNIEnv *env, jobject o, jlong s, jlong l, jobjectArray envbuf) { jk_ws_service_t *ps = (jk_ws_service_t *)(int)s; jk_logger_t *pl = (jk_logger_t *)(int)l; char port[10]; jk_log(pl, JK_LOG_DEBUG, "Into JNIConnectionHandler::readEnvironment. Environment follows --->\n"); if(!ps) { jk_log(pl, JK_LOG_ERROR, "In JNIConnectionHandler::readEnvironment, NULL ws service object\n"); return JK_FALSE; } sprintf(port, "%d", ps->server_port); if(ps->method) { (*env)->SetObjectArrayElement(env, envbuf, 0, (*env)->NewStringUTF(env, ps->method)); jk_log(pl, JK_LOG_DEBUG, "---> method: %s\n", ps->method); } if(ps->req_uri) { (*env)->SetObjectArrayElement(env, envbuf, 1, (*env)->NewStringUTF(env, ps->req_uri)); jk_log(pl, JK_LOG_DEBUG, "---> req_uri: %s\n", ps->req_uri); } if(ps->query_string) { (*env)->SetObjectArrayElement(env, envbuf, 2, (*env)->NewStringUTF(env, ps->query_string)); jk_log(pl, JK_LOG_DEBUG, "---> query_string: %s\n", ps->query_string); } if(ps->remote_addr) { (*env)->SetObjectArrayElement(env, envbuf, 3, (*env)->NewStringUTF(env, ps->remote_addr)); jk_log(pl, JK_LOG_DEBUG, "---> remote_addr: %s\n", ps->remote_addr); } if(ps->remote_host) { (*env)->SetObjectArrayElement(env, envbuf, 4, (*env)->NewStringUTF(env, ps->remote_host)); jk_log(pl, JK_LOG_DEBUG, "---> remote_host: %s\n", ps->remote_host); } if(ps->server_name) { (*env)->SetObjectArrayElement(env, envbuf, 5, (*env)->NewStringUTF(env, ps->server_name)); jk_log(pl, JK_LOG_DEBUG, "---> server_name: %s\n", ps->server_name); } (*env)->SetObjectArrayElement(env, envbuf, 6, (*env)->NewStringUTF(env, port)); jk_log(pl, JK_LOG_DEBUG, "---> server_port: %s\n", port); if(ps->auth_type) { (*env)->SetObjectArrayElement(env, envbuf, 7, (*env)->NewStringUTF(env, ps->auth_type)); jk_log(pl, JK_LOG_DEBUG, "---> auth_type: %s\n", ps->auth_type); } if(ps->remote_user) { (*env)->SetObjectArrayElement(env, envbuf, 8, (*env)->NewStringUTF(env, ps->remote_user)); jk_log(pl, JK_LOG_DEBUG, "---> remote_user: %s\n", ps->remote_user); } if(ps->is_ssl) { (*env)->SetObjectArrayElement(env, envbuf, 9, (*env)->NewStringUTF(env, "https")); } else { (*env)->SetObjectArrayElement(env, envbuf, 9, (*env)->NewStringUTF(env, "http")); } jk_log(pl, JK_LOG_DEBUG, "---> is_ssl: %s\n", ps->is_ssl ? "yes" : "no"); if(ps->protocol) { (*env)->SetObjectArrayElement(env, envbuf, 10, (*env)->NewStringUTF(env, ps->protocol)); jk_log(pl, JK_LOG_DEBUG, "---> protocol: %s\n", ps->protocol); } if(ps->server_software) { (*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_service_connector_JNIConnectionHandler * Method: readHeaders * Signature: (JJ[Ljava/lang/String;[Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_org_apache_tomcat_service_connector_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_service_connector_JNIConnectionHandler * Method: startReasponse * Signature: (JJILjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)I */ JNIEXPORT jint JNICALL Java_org_apache_tomcat_service_connector_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_service_connector_JNIConnectionHandler * Method: write * Signature: (JJ[BII)I */ JNIEXPORT jint JNICALL Java_org_apache_tomcat_service_connector_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; } 1.1 jakarta-tomcat/proposals/web-connector/native/jni/jk_jnicb.exp Index: jk_jnicb.exp =================================================================== Java_org_apache_tomcat_service_connector_JNIConnectionHandler_getNumberOfHeaders, Java_org_apache_tomcat_service_connector_JNIConnectionHandler_read, Java_org_apache_tomcat_service_connector_JNIConnectionHandler_readEnvironment, Java_org_apache_tomcat_service_connector_JNIConnectionHandler_readHeaders, Java_org_apache_tomcat_service_connector_JNIConnectionHandler_startReasponse, Java_org_apache_tomcat_service_connector_JNIConnectionHandler_write 1.1 jakarta-tomcat/proposals/web-connector/native/jni/jk_jnicb.h Index: jk_jnicb.h =================================================================== /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class org_apache_tomcat_service_connector_JNIConnectionHandler */ #ifndef _Included_org_apache_tomcat_service_connector_JNIConnectionHandler #define _Included_org_apache_tomcat_service_connector_JNIConnectionHandler #ifdef __cplusplus extern "C" { #endif /* * Class: org_apache_tomcat_service_connector_JNIConnectionHandler * Method: getNumberOfHeaders * Signature: (JJ)I */ JNIEXPORT jint JNICALL Java_org_apache_tomcat_service_connector_JNIConnectionHandler_getNumberOfHeaders (JNIEnv *, jobject, jlong, jlong); /* * Class: org_apache_tomcat_service_connector_JNIConnectionHandler * Method: read * Signature: (JJ[BII)I */ JNIEXPORT jint JNICALL Java_org_apache_tomcat_service_connector_JNIConnectionHandler_read (JNIEnv *, jobject, jlong, jlong, jbyteArray, jint, jint); /* * Class: org_apache_tomcat_service_connector_JNIConnectionHandler * Method: readEnvironment * Signature: (JJ[Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_org_apache_tomcat_service_connector_JNIConnectionHandler_readEnvironment (JNIEnv *, jobject, jlong, jlong, jobjectArray); /* * Class: org_apache_tomcat_service_connector_JNIConnectionHandler * Method: readHeaders * Signature: (JJ[Ljava/lang/String;[Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_org_apache_tomcat_service_connector_JNIConnectionHandler_readHeaders (JNIEnv *, jobject, jlong, jlong, jobjectArray, jobjectArray); /* * Class: org_apache_tomcat_service_connector_JNIConnectionHandler * Method: startReasponse * Signature: (JJILjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)I */ JNIEXPORT jint JNICALL Java_org_apache_tomcat_service_connector_JNIConnectionHandler_startReasponse (JNIEnv *, jobject, jlong, jlong, jint, jstring, jobjectArray, jobjectArray, jint); /* * Class: org_apache_tomcat_service_connector_JNIConnectionHandler * Method: write * Signature: (JJ[BII)I */ JNIEXPORT jint JNICALL Java_org_apache_tomcat_service_connector_JNIConnectionHandler_write (JNIEnv *, jobject, jlong, jlong, jbyteArray, jint, jint); #ifdef __cplusplus } #endif #endif 1.1 jakarta-tomcat/proposals/web-connector/native/jni/jni_connect.dsp Index: jni_connect.dsp =================================================================== # Microsoft Developer Studio Project File - Name="jni_connect" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=jni_connect - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "jni_connect.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "jni_connect.mak" CFG="jni_connect - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "jni_connect - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "jni_connect - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "jni_connect - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "release" # PROP Intermediate_Dir "release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JNI_CONNECT_EXPORTS" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\common" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JNI_CONNECT_EXPORTS" /YX /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 !ELSEIF "$(CFG)" == "jni_connect - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "debug" # PROP Intermediate_Dir "debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JNI_CONNECT_EXPORTS" /YX /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\jk" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JNI_CONNECT_EXPORTS" /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "jni_connect - Win32 Release" # Name "jni_connect - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\jk_jnicb.c # End Source File # Begin Source File SOURCE=..\common\jk_map.c # End Source File # Begin Source File SOURCE=..\common\jk_pool.c # End Source File # Begin Source File SOURCE=..\common\jk_util.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=..\common\jk_ajp12_worker.h # End Source File # Begin Source File SOURCE=..\common\jk_global.h # End Source File # Begin Source File SOURCE=.\jk_jnicb.h # End Source File # Begin Source File SOURCE=..\common\jk_logger.h # End Source File # Begin Source File SOURCE=..\common\jk_map.h # End Source File # Begin Source File SOURCE=..\common\jk_pool.h # End Source File # Begin Source File SOURCE=..\common\jk_service.h # End Source File # Begin Source File SOURCE=..\common\jk_util.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project 1.1 jakarta-tomcat/proposals/web-connector/native/jni/jni_connect.dsw Index: jni_connect.dsw =================================================================== Microsoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "jni_connect"=.\jni_connect.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ###############################################################################