getHostByName() disabled in AccessLogInterceptor
Hi, attached you find a slightly modified version of the AccessLogInterceptor that I have recently submitted to this mailing list. The AccessLogInterceptor is generating log files in the style of Apache's request logs. The difference to the first version is that the log file styles common and combined are now by default using request.getRemoteAddr() (%a) and not request.getRemoteHost() (%h). The former turned out to be too slow in practice. I would appreciate if this could make it into the TomCat distribution. I would also offer to insert it into the CVS tree myself, if I could get an account. Thanks, Jochen AccessLogInterceptor.java
mod_jk portability
Hi. I compiled mod_jk (Tomcat 3.2.1) on a OSF1 alpha 5.1 (Compaq Tru64) using the Compaq cc, but got this warning that scares me a lot cc: Warning: ../jk/jk_msg_buff.c, line 88: In this statement, the expression printf(...) modifies the variable i more than once without an intervening sequence point. This behavior is undefined. (undefvarmod) printf(%s %d/%d/%d %x %x %x %x - %x %x %x %x - %x %x %x %x - %x %x %x %x\n, err, msg-pos, msg-len, msg-maxlen, so i tried to compile this little c program #include stdio.h int main() { unsigned int i = 0; printf(%x %x %x\n, i++, i++, i++); return 0; } on a few platforms. Here are the results Compaq cc on osf1 tru64 5.1 alpha: 0 0 0 (with the above mentioned compiler warning) GCC on the above: 0 1 2 GCC on Linux i386: 2 1 0 SGI cc on Irix 6.2 (good old beast): 0 0 0 Microsoft Visual C++ 6.0 on win2k: 0 0 0 This is the suspect code from jk_msg_buff.c /* * Simple marshaling code. */ /* XXX what's above this line can go to .h XXX */ void jk_b_dump(jk_msg_buf_t *msg, char *err) { int i=0; printf(%s %d/%d/%d %x %x %x %x - %x %x %x %x - %x %x %x %x - %x %x %x %x\n, err, msg-pos, msg-len, msg-maxlen, msg-buf[i++],msg-buf[i++],msg-buf[i++],msg-buf[i++], msg-buf[i++],msg-buf[i++],msg-buf[i++],msg-buf[i++], msg-buf[i++],msg-buf[i++],msg-buf[i++],msg-buf[i++], msg-buf[i++],msg-buf[i++],msg-buf[i++],msg-buf[i++]); i = msg-pos - 4; if(i 0) { i=0; } printf(%x %x %x %x - %x %x %x %x --- %x %x %x %x - %x %x %x %x\n, msg-buf[i++],msg-buf[i++],msg-buf[i++],msg-buf[i++], msg-buf[i++],msg-buf[i++],msg-buf[i++],msg-buf[i++], msg-buf[i++],msg-buf[i++],msg-buf[i++],msg-buf[i++], msg-buf[i++],msg-buf[i++],msg-buf[i++],msg-buf[i++]); } What's the purpose of this function? Can I get along with this odd behaviour? TIA. Regards, \mirko
RE: loader.html
OK, you've caught me. :-) The reason I wanted the doc is to do with the re-loader problem I'm having. I wanted to know if I'd configured the loader correctly Kevin Jones DevelopMentor www.develop.com -Original Message- From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]] Sent: 02 May 2001 02:59 To: [EMAIL PROTECTED] Subject: RE: loader.html On Tue, 1 May 2001, Kevin Jones wrote: webapps\ROOT\docs\config\context.html says Loader - Configure a class loader associated with this Context. where the HTML looks like this a href=loader.htmlLoader/a - Configure a class loader associated with this strongContext/strong Kevin Jones DevelopMentor www.develop.com OK, you've caught me. There are roughly four of these configuration doc files that have not been written yet (which is why I've left the bug report complaining about this open). I'll get to them soonest. Craig
cvs commit: jakarta-tomcat/proposals/web-connector - New directory
hgomez 01/05/03 06:45:42 jakarta-tomcat/proposals/web-connector - New directory
cvs commit: jakarta-tomcat/proposals/web-connector/native - New directory
hgomez 01/05/03 06:46:43 jakarta-tomcat/proposals/web-connector/native - New directory
cvs commit: jakarta-tomcat/proposals/web-connector/java - New directory
hgomez 01/05/03 06:46:58 jakarta-tomcat/proposals/web-connector/java - New directory
cvs commit: jakarta-tomcat/proposals/web-connector/doc - New directory
hgomez 01/05/03 06:47:13 jakarta-tomcat/proposals/web-connector/doc - New directory
cvs commit: jakarta-tomcat/proposals/web-connector/native README
hgomez 01/05/03 06:50:13 Added: proposals/web-connector/native README Log: Initial readme Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/README Index: README === README for web-connector $Id: README,v 1.1 2001/05/03 13:50:11 hgomez Exp $ Please see doc/mod_jk-howto.html for more verbose instructions * What is web-connector ? web-connector is a new project to release web-servers connector for the jakarta Tomcat servlet engine. This project didn't start from null since it reuse the latest code from mod_jk for the native parts and tomcat 3.3 for the java side of the force. From mod_jk we gain : * A connector (plugin) for many Web Server, including Apache HTTP Server, Netscape/IPLanet NES and Microsoft IIS It also support JNI (and seems to used at least by IBM under AS/400 for Apache/WebSphere connectivity). * Fault-tolerance and load-balancing. mod_jk use the concept of workers which handle a particular request, and a special worker , the lb worker, is a group (cluster ?) of physical workers. * Direct access to Tomcat 3.2/3.3 servlet engine via ajp12/ajp13 protocol. * OK, then how do I build web-connector ? For Unix: Change to the apache1.3 or apache2.0 directory, depending on which version of Apache you are running. Execute ./build-unix.sh This script sets some environment variables and then calls Apache's apxs script to do the actual compile. If this doesn't work, please check the source for build-unix.sh. You may have to edit some variables. Alternately, you may have more luck with the makefiles. Execute them with e.g. make -f Makefile.linux mod_jk.so For Windows: [need more info feel free to contact me] * How do I install mod_jk.so? Copy mod_jk.so into your APACHE_HOME/libexec Add the following line to APACHE_HOME/conf/httpd.conf. Replace TOMCAT_HOME with the actual directory name. Include TOMCAT_HOME/conf/mod_jk.conf-auto That's it! When Tomcat starts, it automatically writes out mod_jk.conf-auto based on your server.xml settings. If this is inadequate for your needs, you can copy mod_jk.conf-auto to a new file called mod_jk.conf and then change httpd.conf to read Include TOMCAT_HOME/conf/mod_jk.conf Note that Tomcat must be started *before* Apache for mod_jk to initialize correctly. Since tomcat.sh start launches Tomcat in the background, you may have to do something like the following in your startup script: cd $TOMCAT_HOME/bin ./tomcat.sh start sleep 4 $APACHE_HOME/bin/apachectl start [Note: apachectl should be run as root, but Tomcat should be run as a local user; this means that the above script would lead to a security problem. Any suggestions to fix?] * Where do I report bugs/errors? See http://jakarta.apache.org/getinvolved/mail.html and http://jakarta.apache.org/bugs/index.html for information. --- Credits: mod_jk written by Gal Shachor and many others README and .sh scripts written by Alex Chaffee
cvs commit: jakarta-tomcat/proposals/web-connector/native/apache1.3 - New directory
hgomez 01/05/03 06:50:58 jakarta-tomcat/proposals/web-connector/native/apache1.3 - New directory
cvs commit: jakarta-tomcat/proposals/web-connector/native/apache2.0 - New directory
hgomez 01/05/03 06:51:01 jakarta-tomcat/proposals/web-connector/native/apache2.0 - New directory
cvs commit: jakarta-tomcat/proposals/web-connector/native/common - New directory
hgomez 01/05/03 06:51:03 jakarta-tomcat/proposals/web-connector/native/common - New directory
cvs commit: jakarta-tomcat/proposals/web-connector/native/netscape - New directory
hgomez 01/05/03 06:51:12 jakarta-tomcat/proposals/web-connector/native/netscape - New directory
cvs commit: jakarta-tomcat/proposals/web-connector/native/jni - New directory
hgomez 01/05/03 06:51:09 jakarta-tomcat/proposals/web-connector/native/jni - New directory
cvs commit: jakarta-tomcat/proposals/web-connector/native/nt_service - New directory
hgomez 01/05/03 06:51:15 jakarta-tomcat/proposals/web-connector/native/nt_service - New directory
cvs commit: jakarta-tomcat/proposals/web-connector/native/apache1.3 Makefile.freebsd Makefile.linux Makefile.nw README.hpux README.solaris build-hpux-cc.sh build-hpux.sh build-solaris.sh build-unix.sh install-unix.sh mod_jk.c mod_jk.dsp
hgomez 01/05/03 06:54:37 Added: proposals/web-connector/native/apache1.3 Makefile.freebsd Makefile.linux Makefile.nw README.hpux README.solaris build-hpux-cc.sh build-hpux.sh build-solaris.sh build-unix.sh install-unix.sh mod_jk.c mod_jk.dsp Log: Up to date mod_jk stuff for Apache 1.3 Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/apache1.3/Makefile.freebsd Index: Makefile.freebsd === ## You need to edit this file - configure later :-) APACHE_HOME=/usr/local/apache OS=freebsd APXS=${APACHE_HOME}/bin/apxs A13_FLAGS=-I${APACHE_HOME}/include ## I assume this one is set up already # JAVA_HOME= JAVA_INCL=-I${JAVA_HOME}/include -I${JAVA_HOME}/include/${OS} JAVA_LIB=-L${JAVA_HOME}/jre/lib/${ARCH} -L${JAVA_HOME}/lib/${ARCH}/native_threads CFLAGS=-DHAVE_CONFIG_H -g -fpic -DSHARED_MODULE -O2 -D_REENTRANT -pthread -DLINUX -Wall JK=../common/ SRCS=jk_ajp12_worker.c jk_connect.c jk_msg_buff.c jk_util.c jk_ajp13.c \ jk_jni_worker.c jk_pool.c jk_worker.c jk_ajp13_worker.c jk_lb_worker.c \ jk_sockbuf.c jk_map.c jk_uri_worker_map.c OBJS=${patsubst %.c,%.o,${SRCS}} %.o: ../common/%.c ${CC} -c ${CFLAGS} ${JAVA_INCL} ${A13_FLAGS} $ -o $@ .c.o: ${APXS} -c ${JAVA_INCL} -DFREEBSD ${A13_FLAGS} -I../common $ all: mod_jk.so mod_jk.so: ${OBJS} mod_jk.o $(APXS) -c -o mod_jk.so ${OBJS} mod_jk.o # $(CC) -shared -o mod_jk.so ${OBJS} mod_jk.o clean: rm *.o *.so 1.1 jakarta-tomcat/proposals/web-connector/native/apache1.3/Makefile.linux Index: Makefile.linux === ## You need to edit this file - configure later :-) ## I assume this one is set up already # JAVA_HOME= OS=linux JAVA_INCL=-I ${JAVA_HOME}/include -I ${JAVA_HOME}/include/${OS} JAVA_LIB=-L ${JAVA_HOME}/jre/lib/${ARCH} -L ${JAVA_HOME}/lib/${ARCH}/native_threads #ifndef APXS APXS=/usr/sbin/apxs #endif JK=../common/ SRCS=${JK}/jk_ajp12_worker.c ${JK}/jk_connect.c ${JK}/jk_msg_buff.c ${JK}/jk_util.c ${JK}/jk_ajp13.c \ ${JK}/jk_jni_worker.c ${JK}/jk_pool.c ${JK}/jk_worker.c ${JK}/jk_ajp13_worker.c ${JK}/jk_lb_worker.c \ ${JK}/jk_sockbuf.c ${JK}/jk_map.c ${JK}/jk_uri_worker_map.c all: mod_jk.so mod_jk.so: $(APXS) -I ${JK} ${JAVA_INCL} -c -o $@ mod_jk.c $(SRCS) clean: rm *.o *.so 1.1 jakarta-tomcat/proposals/web-connector/native/apache1.3/Makefile.nw Index: Makefile.nw === .SILENT: NLM_NAME=mod_jk JDKPATH=k:\jdk\jdk-1_2_2 NOVELLNDK=r:\nwsdk APACHE_HOME=d:\apache_1.3.12\src WINSOCK_INCDIR=k:\ws295sdk\include METROWERKSPATH=k:\mw\5.3 CC=$(METROWERKSPATH)\bin\mwccnlm LINK=$(METROWERKSPATH)\bin\mwldnlm JK_OBJS=\ jk_ajp12_worker.obj \ jk_ajp13.obj \ jk_ajp13_worker.obj \ jk_connect.obj \ jk_jni_worker.obj \ jk_lb_worker.obj \ jk_map.obj \ jk_msg_buff.obj \ jk_pool.obj \ jk_sockbuf.obj \ jk_uri_worker_map.obj \ jk_util.obj \ jk_worker.obj \ mod_jk.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 -I$(APACHE_HOME)\include $@ @echo -I$(APACHE_HOME)\os\netware $@ @echo -I$(WINSOCK_INCDIR) $@ @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 Apache 1.3 Plugin 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
cvs commit: jakarta-tomcat/proposals/web-connector/native/apache2.0 Makefile.linux build-unix.sh install-unix.sh mod_jk.c mod_jk.dsp
hgomez 01/05/03 06:56:20 Added: proposals/web-connector/native/apache2.0 Makefile.linux build-unix.sh install-unix.sh mod_jk.c mod_jk.dsp Log: Latest mod_jk stuff for Apache 2.0 Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/apache2.0/Makefile.linux Index: Makefile.linux === ## You need to edit this file - configure later :-) ## I assume this one is set up already # JAVA_HOME= OS=linux JAVA_INCL=-I ${JAVA_HOME}/include -I ${JAVA_HOME}/include/${OS} JAVA_LIB=-L ${JAVA_HOME}/jre/lib/${ARCH} -L ${JAVA_HOME}/lib/${ARCH}/native_threads # # I've built a RPM, named apache2 (ftp://ftp.falsehope.com/home/gomez/apache2/), # which postfix all apache2 stuff with 2, ie apxs = apxs2. # It will allow to have both apache 1.3 and 2.0 the same time on the system # #ifndef APXS APXS=/usr/sbin/apxs2 #endif JK=../common SRCS=${JK}/jk_ajp12_worker.c ${JK}/jk_connect.c ${JK}/jk_msg_buff.c ${JK}/jk_util.c ${JK}/jk_ajp13.c \ ${JK}/jk_jni_worker.c ${JK}/jk_pool.c ${JK}/jk_worker.c ${JK}/jk_ajp13_worker.c ${JK}/jk_lb_worker.c \ ${JK}/jk_sockbuf.c ${JK}/jk_map.c ${JK}/jk_uri_worker_map.c LSRCS=jk_ajp12_worker.c jk_connect.c jk_msg_buff.c jk_util.c jk_ajp13.c \ jk_jni_worker.c jk_pool.c jk_worker.c jk_ajp13_worker.c jk_lb_worker.c \ jk_sockbuf.c jk_map.c jk_uri_worker_map.c all: mod_jk.so mod_jk.so: $(APXS) -I ${JK} ${JAVA_INCL} -c -o mod_jk.la mod_jk.c $(SRCS) mv .libs/mod_jk.so . clean: rm -f *.o *.so *.lo *.la *.slo ${JK}/*.o ${JK}/*.so ${JK}/*.lo ${JK}/*.la ${JK}/*.slo rm -rf .libs 1.1 jakarta-tomcat/proposals/web-connector/native/apache2.0/build-unix.sh Index: build-unix.sh === #!/bin/sh # $Id: build-unix.sh,v 1.1 2001/05/03 13:56:16 hgomez Exp $ # build.sh for mod_jk.so # Usage: build-unix.sh # Sets a bunch of variables and calls APXS to build mod_jk # on Unix. An alternative to the makefiles, hopefully more portable. # Configure by changing the following variables: # JAVA_HOME is required, but it should be set in the environment, not here #JAVA_HOME=/usr/local/jdk1.2 # Where your apache lives if [ -z $APACHE_HOME ] then echo APACHE_HOME=/usr/local/apache APACHE_HOME=/usr/local/apache fi # name of subdir under JAVA_HOME/jre/lib ARCH=i386 CFLAGS=-DHAVE_CONFIG_H -g -fpic -DSHARED_MODULE -O2 -D_REENTRANT -pthread -DLINUX -Wall APXS=$APACHE_HOME/bin/apxs # Find JAVA_HOME if [ -z $JAVA_HOME ] then echo Please set JAVA_HOME exit 1 fi # Figure out INCLUDE directories # use find to pick the right include directories for current machine JAVA_INCLUDE=`find ${JAVA_HOME}/include -type d -printf \-I %p \` || echo find failed, edit build-unix.sh source to fix # if find fails, use (uncomment) the following instead, substituting your # platform for linux # JAVA_INCLUDE=-I ${JAVA_HOME}/include -I ${JAVA_HOME}/include/linux INCLUDE=-I ../common -I$APACHE_HOME/include/apr-util $JAVA_INCLUDE # SRC=mod_jk.c ../common/*.c SRC=*.c #echo INCLUDE=$INCLUDE #echo SRC=$SRC # Run APXS to compile module echo Compiling mod_jk cp ../common/*.c . $APXS -c -o mod_jk.so $INCLUDE $LIB $SRC # Copy mod_jk.so into the apache libexec directory echo Installing mod_jk.so into $APACHE_HOME/libexec cp mod_jk.so $APACHE_HOME/libexec # Done! echo Done. Install by running ./install-unix.sh 1.1 jakarta-tomcat/proposals/web-connector/native/apache2.0/install-unix.sh Index: install-unix.sh === #!/bin/sh # $Id: install-unix.sh,v 1.1 2001/05/03 13:56:17 hgomez Exp $ # install.sh for mod_jk.so # copies built mod_jk.so into apache/libexec dir # Usage: install-unix.sh # Sets a bunch of variables and calls APXS to install mod_jk # on Unix. An alternative to the makefiles, hopefully more portable. # Find APACHE_HOME if [ -z $APACHE_HOME ] then # Where your apache lives APACHE_HOME=/usr/local/apache fi # Copy mod_jk.so into the apache libexec directory echo Installing mod_jk.so into $APACHE_HOME/libexec cp mod_jk.so $APACHE_HOME/libexec # Done! echo Done. Add the following line to $APACHE_HOME/conf/httpd.conf: echo Include TOMCAT_HOME/conf/mod_jk.conf-auto echo '(replace TOMCAT_HOME with the actual directory name)' 1.1 jakarta-tomcat/proposals/web-connector/native/apache2.0/mod_jk.c Index: mod_jk.c === /* * Copyright (c) 1997-1999 The Java Apache Project.
cvs commit: jakarta-tomcat/proposals/web-connector/native/common jk_ajp12_worker.c jk_ajp12_worker.h
hgomez 01/05/03 06:59:16 Added: proposals/web-connector/native/common jk_ajp12_worker.c jk_ajp12_worker.h Log: ajp12 protocol handling Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/common/jk_ajp12_worker.c Index: jk_ajp12_worker.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: ajpv1.2 worker, used to call local or remote jserv hosts * * Author: Gal Shachor [EMAIL PROTECTED] * * Based on:jserv_ajpv12.c from Jserv * * Version: $Revision: 1.1 $ * ***/ #include jk_ajp12_worker.h #include jk_pool.h #include jk_connect.h #include jk_util.h #include jk_sockbuf.h #define AJP_DEF_HOST(localhost) #define AJP_DEF_PORT(8007) #define READ_BUF_SIZE (8*1024) #define DEF_RETRY_ATTEMPTS (1) struct ajp12_worker { struct sockaddr_in worker_inet_addr; unsigned connect_retry_attempts; char *name; jk_worker_t worker; }; typedef struct ajp12_worker ajp12_worker_t; struct ajp12_endpoint { ajp12_worker_t *worker; int sd; jk_sockbuf_t sb; jk_endpoint_t endpoint; }; typedef struct ajp12_endpoint ajp12_endpoint_t; static int ajpv12_mark(ajp12_endpoint_t *p, unsigned char type); static int ajpv12_sendstring(ajp12_endpoint_t *p, const char *buffer); static int ajpv12_sendint(ajp12_endpoint_t *p, int d); static int ajpv12_sendnbytes(ajp12_endpoint_t *p, const void *buffer, int bufferlen); static int ajpv12_flush(ajp12_endpoint_t *p); static int ajpv12_handle_response(ajp12_endpoint_t *p, jk_ws_service_t *s, jk_logger_t *l); static int
cvs commit: jakarta-tomcat/proposals/web-connector/native/common jk_ajp13.c jk_ajp13.h jk_ajp13_worker.c jk_ajp13_worker.h
hgomez 01/05/03 06:59:57 Added: proposals/web-connector/native/common jk_ajp13.c jk_ajp13.h jk_ajp13_worker.c jk_ajp13_worker.h Log: ajp13 protocol handling Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/common/jk_ajp13.c Index: jk_ajp13.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: Experimental bi-directionl protocol handler. * * Author: Gal Shachor [EMAIL PROTECTED] * * Version: $Revision: 1.1 $ * ***/ #include jk_global.h #include jk_util.h #include jk_ajp13.h /* * Conditional request attributes * */ #define SC_A_CONTEXT(unsigned char)1 #define SC_A_SERVLET_PATH (unsigned char)2 #define SC_A_REMOTE_USER(unsigned char)3 #define SC_A_AUTH_TYPE (unsigned char)4 #define SC_A_QUERY_STRING (unsigned char)5 #define SC_A_JVM_ROUTE (unsigned char)6 #define SC_A_SSL_CERT (unsigned char)7 #define SC_A_SSL_CIPHER (unsigned char)8 #define SC_A_SSL_SESSION(unsigned char)9 #define SC_A_REQ_ATTRIBUTE (unsigned char)10 #define SC_A_ARE_DONE (unsigned char)0xFF /* * Request methods, coded as numbers instead of strings. * The list of methods was taken from Section 5.1.1 of RFC 2616, * RFC 2518, and the ACL IETF draft. * Method= OPTIONS *| GET *| HEAD *| POST *| PUT *| DELETE *| TRACE *| PROPFIND *| PROPPATCH *| MKCOL *| COPY *| MOVE *| LOCK *| UNLOCK *| ACL * */ #define SC_M_OPTIONS
cvs commit: jakarta-tomcat/proposals/web-connector/native/common jk_connect.c jk_connect.h
hgomez 01/05/03 07:00:59 Added: proposals/web-connector/native/common jk_connect.c jk_connect.h Log: networks stuff (tcp/ip) Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/common/jk_connect.c Index: jk_connect.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: Socket/Naming manipulation functions * * Author: Gal Shachor [EMAIL PROTECTED] * * Based on:Various Jserv files* * Version: $Revision: 1.1 $ * ***/ #include jk_connect.h #include jk_util.h int jk_resolve(char *host, short port, struct sockaddr_in *rc) { int x; u_long laddr; rc-sin_port = htons((short)port); rc-sin_family = AF_INET; /* Check if we only have digits in the string */ for(x = 0 ; '\0' != host[x] ; x++) { if(!isdigit(host[x]) host[x] != '.') { break; } } if(host[x] != '\0') { /* If we found also characters we use gethostbyname()*/ struct hostent *hoste = gethostbyname(host); if(!hoste) { return JK_FALSE; } laddr = ((struct in_addr *)hoste-h_addr_list[0])-s_addr; } else { /* If we found only digits we use inet_addr() */ laddr = inet_addr(host); } memcpy((rc-sin_addr), laddr , sizeof(laddr)); return JK_TRUE; } int jk_open_socket(struct sockaddr_in *addr, int ndelay, jk_logger_t *l) { int sock; jk_log(l, JK_LOG_DEBUG, Into jk_open_socket\n); sock = socket(AF_INET, SOCK_STREAM, 0); if(sock -1) { int ret; /* Tries to connect to JServ (continues trying while error is EINTR) */ do { jk_log(l, JK_LOG_DEBUG, jk_open_socket, try to connect
TC4 B3 SSL: Error in SSLServerSocketFactory: initProxy()?
Dev environment: Win2K Pro, JDK1.3, TC4 B3, latest JSSE, openssl, apache 1.3.19 I don't have a connector for apache compiled on this platform yet, so I'm trying direct SSL on TOMCAT The JSSE seem to be properly setup: I have the JSSE in the CLASSPATH also under $JAVA_HOME\jre\lib\ext, and $CATALINA_HOME/server/lib, also registered the Provider in $JAVA_HOME\jre\lib\security\java.security Server.xml: Connector className=org.apache.catalina.connector.http.HttpConnector port=8443 minProcessors=5 maxProcessors=75 acceptCount=10 debug=0 scheme=https secure=true Factory className=org.apache.catalina.net.SSLServerSocketFactory clientAuth=false protocol=TLS keystorePass=administrator keystoreFile=c:\jdk\tomcat4-b3\conf\keystore keystoreType=JKS / /Connector I tried both openssl certificates and keytool generated ceritificates. I tried the code of SSLServerSocketFactory (initProxy) in a test class and it works fine, with or without Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); So it's not a JVM setup issue. Is there a problem with this JSSE? So what am I missing? Your help will be greatly appreciated!! PK - initProxy: java.security.NoSuchAlgorithmException: Class com.sun.net.ssl.intern al.ssl.SSLContextImpl configured for SSLContext not a SSLContext java.security.NoSuchAlgorithmException: Class com.sun.net.ssl.internal.ssl.SSLCo ntextImpl configured for SSLContext not a SSLContext at com.sun.net.ssl.b.a([DashoPro-V1.2-120198]) at com.sun.net.ssl.SSLContext.getInstance([DashoPro-V1.2-120198]) at org.apache.catalina.net.SSLServerSocketFactory.initProxy(SSLServerSoc ketFactory.java:385) at org.apache.catalina.net.SSLServerSocketFactory.initialize(SSLServerSo cketFactory.java:328) at org.apache.catalina.net.SSLServerSocketFactory.createSocket(SSLServer SocketFactory.java:281) at org.apache.catalina.connector.http.HttpConnector.open(HttpConnector.j ava:734) at org.apache.catalina.connector.http.HttpConnector.start(HttpConnector. java:888) at org.apache.catalina.core.StandardService.start(StandardService.java:3 60) at org.apache.catalina.core.StandardServer.start(StandardServer.java:458 ) at org.apache.catalina.startup.Catalina.start(Catalina.java:707) at org.apache.catalina.startup.Catalina.execute(Catalina.java:627) at org.apache.catalina.startup.Catalina.process(Catalina.java:177) at java.lang.reflect.Method.invoke(Native Method) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:177) Catalina.start: LifecycleException: HttpConnector[8443].open: java.io.IOExcept ion: java.security.NoSuchAlgorithmException: Class com.sun.net.ssl.internal.ssl. SSLContextImpl configured for SSLContext not a SSLContext LifecycleException: HttpConnector[8443].open: java.io.IOException: java.securi ty.NoSuchAlgorithmException: Class com.sun.net.ssl.internal.ssl.SSLContextImpl c onfigured for SSLContext not a SSLContext at org.apache.catalina.connector.http.HttpConnector.start(HttpConnector. java:890) at org.apache.catalina.core.StandardService.start(StandardService.java:3 60) at org.apache.catalina.core.StandardServer.start(StandardServer.java:458 ) at org.apache.catalina.startup.Catalina.start(Catalina.java:707) at org.apache.catalina.startup.Catalina.execute(Catalina.java:627) at org.apache.catalina.startup.Catalina.process(Catalina.java:177) at java.lang.reflect.Method.invoke(Native Method) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:177)
cvs commit: jakarta-tomcat/proposals/web-connector/native/common jk_nwmain.c
hgomez 01/05/03 07:30:44 Added: proposals/web-connector/native/common jk_nwmain.c Log: netware stuff Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/common/jk_nwmain.c Index: jk_nwmain.c === #ifdef NETWARE /* * NATIVE_MAIN */ /* * INCLUDES */ #include stdio.h #include nwthread.h #include netdb.h NETDB_DEFINE_CONTEXT /* * main () * * Main entry point -- don't do much more than I've provided * * Entry: * * Exit: *Nothing */ void main () { ExitThread (TSR_THREAD, 0); } #endif
cvs commit: jakarta-tomcat/proposals/web-connector/native/common jk_service.h
hgomez 01/05/03 07:32:00 Added: proposals/web-connector/native/common jk_service.h Log: jk service wrapper define Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/common/jk_service.h Index: jk_service.h === /* * 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: Definitions of the objects used during the service step. * * These are the web server (ws) the worker and the connection* * JVM connection point * * Author: Gal Shachor [EMAIL PROTECTED] * * Dan Milstein [EMAIL PROTECTED] * Version: $Revision: 1.1 $ * ***/ #ifndef JK_SERVICE_H #define JK_SERVICE_H #include jk_map.h #include jk_global.h #include jk_logger.h #include jk_pool.h #ifdef __cplusplus extern C { #endif /* __cplusplus */ struct jk_ws_service; struct jk_endpoint; struct jk_worker; typedef struct jk_ws_service jk_ws_service_t; typedef struct jk_endpoint jk_endpoint_t; typedef struct jk_worker jk_worker_t; /* * The web server service 'class'. An instance of this class is created * for each request which is forwarded from the web server to the servlet * container. Contains the basic information about the request * (e.g. protocol, req_uri, etc), and also contains a series of methods * which provide access to core web server functionality (start_response, * read, write). This class might be more accurately called ws_request. * * As with all the core jk classes, this is essentially an abstract base * class which is implemented/extended by classes which are specific to a * particular web server. By using an abstract base class in this manner, * workers can be written for different protocols (e.g. ajp12, ajp13) * without the workers having to worry about which web server they are * talking to. * * This particular OO-in-C system uses a
cvs commit: jakarta-tomcat/proposals/web-connector/native/common jk_sockbuf.c jk_sockbuf.h
hgomez 01/05/03 07:33:09 Added: proposals/web-connector/native/common jk_sockbuf.c jk_sockbuf.h Log: socket stuff Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/common/jk_sockbuf.c Index: jk_sockbuf.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: Simple buffer object to handle buffered socket IO * * Author: Gal Shachor [EMAIL PROTECTED] * * Version: $Revision: 1.1 $ * ***/ #include jk_global.h #include jk_sockbuf.h static int fill_buffer(jk_sockbuf_t *sb); int jk_sb_open(jk_sockbuf_t *sb, int sd) { if(sb sd 0) { sb-end = 0; sb-start = 0; sb-sd= sd; return JK_TRUE; } return JK_FALSE; } int jk_sb_write(jk_sockbuf_t *sb, const void *buf, unsigned sz) { if(sb buf sz) { if((SOCKBUF_SIZE - sb-end) = sz) { memcpy(sb-buf + sb-end, buf, sz); sb-end += sz; } else { if(!jk_sb_flush(sb)) { return JK_FALSE; } if(sz SOCKBUF_SIZE) { return (send(sb-sd, buf, sz, 0) == (int)sz); } memcpy(sb-buf + sb-end, buf, sz); sb-end += sz; } return JK_TRUE; } return JK_FALSE; } int jk_sb_flush(jk_sockbuf_t *sb) { if(sb) { int save_out = sb-end; sb-end = sb-start = 0; if(save_out) { return send(sb-sd, sb-buf, save_out, 0) == save_out; } return JK_TRUE; } return JK_FALSE; } int jk_sb_read(jk_sockbuf_t *sb, char **buf, unsigned sz, unsigned *ac) { if(sb buf ac) { unsigned avail; *ac = 0; *buf
cvs commit: jakarta-tomcat/proposals/web-connector/native/common jk_uri_worker_map.c jk_uri_worker_map.h
hgomez 01/05/03 07:36:13 Added: proposals/web-connector/native/common jk_uri_worker_map.c jk_uri_worker_map.h Log: uri stuff Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/common/jk_uri_worker_map.c Index: jk_uri_worker_map.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: URI to worker map object. * * Maps can be * * * * Exact Context - /exact/uri=worker e.g. /examples/do*=ajp12 * * Context Based - /context/*=worker e.g. /examples/*=ajp12 * * Context and suffix -/context/*.suffix=worker e.g. /examples/*.jsp=ajp12* * * * This lets us either partition the work among the web server and the * * servlet container. * * * * Author: Gal Shachor [EMAIL PROTECTED] * * Version: $Revision: 1.1 $ * ***/ #include jk_pool.h #include jk_util.h #include jk_uri_worker_map.h #define MATCH_TYPE_EXACT(0) #define MATCH_TYPE_CONTEXT (1) #define MATCH_TYPE_SUFFIX (2) struct uri_worker_record { /* Original uri for logging */ char *uri; /* Name of worker mapped */ char *worker_name; /* Suffix of uri */ char *suffix; /* Base context */ char *context; /* char length of the context */ unsigned ctxt_len; int match_type; }; typedef struct uri_worker_record uri_worker_record_t; struct jk_uri_worker_map { jk_pool_t p; jk_pool_atom_t buf[SMALL_POOL_SIZE]; uri_worker_record_t *maps; unsigned size; }; /* * We are now
cvs commit: jakarta-tomcat/proposals/web-connector/native/common jk_util.c jk_util.h
hgomez 01/05/03 07:37:34 Added: proposals/web-connector/native/common jk_util.c jk_util.h Log: utilities Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/common/jk_util.c Index: jk_util.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: Utility functions (mainly configuration) * * Author: Henri Gomez [EMAIL PROTECTED] * * Author: Gal Shachor [EMAIL PROTECTED] * * Version: $Revision: 1.1 $ * ***/ #include jk_util.h #include jk_ajp12_worker.h #define SYSPROPS_OF_WORKER (sysprops) #define STDERR_OF_WORKER(stderr) #define STDOUT_OF_WORKER(stdout) #define MX_OF_WORKER(mx) #define MS_OF_WORKER(ms) #define CP_OF_WORKER(class_path) #define JVM_OF_WORKER (jvm_lib) #define LIBPATH_OF_WORKER (ld_path) #define CMD_LINE_OF_WORKER (cmd_line) #define NATIVE_LIB_OF_WORKER(native_lib) #define PREFIX_OF_WORKER(worker) #define HOST_OF_WORKER (host) #define PORT_OF_WORKER (port) #define TYPE_OF_WORKER (type) #define CACHE_OF_WORKER (cachesize) #define LOAD_FACTOR_OF_WORKER (lbfactor) #define BALANCED_WORKERS(balanced_workers) #define WORKER_AJP12(ajp12) #define DEFAULT_WORKER_TYPE JK_AJP12_WORKER_NAME #define DEFAULT_WORKER JK_AJP12_WORKER_NAME #define WORKER_LIST_PROPERTY_NAME (worker.list) #define DEFAULT_LB_FACTOR (1.0) #define LOG_FORMAT(log_format) #define HUGE_BUFFER_SIZE (8*1024) #define LOG_LINE_SIZE(1024) struct file_logger { FILE *logfile; }; typedef struct file_logger file_logger_t; /* * define the log format, we're using by default the one from error.log * * [Mon Mar 26
cvs commit: jakarta-tomcat/proposals/web-connector/native/iis isapi.def isapi.dsp isapi.dsw jk_isapi_plugin.c
hgomez 01/05/03 07:39:44 Added: proposals/web-connector/native/iis isapi.def isapi.dsp isapi.dsw jk_isapi_plugin.c Log: ISA stuff Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/iis/isapi.def Index: isapi.def === LIBRARYisapi_redirect EXPORTS HttpFilterProc GetFilterVersion GetExtensionVersion HttpExtensionProc TerminateFilter TerminateExtension 1.1 jakarta-tomcat/proposals/web-connector/native/iis/isapi.dsp Index: isapi.dsp === # Microsoft Developer Studio Project File - Name=isapi - Package Owner=4 # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE Win32 (x86) Dynamic-Link Library 0x0102 CFG=isapi - 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 isapi.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 isapi.mak CFG=isapi - Win32 Debug !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE isapi - Win32 Release (based on Win32 (x86) Dynamic-Link Library) !MESSAGE isapi - 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) == isapi - Win32 Release # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir isapi___Win32_Release # PROP BASE Intermediate_Dir isapi___Win32_Release # PROP BASE Target_Dir # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir isapi_release # PROP Intermediate_Dir isapi_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 ISAPI_EXPORTS /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I ..\common /I $(JAVA_HOME)\include /I $(JAVA_HOME)\include\win32 /D WIN32 /D NDEBUG /D _WINDOWS /D _MBCS /D _USRDLL /D ISAPI_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 wsock32.lib advapi32.lib /nologo /dll /machine:I386 /out:isapi_release/isapi_redirect.dll !ELSEIF $(CFG) == isapi - Win32 Debug # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir isapi___Win32_Debug # PROP BASE Intermediate_Dir isapi___Win32_Debug # PROP BASE Target_Dir # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir isapi_debug # PROP Intermediate_Dir isapi_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 ISAPI_EXPORTS /YX /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I ..\common /I $(JAVA_HOME)\include /I $(JAVA_HOME)\include\win32 /D WIN32 /D _DEBUG /D _WINDOWS /D _MBCS /D _USRDLL /D ISAPI_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 wsock32.lib advapi32.lib /nologo /dll /debug /machine:I386 /out:isapi_debug/isapi_redirect.dll /pdbtype:sept !ENDIF # Begin Target # Name isapi - Win32 Release # Name isapi - Win32 Debug # Begin Group Source Files # PROP Default_Filter cpp;c;cxx;rc;def;r;odl;idl;hpj;bat # Begin Source File SOURCE=.\isapi.def # End Source File # Begin Source File SOURCE=..\common\jk_ajp12_worker.c # End Source File # Begin Source File SOURCE=..\common\jk_ajp13.c # End Source File # Begin Source File SOURCE=..\common\jk_ajp13_worker.c # End Source File # Begin Source File SOURCE=..\common\jk_connect.c # End Source File # Begin Source File
cvs commit: jakarta-tomcat/proposals/web-connector/native/netscape Makefile.nw Makefile.solaris jk_nsapi_plugin.c nsapi.dsp nsapi.dsw
hgomez 01/05/03 07:43:38 Added: proposals/web-connector/native/netscape Makefile.nw Makefile.solaris jk_nsapi_plugin.c nsapi.dsp nsapi.dsw Log: Netscape/IPlanet stuff Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/netscape/Makefile.nw Index: Makefile.nw === .SILENT: NLM_NAME=nsapi_rd JDKPATH=k:\jdk\jdk-1_2_2 NOVELLNDK=r:\nwsdk NSSDK=r:\netscape METROWERKSPATH=k:\mw\5.3 CC=$(METROWERKSPATH)\bin\mwccnlm LINK=$(METROWERKSPATH)\bin\mwldnlm JK_OBJS=\ jk_ajp12_worker.obj \ jk_ajp13_worker.obj \ jk_ajp13.obj \ jk_connect.obj \ jk_jni_worker.obj \ jk_lb_worker.obj \ jk_map.obj \ jk_msg_buff.obj \ jk_nsapi_plugin.obj \ jk_pool.obj \ jk_sockbuf.obj \ jk_uri_worker_map.obj \ jk_util.obj \ jk_worker.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$(NSSDK)\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 Netscape Plugin 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 NSTomcat 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 Import @$(NSSDK)\imports\nsapi.imp link.def @echo Export jk_init, jk_service 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/netscape/Makefile.solaris Index: Makefile.solaris === # Defines for example NSAPI programs running under SOLARIS CC_CMD=gcc -DNET_SSL -DSOLARIS -D_REENTRANT LD_SHAREDCMD=ld -G all: prepare: OS_TYPE=solaris INCLUDEDIR=$(SUITSPOT_HOME)/include JAVA_INCLUDE=$(JAVA_HOME)/include JK_OBJS = jk_ajp12_worker.o jk_lb_worker.o jk_sockbuf.o jk_connect.o jk_map.o \ jk_uri_worker_map.o jk_nsapi_plugin.o jk_util.o jk_jni_worker.o \ jk_pool.o jk_worker.o INCLUDE_FLAGS=-I$(INCLUDEDIR) -I$(INCLUDEDIR)/base -I$(INCLUDEDIR)/frame -I$(JAVA_INCLUDE) -I$(JAVA_INCLUDE)/$(OS_TYPE) COMMON_DEFS=-DMCC_HTTPD -DXP_UNIX -DSPAPI20 -DSOLARIS -Wall all: nsapi_redirector.so nsapi_redirector.so: $(JK_OBJS) $(MAKE) prepare $(LD_SHAREDCMD) $(JK_OBJS) -o nsapi_redirector.so $(EXTRA_LDDEFINES) .c.o: $(CC_CMD) $(COMMON_DEFS) $(INCLUDE_FLAGS) -c $ clean: rm $(JK_OBJS) 1.1 jakarta-tomcat/proposals/web-connector/native/netscape/jk_nsapi_plugin.c Index: jk_nsapi_plugin.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
cvs commit: jakarta-tomcat/proposals/web-connector/native/nt_service jk_nt_service.c nt_service.dsp
hgomez 01/05/03 07:47:24 Added: proposals/web-connector/native/nt_service jk_nt_service.c nt_service.dsp Log: nt_service stuff Revision ChangesPath 1.1 jakarta-tomcat/proposals/web-connector/native/nt_service/jk_nt_service.c Index: jk_nt_service.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: NT System service for Jakarta/Tomcat * * Author: Gal Shachor [EMAIL PROTECTED] * * Version: $Revision: 1.1 $ * ***/ #include jk_global.h #include jk_util.h #include jk_ajp13.h #include jk_connect.h #include windows.h #include stdio.h #include stdlib.h #include process.h #define AJP12_TAG (ajp12) #define AJP13_TAG (ajp13) #define BASE_REGISTRY_LOCATION (SYSTEM\\CurrentControlSet\\Services\\) #define IMAGE_NAME (ImagePath) #define PARAMS_LOCATION(Parameters) #define PRP_LOCATION (PropertyFile) // internal variables static SERVICE_STATUS ssStatus; // current status of the service static SERVICE_STATUS_HANDLE sshStatusHandle; static DWORD dwErr = 0; static charszErr[1024] = ; static HANDLE hServerStopEvent = NULL; static int shutdown_port; static char*shutdown_protocol = AJP12_TAG; struct jk_tomcat_startup_data { char *classpath; char *tomcat_home; char *stdout_file; char *stderr_file; char *java_bin; char *tomcat_class; char *server_file; char *cmd_line; int shutdown_port; char *shutdown_protocol; char *extra_path; }; typedef struct jk_tomcat_startup_data jk_tomcat_startup_data_t; // internal function prototypes static void WINAPI service_ctrl(DWORD dwCtrlCode); static void WINAPI service_main(DWORD dwArgc, char **lpszArgv);
Re: cvs commit: jakarta-tomcat/proposals/build2/ant tomcat.jsp
Hey costin, Sure thing. We recently moved and have been very busy but I'm starting to have a little more time (knock on wood). I should be able to help out with at least the pooling stuff, so just let me know if you have specific ideas or need help. -casey [EMAIL PROTECTED] wrote: Hi Casey, Sorry, I have too many things for now - the web based build is going to wait a bit. If you could check in the changes, great.( I hope you got the commit access ) BTW, I have few ideas for the pooling in jasper34 ( I would like to make the pool pluggable, and managed by the container ). Getting the code generator to work is first, but I hope in few weeks to finally merge the 2 runtimes and make the changes, and I hope you can review ( or help :-) some of it. Costin On Sun, 29 Apr 2001, Casey Lucas wrote: Costin, Web based build will be a nice addition -- cool. Small comment though. Keep in mind that I don't have a complete understanding of all associated code, but at first glance, it appears that AntTag won't work correctly if tag pooling is being used. I think the fix is simple though. Just reset the list of targets and args at tag start time: 1.1 jakarta-tomcat/proposals/build2/WEB-INF/src/AntTag.java Index: AntTag.java === package tadm; import java.util.*; import java.io.*; import java.net.URL; import javax.servlet.http.*; import javax.servlet.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import org.apache.tools.ant.*; /** * This tag will run ant tasks * */ public class AntTag extends TagSupport { public AntTag() {} public int doStartTag() throws JspException { add: args.clear() targets.clear() // or removeAllElements() etc. try { pageContext.setAttribute(antProperties, args); } catch (Exception ex ) { ex.printStackTrace(); } return EVAL_BODY_INCLUDE; } public int doEndTag() throws JspException { runTest(); return EVAL_PAGE; } // child tag support Properties args=new Properties(); Vector targets=new Vector(); public void setProperty( String name, String value ) { System.out.println(Adding property + name + = + value ); args.put(name, value ); } public String getProperty( String name ) { System.out.println(Getting property + name ); return args.getProperty(name ); } public void addTarget( String n ) { System.out.println(Adding target + n ); targets.addElement( n ); } // Properties /** Set the name of the test.xml, relative to the base dir. * For example, /WEB-INF/test-tomcat.xml */ public void setTestFile( String s ) { args.put(ant.file, s); } /** Set the target - a subset of tests to be run */ public void setTarget( String s ) { addTarget(s); } public void setDebug( String s ) { args.put( debug, s); } // Implementation methods private void runTest() throws JspException { PrintWriter out=null; try { out=pageContext.getResponse().getWriter(); pageContext.getOut().flush(); out.flush(); // we need a writer for ant Project project=new Project(); AntServletLogger log=new AntServletLogger(); log.setWriter( out ); project.addBuildListener( log ); project.init(); Enumeration argsE=args.propertyNames(); while( argsE.hasMoreElements() ) { String k=(String)argsE.nextElement(); String v=args.getProperty( k ); if( k!=null v!= null ) project.setUserProperty( k, v ); } String antFileN=args.getProperty(ant.file); if( antFileN==null ) throw new JspException( ant.file not specified); File antF=new File(antFileN); ProjectHelper.configureProject( project, antF ); // pre-execution properties Hashtable antProperties=project.getProperties(); argsE=antProperties.keys(); while( argsE.hasMoreElements() ) { String k=(String)argsE.nextElement();
[VOTE] New Committer: Kevin Seguin
I would like to propose Kevin Seguin as a new committer. He make a great job in developping the ajp13 protocol for Tomcat 4.0 and this code will be a great help for sites wanting to upgrade from 3.2.x to 4.0 while still using mod_jk Henri
Re: [VOTE] New Committer: Kevin Seguin
+1 GOMEZ Henri wrote: I would like to propose Kevin Seguin as a new committer. He make a great job in developping the ajp13 protocol for Tomcat 4.0 and this code will be a great help for sites wanting to upgrade from 3.2.x to 4.0 while still using mod_jk Henri -- Dan Milstein // [EMAIL PROTECTED]
RE: [VOTE] New Committer: Kevin Seguin
+1 Saludos , Ignacio J. Ortega -Mensaje original- De: GOMEZ Henri [mailto:[EMAIL PROTECTED]] Enviado el: jueves 3 de mayo de 2001 16:59 Para: [EMAIL PROTECTED] Asunto: [VOTE] New Committer: Kevin Seguin I would like to propose Kevin Seguin as a new committer. He make a great job in developping the ajp13 protocol for Tomcat 4.0 and this code will be a great help for sites wanting to upgrade from 3.2.x to 4.0 while still using mod_jk Henri
java.lang.StackOverflowError in ApplicationHttpRequest.setAttribute Tomcat 4.0.nightly build (20010503)
Hi, We think we have discovered an error in Tomcat 4.0.nightly build (20010503). We call the forward method of the RequestDispatcher from a servlet. Then, we call the setAttribute method of the request object of the included JSP. At this point a java.lang.StackOverflowError occurs. Example: MyServlet.java: ... public void service(ServletRequest request, ServletResponse response){ ... getServletConfig().getServletContext().getRequestDispatcher(MyJSP.jsp).forward(request, response); .. } MyJSP.jsp: ... request.setAttribute(MyAttribute, obj); -- At this point ... Thank you. _ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com
Error in RequestDispachter.include(request,response)
Hi, We include a JSP page from a servlet via RequestDispachter.include(request,response) and the response object is a wrapper. The JSP page write its output to the original response object and not over the wrapper object passed as the parameter in the include call. However, if we make the same call using a forward call, then the JSP page write its output to the wrapper object. Thanks. _ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com
Re: [VOTE] New Committer: Kevin Seguin
+1 Costin On Thu, 3 May 2001, GOMEZ Henri wrote: I would like to propose Kevin Seguin as a new committer. He make a great job in developping the ajp13 protocol for Tomcat 4.0 and this code will be a great help for sites wanting to upgrade from 3.2.x to 4.0 while still using mod_jk Henri
Re: [VOTE] New Committer: Kevin Seguin
+1 I am very interested in mod_jk/ajp13 support for Tomcat 4. GOMEZ Henri wrote: I would like to propose Kevin Seguin as a new committer. He make a great job in developping the ajp13 protocol for Tomcat 4.0 and this code will be a great help for sites wanting to upgrade from 3.2.x to 4.0 while still using mod_jk Henri -- -- Glenn Nielsen [EMAIL PROTECTED] | /* Spelin donut madder| MOREnet System Programming | * if iz ina coment. | Missouri Research and Education Network | */ | --
Re: [VOTE] New Committer: Kevin Seguin
+1 Mel --- GOMEZ Henri [EMAIL PROTECTED] wrote: I would like to propose Kevin Seguin as a new committer. He make a great job in developping the ajp13 protocol for Tomcat 4.0 and this code will be a great help for sites wanting to upgrade from 3.2.x to 4.0 while still using mod_jk Henri __ Do You Yahoo!? Yahoo! Auctions - buy the things you want at great prices http://auctions.yahoo.com/
Re: [VOTE] New Committer: Kevin Seguin
+1 Costin On Thu, 3 May 2001, GOMEZ Henri wrote: I would like to propose Kevin Seguin as a new committer. He make a great job in developping the ajp13 protocol for Tomcat 4.0 and this code will be a great help for sites wanting to upgrade from 3.2.x to 4.0 while still using mod_jk Henri
Re: java.lang.StackOverflowError in ApplicationHttpRequest.setAttributeTomcat 4.0.nightly build (20010503)
On Thu, 3 May 2001, Ana wrote: Hi, We think we have discovered an error in Tomcat 4.0.nightly build (20010503). We call the forward method of the RequestDispatcher from a servlet. Then, we call the setAttribute method of the request object of the included JSP. At this point a java.lang.StackOverflowError occurs. Example: MyServlet.java: ... public void service(ServletRequest request, ServletResponse response){ ... getServletConfig().getServletContext().getRequestDispatcher(MyJSP.jsp).forward(request, response); NOTE: The path here should really be /MyJSP.jsp. Otherwise, you should have gotten an IllegalArgumentException instead. .. } MyJSP.jsp: ... request.setAttribute(MyAttribute, obj); -- At this point ... Thank you. I have been unable to reproduce this problem, for either forwards or includes, to either servlets or JSP pages. Could you try to create a small test case that demonstrates it, and post that as a bug report to: http://nagoya.apache.org/bugzilla/ under product category Tomcat 4? Craig McClanahan
cvs commit: jakarta-tomcat-4.0/tester/web/WEB-INF web.xml
craigmcc01/05/03 11:41:48 Modified:tester/src/bin tester.xml tester/src/tester/org/apache/tester Include03.java tester/web/WEB-INF web.xml Added: tester/src/tester/org/apache/tester Forward03.java Forward03a.java tester/web Forward03b.jsp Include03b.jsp Log: Add additional tests for setting request attributes in forwarded-to as well as included servlets. Revision ChangesPath 1.38 +29 -3 jakarta-tomcat-4.0/tester/src/bin/tester.xml Index: tester.xml === RCS file: /home/cvs/jakarta-tomcat-4.0/tester/src/bin/tester.xml,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- tester.xml2001/05/02 20:44:39 1.37 +++ tester.xml2001/05/03 18:41:30 1.38 @@ -375,14 +375,40 @@ request=${context.path}/WrappedInclude02?exception=NullPointerException outContent=Include02 PASSED debug=${debug}/ -!-- == Included Servlet Sets Attribute === -- +!-- == Forwarded Servlet/Page Sets Attribute -- tester host=${host} port=${port} protocol=${protocol} - request=${context.path}/Include03 + request=${context.path}/Forward03?path=/Forward03a + outContent=Forward03 PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedForward03?path=/Forward03a + outContent=Forward03 PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Forward03?path=/Forward03b.jsp + outContent=Forward03 PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedForward03?path=/Forward03b.jsp + outContent=Forward03 PASSED debug=${debug}/ + +!-- == Included Servlet/Page Sets Attribute = -- + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Include03?path=/Include03a + outContent=Include03 PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedInclude03?path=/Include03a + outContent=Include03 PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Include03?path=/Include03b.jsp outContent=Include03 PASSED debug=${debug}/ tester host=${host} port=${port} protocol=${protocol} - request=${context.path}/WrappedInclude03 + request=${context.path}/WrappedInclude03?path=/Include03b.jsp outContent=Include03 PASSED debug=${debug}/ /target 1.2 +14 -3 jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/Include03.java Index: Include03.java === RCS file: /home/cvs/jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/Include03.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Include03.java2001/05/02 20:44:48 1.1 +++ Include03.java2001/05/03 18:41:37 1.2 @@ -68,8 +68,12 @@ * The spec is silent on this topic, but it seems consistent with the overall * intent to behave in this manner. * + * The test includes either a servlet (/Include03a) or a JSP page + * (/Include03b.jsp) depending on the value specified for the path + * parameter. The default is the servlet. + * * @author Craig R. McClanahan - * @version $Revision: 1.1 $ $Date: 2001/05/02 20:44:48 $ + * @version $Revision: 1.2 $ $Date: 2001/05/03 18:41:37 $ */ public class Include03 extends HttpServlet { @@ -90,19 +94,26 @@ response.setContentType(text/plain); PrintWriter writer = response.getWriter(); +// Acquire the path to which we will issue an include +String path = request.getParameter(path); +if (path == null) +path = /Include03a; + // Create a request dispatcher and call include() on it RequestDispatcher rd = -getServletContext().getRequestDispatcher(/Include03a); +getServletContext().getRequestDispatcher(path); if (rd == null) { sb.append( No RequestDispatcher returned/); } else { rd.include(request, response); } +response.resetBuffer(); // We MUST be able to see the attribute created by the includee String value = null; try { -value = (String) request.getAttribute(Include03a); +value = (String) +request.getAttribute(path.substring(1)); } catch
Re: [VOTE] New Committer: Kevin Seguin
+1 Remy
Re: [VOTE] New Committer: Kevin Seguin
+1 Craig On Thu, 3 May 2001, GOMEZ Henri wrote: I would like to propose Kevin Seguin as a new committer. He make a great job in developping the ajp13 protocol for Tomcat 4.0 and this code will be a great help for sites wanting to upgrade from 3.2.x to 4.0 while still using mod_jk Henri
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector HttpRequestBase.java
craigmcc01/05/03 12:15:09 Modified:catalina/src/share/org/apache/catalina/connector HttpRequestBase.java Log: HttpServletRequest.getCookies() is supposed to return null if the request had no cookies. We were returning a zero-length array. PR: BugTRAQ #4453972. Submitted by: [EMAIL PROTECTED] Revision ChangesPath 1.22 +6 -4 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpRequestBase.java Index: HttpRequestBase.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpRequestBase.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- HttpRequestBase.java 2001/04/26 17:41:07 1.21 +++ HttpRequestBase.java 2001/05/03 19:15:05 1.22 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpRequestBase.java,v 1.21 2001/04/26 17:41:07 craigmcc Exp $ - * $Revision: 1.21 $ - * $Date: 2001/04/26 17:41:07 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpRequestBase.java,v 1.22 2001/05/03 19:15:05 craigmcc Exp $ + * $Revision: 1.22 $ + * $Date: 2001/05/03 19:15:05 $ * * * @@ -100,7 +100,7 @@ * be implemented. * * @author Craig R. McClanahan - * @version $Revision: 1.21 $ $Date: 2001/04/26 17:41:07 $ + * @version $Revision: 1.22 $ $Date: 2001/05/03 19:15:05 $ */ public class HttpRequestBase @@ -757,6 +757,8 @@ public Cookie[] getCookies() { synchronized (cookies) { +if (cookies.size() 1) +return (null); Cookie results[] = new Cookie[cookies.size()]; return ((Cookie[]) cookies.toArray(results)); }
java.lang.StackOverflowError in ApplicationHttpRequest. Tomcat 4.0.nightly build (20010503)
Hi, The last message I sent wasn´t very precise. I´m talking about: java.lang.StackOverflowError in ApplicationHttpRequest.setAttribute Tomcat 4.0.nightly build (20010503) The error doesn´t happen in ApplicationHttpRequest.setAttribute, this is a lateral effect. The real error happens when there is an error in a JSP page and the method pageContext.handlePageException(t) is called (in the compiled JSP). The error is provoked by the JSP error page because it calls itself. Thanks a lot. _ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com
RE: [VOTE] New Committer: Kevin Seguin
+1 -Original Message- From: GOMEZ Henri [mailto:[EMAIL PROTECTED]] Sent: Thursday, May 03, 2001 10:59 AM To: [EMAIL PROTECTED] Subject: [VOTE] New Committer: Kevin Seguin I would like to propose Kevin Seguin as a new committer. He make a great job in developping the ajp13 protocol for Tomcat 4.0 and this code will be a great help for sites wanting to upgrade from 3.2.x to 4.0 while still using mod_jk Henri
FW: Java World Editors' Choice Awards
Last year, I believe JServ won, not Tomcat. I think that Pier is the person who has the award... Anyway, I'm sure someone here is interested in this...feel free to reply to him... -jon -- Forwarded Message From: [EMAIL PROTECTED] Date: Thu, 3 May 2001 12:25:17 -0700 To: Jon Stevens [EMAIL PROTECTED] Subject: Java World Editors' Choice Awards Jon, How's it going? We spoke last year when Tomcat won JavaWorld's Readers' Choice Awards. Well this year we're doing an Editors' Choice Award, and Tomcat 3.2 has been selected as a finalist in the Most Innovative Java Product category. Anyway, I sent the email below to the [EMAIL PROTECTED] and [EMAIL PROTECTED] email addresses, but I wanted to check with you to ensure the email reaches the correct person. Can you let me know or forward it? Regards, Scott Plamondon JavaWorld 415-975-2651 Here's what I sent: Dear Jakarta Project, Congratulations! JavaWorld has selected Jakarta Project's Tomcat 3.2 as a finalist in the Most Innovative Java Product category of our Editors' Choice Awards. Established in 1997, the awards recognize those innovative companies, organizations, and individuals committed to developing new Java tools and technologies that drive the platform forward. More than 100 products and technologies were nominated by vendors, readers, as well as JavaWorld editors and writers. We'll publish the complete list of finalists in each category by 5 p.m. PDT on Friday, May 4 (go to: http://www.javaworld.com/jw-05-2001/jw-0504-finalists.html). As a finalist, members of your product team will be invited to attend JavaWorld's Editors' Choice Awards ceremony at the JavaOne Conference and Expo from June 4-8 in San Francisco, where a winner in each category will be announced. Invitations to the ceremony, with the date and location, will be mailed in mid-May. With that in mind, I need to confirm your organization's contact information. Please let me know to whom we should send the invitation at your earliest convenience: Contact Name: Title: Product Name: Address: City, State, Zip: Phone: Email: If you have any questions, please don't hesitate to email me at this address or call 415-975-2651. Regards, Scott Plamondon Senior Editor JavaWorld [EMAIL PROTECTED] 415-975-2651 -- End of Forwarded Message
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session StandardManager.java
bip 01/05/03 13:45:05 Modified:catalina/src/share/org/apache/catalina/session StandardManager.java Log: Changed StandardManager to use the org.apache.util.CustomObjectInputStream instead of the inline CustomObjectInputStream. Revision ChangesPath 1.10 +5 -62 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardManager.java Index: StandardManager.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardManager.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- StandardManager.java 2001/04/17 17:07:04 1.9 +++ StandardManager.java 2001/05/03 20:45:03 1.10 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardManager.java,v 1.9 2001/04/17 17:07:04 craigmcc Exp $ - * $Revision: 1.9 $ - * $Date: 2001/04/17 17:07:04 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardManager.java,v 1.10 2001/05/03 20:45:03 bip Exp $ + * $Revision: 1.10 $ + * $Date: 2001/05/03 20:45:03 $ * * * @@ -91,6 +91,7 @@ import org.apache.catalina.Loader; import org.apache.catalina.Manager; import org.apache.catalina.Session; +import org.apache.catalina.util.CustomObjectInputStream; import org.apache.catalina.util.LifecycleSupport; @@ -105,7 +106,7 @@ * codestop()/code methods of this class at the correct times. * * @author Craig R. McClanahan - * @version $Revision: 1.9 $ $Date: 2001/04/17 17:07:04 $ + * @version $Revision: 1.10 $ $Date: 2001/05/03 20:45:03 $ */ public class StandardManager @@ -815,62 +816,4 @@ } } - - -// Private Classes - - -/** - * Custom subclass of codeObjectInputStream/code that loads from the - * class loader for this web application. This allows classes defined only - * with the web application to be found correctly. - */ -private static final class CustomObjectInputStream -extends ObjectInputStream { - - -/** - * The class loader we will use to resolve classes. - */ -private ClassLoader classLoader = null; - - -/** - * Construct a new instance of CustomObjectInputStream - * - * @param stream The input stream we will read from - * @param classLoader The class loader used to instantiate objects - * - * @exception IOException if an input/output error occurs - */ -public CustomObjectInputStream(InputStream stream, - ClassLoader classLoader) -throws IOException { - -super(stream); -this.classLoader = classLoader; - -} - - -/** - * Load the local class equivalent of the specified stream class - * description, by using the class loader assigned to this Context. - * - * @param classDesc Class description from the input stream - * - * @exception ClassNotFoundException if this class cannot be found - * @exception IOException if an input/output error occurs - */ -protected Class resolveClass(ObjectStreamClass classDesc) -throws ClassNotFoundException, IOException { - -return (classLoader.loadClass(classDesc.getName())); - -} - - -} - - }
Re: [VOTE] New Committer: Kevin Seguin
GOMEZ Henri wrote: I would like to propose Kevin Seguin as a new committer. He make a great job in developping the ajp13 protocol for Tomcat 4.0 and this code will be a great help for sites wanting to upgrade from 3.2.x to 4.0 while still using mod_jk +1 Welcome! ..bip
Nagoya.apache.org
on 5/3/01 11:42 AM, Craig R. McClanahan [EMAIL PROTECTED] wrote: http://nagoya.apache.org/bugzilla/ http://nagoya.apache.org/bugzilla/globals.pl When is someone going to secure that box? This is really pitiful that this has been open like this for this long now and on top of it, it is running an old version of bugzilla (2.10 and 2.12 is latest). There have been security advisories regarding the recent holes discovered in Bugzilla and no one managing nagoya has taken care of the situation. I don't think we (the ASF) should give out apache.org domains to boxes that are not being managed properly. I also don't think that we should rely on a box as our primary issue tracking system if security is also not going to be taken seriously. thanks, -jon
Re: JSP re-compile performance under heavy load
Just a thought, But might you not also just save your query results in some intermediate format (serialization might work) that your JSP pages could then use? It may not fit in well with your system, but it would save from having to recompile pages. At the other end of the spectrum, you could generate the HTML instead of JSP and also save the intermediate step. A large amount of JSP compilation overhead is out of tomcat's hands since it's reliant on the java compiler. -Paul [EMAIL PROTECTED] wrote: Hi All, I'm curious if any of you have code that tests the performance of JSP recompiles while tomcat is under load. I've read that some changes were made in this area recently, and it directly effects a design I'm considering. If performance testing code exists, could someone send it to me? Thanks, Jason Henriksen P.S.: (If you're curious how I got into this sitation, here's the rationale: ) Basically, I'm treating the disk drive as a cache. I expect to have well over 5,000 different query result pages, each of which could take over a minute to generate because they require some fairly thick SQL. The good news is that only about 100 of them will be 'active' at any given time. The non-active pages, can be built, saved on disk and then safely ignored (Thus being served with no database hit). However, when the object in the DB changes I should be able to show the update on the JSP page within 15 minutines of the database change occuring. My plan is to generate a page for each of my 5,000 objects up front and then wait until a DB object changes. When it does, I'll regenerate the page for just that object. That way everyone see's the new static page, and the database can continue doing it's regular job of managing user accounts, and other such non-cacheable business. (The disk cache is also preferable to holding the results for all 5000 object queries in memory because the results will be fairly large. My disk space is near infinite, but my memory is not). So if I have 1000 people looking at the results for Object A when it needs to be re-compiled how will Tomcat respond? I know it does fine job handling updated JSPs in a development environment, I'm curious how it's expected to perform doing that kind of operation under load. (I understand that my mileage my vary, I'm just looking for what you guys would expect to happen, or do you suggest some other desgin?) Thus, I'm look for test-code and/or result numbers. -- Warning : The information contained in this message may be privileged and confidential and protected from disclosure. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by replying to this message and then delete it from your computer. All e-mail sent to this address will be received by the Providian Financial corporate e-mail system and is subject to archiving and review by someone other than the recipient. ==
Re: Nagoya.apache.org
A while ago I tried to run bugzilla in a chroot jail using thttpd (apache no longer supports chroot'ing, it seems). I got it somewhat working, but I gave up and went to bugrat, for better or worse. I think if you can chroot (and run unprivledged) bugzilla, this greatly minimizes any security implications you've seen. Without chrooting and running as an unprivledged user, bugzilla is not only insecure, it's insecurable. on 5/3/01 11:42 AM, Craig R. McClanahan [EMAIL PROTECTED] wrote: http://nagoya.apache.org/bugzilla/ http://nagoya.apache.org/bugzilla/globals.pl When is someone going to secure that box? This is really pitiful that this has been open like this for this long now and on top of it, it is running an old version of bugzilla (2.10 and 2.12 is latest). There have been security advisories regarding the recent holes discovered in Bugzilla and no one managing nagoya has taken care of the situation. I don't think we (the ASF) should give out apache.org domains to boxes that are not being managed properly. I also don't think that we should rely on a box as our primary issue tracking system if security is also not going to be taken seriously. thanks, -jon -- Nick Bauman Software Developer 3023 Lynn #22 Minneapolis, MN 55416 Mobile Phone: (612) 810-7406
Re: Nagoya.apache.org
on 5/3/01 2:19 PM, Nick Bauman [EMAIL PROTECTED] wrote: A while ago I tried to run bugzilla in a chroot jail using thttpd (apache no longer supports chroot'ing, it seems). I got it somewhat working, but I gave up and went to bugrat, for better or worse. I think if you can chroot (and run unprivledged) bugzilla, this greatly minimizes any security implications you've seen. Without chrooting and running as an unprivledged user, bugzilla is not only insecure, it's insecurable. The problem that I describe below is beyond the need to chroot things. Look in the globals.pl file at the password that was used. Simple things such as choosing secure passwords is a good start at security. So is making sure that the file with your passwords in it is secure as well. I'm not asking for perfection...I'm simply asking for people to keep up on closing the known holes in a timely fashion. I don't think that is an unreasonable expectation for a system administrator. -jon
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core ApplicationDispatcher.java
craigmcc01/05/03 16:04:17 Modified:catalina/src/share/org/apache/catalina/core ApplicationDispatcher.java Log: Update handling or a servlet that is included or forwarded to via a RequestDispatcher, and uses a jsp-file declaration to map the definition to a JSP page. Revision ChangesPath 1.14 +19 -7 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java Index: ApplicationDispatcher.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- ApplicationDispatcher.java2001/02/06 02:39:43 1.13 +++ ApplicationDispatcher.java2001/05/03 23:04:15 1.14 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v 1.13 2001/02/06 02:39:43 craigmcc Exp $ - * $Revision: 1.13 $ - * $Date: 2001/02/06 02:39:43 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v 1.14 2001/05/03 23:04:15 craigmcc Exp $ + * $Revision: 1.14 $ + * $Date: 2001/05/03 23:04:15 $ * * * @@ -81,6 +81,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.catalina.Context; import org.apache.catalina.Globals; +import org.apache.catalina.HttpRequest; import org.apache.catalina.Logger; import org.apache.catalina.Wrapper; import org.apache.catalina.util.StringManager; @@ -97,7 +98,7 @@ * codejavax.servlet.ServletResponseWrapper/code. * * @author Craig R. McClanahan - * @version $Revision: 1.13 $ $Date: 2001/02/06 02:39:43 $ + * @version $Revision: 1.14 $ $Date: 2001/05/03 23:04:15 $ */ final class ApplicationDispatcher @@ -174,6 +175,15 @@ this.pathInfo + , queryString= + queryString + , name= + this.name); +// If this is a wrapper for a JSP page (jsp-file), tweak +// the request parameters appropriately +String jspFile = wrapper.getJspFile(); +if (jspFile != null) { +if (debug = 1) +log(--servletPath= + jspFile); +this.servletPath = jspFile; +} + } @@ -189,7 +199,7 @@ /** * The debugging detail level for this component. */ -private int debug = 0; +private int debug = 1; /** @@ -292,8 +302,8 @@ // Handle an HTTP named dispatcher forward else if ((servletPath == null) (pathInfo == null)) { - if (debug = 1) - log( Named Dispatcher Forward); +if (debug = 1) +log( Named Dispatcher Forward); invoke(request, response); } @@ -411,6 +421,8 @@ ApplicationHttpRequest wrequest = new ApplicationHttpRequest((HttpServletRequest) request); wrequest.setAttribute(Globals.NAMED_DISPATCHER_ATTR, name); +if (servletPath != null) +wrequest.setServletPath(servletPath); invoke(wrequest, wresponse); }
cvs commit: jakarta-tomcat-4.0/tester/web/WEB-INF web.xml
craigmcc01/05/03 16:06:36 Modified:tester/src/bin tester.xml tester/web/WEB-INF web.xml Added: tester/src/tester/org/apache/tester Forward00.java Forward00a.java Forward00d.java Include00.java Include00a.java Include00d.java tester/web Forward00b.jsp Forward00c.jsp Forward00e.jsp Include00b.jsp Include00c.jsp Include00e.jsp Log: Add unit tests to cover the combinations of include vs forward, servlet vs JSP page vs jsp-file, and named versus path-based dispatching. Revision ChangesPath 1.39 +82 -0 jakarta-tomcat-4.0/tester/src/bin/tester.xml Index: tester.xml === RCS file: /home/cvs/jakarta-tomcat-4.0/tester/src/bin/tester.xml,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- tester.xml2001/05/03 18:41:30 1.38 +++ tester.xml2001/05/03 23:06:28 1.39 @@ -331,6 +331,88 @@ target name=RequestDispatcher +!-- == Basic Forward and Include Functionality === -- + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Forward00?path=/Forward00a + outContent=Forward00a PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedForward00?path=/Forward00a + outContent=Forward00a PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Forward00?path=/Forward00b + outContent=Forward00b PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedForward00?path=/Forward00b + outContent=Forward00b PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Forward00?path=/Forward00c.jsp + outContent=Forward00c PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedForward00?path=/Forward00c.jsp + outContent=Forward00c PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Forward00?path=!Forward00d + outContent=Forward00d PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedForward00?path=!Forward00d + outContent=Forward00d PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Forward00?path=!Forward00e + outContent=Forward00e PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedForward00?path=!Forward00e + outContent=Forward00e PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Include00?path=/Include00a + outContent=Include00a PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedInclude00?path=/Include00a + outContent=Include00a PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Include00?path=/Include00b + outContent=Include00b PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedInclude00?path=/Include00b + outContent=Include00b PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Include00?path=/Include00c.jsp + outContent=Include00c PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedInclude00?path=/Include00c.jsp + outContent=Include00c PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Include00?path=!Include00d + outContent=Include00d PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedInclude00?path=!Include00d + outContent=Include00d PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/Include00?path=!Include00e + outContent=Include00e PASSED debug=${debug}/ + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/WrappedInclude00?path=!Include00e + outContent=Include00e PASSED debug=${debug}/ + !-- == Forward and Include to Static Resource
Re: Nagoya.apache.org
Pier is in charge of maintaining bugzilla on nagoya. I'm sure he is looking into the various security issues. When is Scarab coming out? I'd like an alternative instead of simply hearing complaints about the current and well utilized bug tracking system. Justy - Original Message - on 5/3/01 11:42 AM, Craig R. McClanahan [EMAIL PROTECTED] wrote: http://nagoya.apache.org/bugzilla/ http://nagoya.apache.org/bugzilla/globals.pl When is someone going to secure that box? This is really pitiful that this has been open like this for this long now and on top of it, it is running an old version of bugzilla (2.10 and 2.12 is latest). There have been security advisories regarding the recent holes discovered in Bugzilla and no one managing nagoya has taken care of the situation. I don't think we (the ASF) should give out apache.org domains to boxes that are not being managed properly. I also don't think that we should rely on a box as our primary issue tracking system if security is also not going to be taken seriously. thanks, -jon
Re: JSP re-compile performance under heavy load
You might consider changing the design of how you cache your data. There are several JSP taglibs out that implement caching of data. You can also do a runtime include of a static file instead of a JSP. Regards, Glenn [EMAIL PROTECTED] wrote: Hi All, I'm curious if any of you have code that tests the performance of JSP recompiles while tomcat is under load. I've read that some changes were made in this area recently, and it directly effects a design I'm considering. If performance testing code exists, could someone send it to me? Thanks, Jason Henriksen P.S.: (If you're curious how I got into this sitation, here's the rationale: ) Basically, I'm treating the disk drive as a cache. I expect to have well over 5,000 different query result pages, each of which could take over a minute to generate because they require some fairly thick SQL. The good news is that only about 100 of them will be 'active' at any given time. The non-active pages, can be built, saved on disk and then safely ignored (Thus being served with no database hit). However, when the object in the DB changes I should be able to show the update on the JSP page within 15 minutines of the database change occuring. My plan is to generate a page for each of my 5,000 objects up front and then wait until a DB object changes. When it does, I'll regenerate the page for just that object. That way everyone see's the new static page, and the database can continue doing it's regular job of managing user accounts, and other such non-cacheable business. (The disk cache is also preferable to holding the results for all 5000 object queries in memory because the results will be fairly large. My disk space is near infinite, but my memory is not). So if I have 1000 people looking at the results for Object A when it needs to be re-compiled how will Tomcat respond? I know it does fine job handling updated JSPs in a development environment, I'm curious how it's expected to perform doing that kind of operation under load. (I understand that my mileage my vary, I'm just looking for what you guys would expect to happen, or do you suggest some other desgin?) Thus, I'm look for test-code and/or result numbers. -- Warning : The information contained in this message may be privileged and confidential and protected from disclosure. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by replying to this message and then delete it from your computer. All e-mail sent to this address will be received by the Providian Financial corporate e-mail system and is subject to archiving and review by someone other than the recipient. == -- -- Glenn Nielsen [EMAIL PROTECTED] | /* Spelin donut madder| MOREnet System Programming | * if iz ina coment. | Missouri Research and Education Network | */ | --
Re: Nagoya.apache.org
on 5/3/01 4:20 PM, horwat [EMAIL PROTECTED] wrote: When is Scarab coming out? I'd like an alternative instead of simply hearing complaints about the current and well utilized bug tracking system. Justy Actually, Scarab is back on the high track within CollabNet now that SourceCast 1.0 is released, so more resources are being dedicated to getting it done which will help greatly on the progress towards completion. The final ETA is still incomplete as the new project manager hasn't finished the schedule yet, so all I can say is that things are looking up... When I have more information that I can make public, it will be available on the scarab.tigris.org website. Of course if you would like to volunteer to help out, that will also help with the progress of the project. So far, getting volunteers has been somewhat of a struggle. People will volunteer to do something and then they don't do it. :-( I recently posted a couple TODO items for work that people could start on and no one has really picked them up... -jon
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLStreamHandler.java
remm01/05/03 17:30:02 Modified:catalina/src/share/org/apache/naming/resources DirContextURLStreamHandler.java Log: - Add possibility to bind threads in addition to classloaders. Revision ChangesPath 1.4 +37 -6 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLStreamHandler.java Index: DirContextURLStreamHandler.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLStreamHandler.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DirContextURLStreamHandler.java 2001/03/21 05:05:44 1.3 +++ DirContextURLStreamHandler.java 2001/05/04 00:30:01 1.4 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLStreamHandler.java,v 1.3 2001/03/21 05:05:44 remm Exp $ - * $Revision: 1.3 $ - * $Date: 2001/03/21 05:05:44 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLStreamHandler.java,v 1.4 2001/05/04 00:30:01 remm Exp $ + * $Revision: 1.4 $ + * $Date: 2001/05/04 00:30:01 $ * * * @@ -75,7 +75,7 @@ * Stream handler to a JNDI directory context. * * @author a href=mailto:[EMAIL PROTECTED];Remy Maucherat/a - * @version $Revision: 1.3 $ + * @version $Revision: 1.4 $ */ public class DirContextURLStreamHandler extends URLStreamHandler { @@ -102,6 +102,12 @@ private static Hashtable clBindings = new Hashtable(); +/** + * Bindings thread - directory context. Keyed by thread id. + */ +private static Hashtable threadBindings = new Hashtable(); + + // - Instance Variables @@ -156,12 +162,29 @@ /** + * Binds a directory context to a thread. + */ +public static void bindThread(DirContext dirContext) { +threadBindings.put(Thread.currentThread(), dirContext); +} + + +/** + * Unbinds a directory context to a thread. + */ +public static void unbindThread() { +threadBindings.remove(Thread.currentThread()); +} + + +/** * Get the bound context. */ public static DirContext get() { -ClassLoader currentCL = -Thread.currentThread().getContextClassLoader(); DirContext result = null; +Thread currentThread = Thread.currentThread(); +result = (DirContext) threadBindings.get(currentThread); +ClassLoader currentCL = currentThread.getContextClassLoader(); while ((result == null) (currentCL != null)) { result = (DirContext) clBindings.get(currentCL); if (result == null) @@ -194,6 +217,14 @@ */ public static DirContext get(ClassLoader cl) { return (DirContext) clBindings.get(cl); +} + + +/** + * Get the bound context. + */ +public static DirContext get(Thread thread) { +return (DirContext) threadBindings.get(thread); }
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader StandardLoader.java
remm01/05/03 17:57:07 Modified:catalina/src/share/org/apache/catalina/loader StandardLoader.java Log: - Bind the thread in charge of checking for a modified class. Revision ChangesPath 1.24 +11 -6 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java Index: StandardLoader.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- StandardLoader.java 2001/04/25 04:15:03 1.23 +++ StandardLoader.java 2001/05/04 00:57:06 1.24 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java,v 1.23 2001/04/25 04:15:03 glenn Exp $ - * $Revision: 1.23 $ - * $Date: 2001/04/25 04:15:03 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java,v 1.24 2001/05/04 00:57:06 remm Exp $ + * $Revision: 1.24 $ + * $Date: 2001/05/04 00:57:06 $ * * * @@ -116,7 +116,7 @@ * * @author Craig R. McClanahan * @author Remy Maucherat - * @version $Revision: 1.23 $ $Date: 2001/04/25 04:15:03 $ + * @version $Revision: 1.24 $ $Date: 2001/05/04 00:57:06 $ */ public final class StandardLoader @@ -592,9 +592,10 @@ started = true; // Register a stream handler factory for the JNDI protocol +URLStreamHandlerFactory streamHandlerFactory = +new DirContextURLStreamHandlerFactory(); try { -URL.setURLStreamHandlerFactory -(new DirContextURLStreamHandlerFactory()); +URL.setURLStreamHandlerFactory(streamHandlerFactory); } catch (Throwable t) { // Ignore the error here. } @@ -1283,6 +1284,8 @@ if (debug = 1) log(BACKGROUND THREAD Starting); +DirContextURLStreamHandler.bindThread(this.container.getResources()); + // Loop until the termination semaphore is set while (!threadDone) { @@ -1298,6 +1301,8 @@ break; } + +DirContextURLStreamHandler.unbindThread(); if (debug = 1) log(BACKGROUND THREAD Stopping);
cvs commit: jakarta-tomcat/src/share/org/apache/jasper/compiler GetPropertyGenerator.java
nacho 01/05/03 17:57:11 Modified:src/share/org/apache/jasper/compiler GetPropertyGenerator.java Log: Another Occurence of JspRuntimeLibrary without package in code generator. Revision ChangesPath 1.6 +7 -6 jakarta-tomcat/src/share/org/apache/jasper/compiler/GetPropertyGenerator.java Index: GetPropertyGenerator.java === RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/GetPropertyGenerator.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- GetPropertyGenerator.java 2001/04/28 21:13:36 1.5 +++ GetPropertyGenerator.java 2001/05/04 00:57:11 1.6 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/GetPropertyGenerator.java,v 1.5 2001/04/28 21:13:36 costin Exp $ - * $Revision: 1.5 $ - * $Date: 2001/04/28 21:13:36 $ + * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/GetPropertyGenerator.java,v 1.6 2001/05/04 00:57:11 nacho Exp $ + * $Revision: 1.6 $ + * $Date: 2001/05/04 00:57:11 $ * * * @@ -109,10 +109,11 @@ } else { // Get the class name and then introspect at runtime. writer.println(out.print( + -Constants.JSP_RUNTIME_PACKAGE + -.JspRuntimeLibrary.toString(JspRuntimeLibrary. + +Constants.JSP_RUNTIME_PACKAGE + .JspRuntimeLibrary.toString( + +Constants.JSP_RUNTIME_PACKAGE + .JspRuntimeLibrary. + handleGetProperty(pageContext.findAttribute( + -\ + name + \), \ + property + \)));); +\ + name + \), \ + property + \))); + ); } }
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader StandardClassLoader.java
remm01/05/03 19:01:13 Modified:catalina/src/share/org/apache/catalina/loader StandardClassLoader.java Log: - Correctly register repositories based on non file protocols. - That fixes class reloading, which before could only handle file based URLs. Revision ChangesPath 1.16 +70 -25 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java Index: StandardClassLoader.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- StandardClassLoader.java 2001/04/25 04:14:47 1.15 +++ StandardClassLoader.java 2001/05/04 02:01:13 1.16 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java,v 1.15 2001/04/25 04:14:47 glenn Exp $ - * $Revision: 1.15 $ - * $Date: 2001/04/25 04:14:47 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java,v 1.16 2001/05/04 02:01:13 remm Exp $ + * $Revision: 1.16 $ + * $Date: 2001/05/04 02:01:13 $ * * * @@ -110,7 +110,7 @@ * * @author Craig R. McClanahan * @author Remy Maucherat - * @version $Revision: 1.15 $ $Date: 2001/04/25 04:14:47 $ + * @version $Revision: 1.16 $ $Date: 2001/05/04 02:01:13 $ */ public class StandardClassLoader @@ -561,8 +561,8 @@ return (true); } } else if (entries[i].origin instanceof URL) { +URL url = (URL) entries[i].origin; try { -URL url = (URL) entries[i].origin; URLConnection urlConn = url.openConnection(); if (entries[i].lastModified != urlConn.getLastModified()) { if (debug = 2) @@ -572,6 +572,7 @@ return (true); } } catch (IOException e) { +log(Failed tracking modifications of ' + url + '); } } } @@ -687,27 +688,71 @@ repositories[i].substring(0, repositories[i].length() - 1); if (debug = 4) log( Checking repository + pathname); -if (pathname.startsWith(file://)) -pathname = pathname.substring(7); -else if (pathname.startsWith(file:)) -pathname = pathname.substring(5); -pathname += File.separatorChar + -name.replace('.', File.separatorChar) + .class; - try { -File file = new File(pathname); -if (file.exists() file.canRead()) { -if (debug = 3) -log(Caching from ' + file.getAbsolutePath() + +if ((pathname.startsWith(file://)) +|| (pathname.startsWith(file:))) { + +if (pathname.startsWith(file://)) { +pathname = pathname.substring(7); +} else if (pathname.startsWith(file:)) { +pathname = pathname.substring(5); +} +pathname += File.separatorChar ++ name.replace('.', File.separatorChar) + .class; + +try { +File file = new File(pathname); +if (file.exists() file.canRead()) { +if (debug = 3) +log(Caching from ' + file.getAbsolutePath() + +' modified ' + +(new java.sql.Timestamp(file.lastModified())) + +'); +classCache.put(name, new ClassCacheEntry +(clazz, file, file.lastModified())); +} + +} catch(AccessControlException ace) { +// Don't worry about caching the class last modified +// if ClassLoader doesn't have permission to read file +} + +} else { + +pathname += / + name.replace('.', '/') + .class; + +try { +URLStreamHandler streamHandler = null; +String protocol = parseProtocol(pathname); +if (factory != null) +streamHandler = +factory.createURLStreamHandler(protocol); +URL classUrl = new URL(null,
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core ApplicationDispatcher.java
craigmcc01/05/03 20:41:10 Modified:catalina/src/share/org/apache/catalina/core ApplicationDispatcher.java Log: Reset debugging detail level. Revision ChangesPath 1.15 +5 -5 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java Index: ApplicationDispatcher.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- ApplicationDispatcher.java2001/05/03 23:04:15 1.14 +++ ApplicationDispatcher.java2001/05/04 03:41:10 1.15 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v 1.14 2001/05/03 23:04:15 craigmcc Exp $ - * $Revision: 1.14 $ - * $Date: 2001/05/03 23:04:15 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v 1.15 2001/05/04 03:41:10 craigmcc Exp $ + * $Revision: 1.15 $ + * $Date: 2001/05/04 03:41:10 $ * * * @@ -98,7 +98,7 @@ * codejavax.servlet.ServletResponseWrapper/code. * * @author Craig R. McClanahan - * @version $Revision: 1.14 $ $Date: 2001/05/03 23:04:15 $ + * @version $Revision: 1.15 $ $Date: 2001/05/04 03:41:10 $ */ final class ApplicationDispatcher @@ -199,7 +199,7 @@ /** * The debugging detail level for this component. */ -private int debug = 1; +private int debug = 0; /**
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core FastEngineMapper.java ContainerBase.java LocalStrings.properties StandardEngine.java StandardEngineValve.java
craigmcc01/05/03 22:07:09 Modified:catalina/src/share/org/apache/catalina/core ContainerBase.java LocalStrings.properties StandardEngine.java StandardEngineValve.java Added: catalina/src/share/org/apache/catalina/core FastEngineMapper.java Log: Make it possible to dynamically select the Mapper implementation class to use for the StandardEngine implementation. This is done by setting the mapperClass attribute of the Engine element. Add a new Mapper implementation for StandardEngine that is optimized for performance. Among other things, it caches mappings for all define host names and aliases, and remembers each mapping to the default host (if any) after the first time. No object creations occur during request processing. The default mapper is still the previous standard one. If you wish to experiment, select the new implementation by the following in your server.xml file: Engine ... mapperClass=org.apache.catalina.core.FastEngineMapper .../ When we are satisfied that this class works correctly, it will become the default. Revision ChangesPath 1.11 +5 -7 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java Index: ContainerBase.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- ContainerBase.java2001/04/10 01:37:08 1.10 +++ ContainerBase.java2001/05/04 05:07:07 1.11 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v 1.10 2001/04/10 01:37:08 craigmcc Exp $ - * $Revision: 1.10 $ - * $Date: 2001/04/10 01:37:08 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v 1.11 2001/05/04 05:07:07 craigmcc Exp $ + * $Revision: 1.11 $ + * $Date: 2001/05/04 05:07:07 $ * * * @@ -153,7 +153,7 @@ * class comments of the implementation class. * * @author Craig R. McClanahan - * @version $Revision: 1.10 $ $Date: 2001/04/10 01:37:08 $ + * @version $Revision: 1.11 $ $Date: 2001/05/04 05:07:07 $ */ public abstract class ContainerBase @@ -1031,6 +1031,7 @@ if (started) throw new LifecycleException (sm.getString(containerBase.alreadyStarted, logName())); + addDefaultMapper(this.mapperClass); started = true; // Start our subordinate components, if any @@ -1044,9 +1045,6 @@ ((Lifecycle) realm).start(); if ((resources != null) (resources instanceof Lifecycle)) ((Lifecycle) resources).start(); - - // Add a default Mapper if none have been defined - addDefaultMapper(this.mapperClass); // Start our Mappers, if any Mapper mappers[] = findMappers(); 1.32 +3 -185 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/LocalStrings.properties Index: LocalStrings.properties === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/LocalStrings.properties,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- LocalStrings.properties 2001/04/25 02:20:48 1.31 +++ LocalStrings.properties 2001/05/04 05:07:07 1.32 @@ -1,370 +1,188 @@ applicationContext.attributeEvent=Exception thrown by attributes event listener - applicationContext.requestDispatcher.iae=Path {0} does not start with a / character - applicationDispatcher.allocateException=Allocate exception for servlet {0} - applicationDispatcher.deallocateException=Deallocate exception for servlet {0} - applicationDispatcher.forward.ise=Cannot forward after response has been committed - applicationDispatcher.forward.throw=Forwarded resource threw an exception - applicationDispatcher.include.throw=Included resource threw an exception - applicationDispatcher.isUnavailable=Servlet {0} is currently unavailable - applicationDispatcher.serviceException=Servlet.service() for servlet {0} threw exception - applicationRequest.badParent=Cannot locate parent Request implementation - applicationRequest.badRequest=Request is not a javax.servlet.ServletRequestWrapper - applicationResponse.badParent=Cannot locate parent Response implementation - applicationResponse.badResponse=Response is not a javax.servlet.ServletResponseWrapper - containerBase.addDefaultMapper=Exception configuring default mapper of class {0} -
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core StandardContext.java StandardHost.java
craigmcc01/05/03 22:30:01 Modified:catalina/src/share/org/apache/catalina/core StandardContext.java StandardHost.java Log: Enable configuration of the default mapper class for StandardHost and StandardContext as well, in preparation for future optimized versions. Revision ChangesPath 1.57 +29 -4 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java Index: StandardContext.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- StandardContext.java 2001/04/30 21:55:07 1.56 +++ StandardContext.java 2001/05/04 05:30:00 1.57 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v 1.56 2001/04/30 21:55:07 craigmcc Exp $ - * $Revision: 1.56 $ - * $Date: 2001/04/30 21:55:07 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v 1.57 2001/05/04 05:30:00 craigmcc Exp $ + * $Revision: 1.57 $ + * $Date: 2001/05/04 05:30:00 $ * * * @@ -141,7 +141,7 @@ * * @author Craig R. McClanahan * @author Remy Maucherat - * @version $Revision: 1.56 $ $Date: 2001/04/30 21:55:07 $ + * @version $Revision: 1.57 $ $Date: 2001/05/04 05:30:00 $ */ public class StandardContext @@ -1067,6 +1067,31 @@ } jasperLoader = newLoader; return (jasperLoader); + +} + + +/** + * Return the default Mapper class name. + */ +public String getMapperClass() { + +return (this.mapperClass); + +} + + +/** + * Set the default Mapper class name. + * + * @param mapperClass The new default Mapper class name + */ +public void setMapperClass(String mapperClass) { + +String oldMapperClass = this.mapperClass; +this.mapperClass = mapperClass; +support.firePropertyChange(mapperClass, + oldMapperClass, this.mapperClass); } 1.13 +30 -5 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardHost.java Index: StandardHost.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardHost.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- StandardHost.java 2001/04/10 01:37:08 1.12 +++ StandardHost.java 2001/05/04 05:30:00 1.13 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardHost.java,v 1.12 2001/04/10 01:37:08 craigmcc Exp $ - * $Revision: 1.12 $ - * $Date: 2001/04/10 01:37:08 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardHost.java,v 1.13 2001/05/04 05:30:00 craigmcc Exp $ + * $Revision: 1.13 $ + * $Date: 2001/05/04 05:30:00 $ * * * @@ -100,7 +100,7 @@ * requests directed to a particular web application. * * @author Craig R. McClanahan - * @version $Revision: 1.12 $ $Date: 2001/04/10 01:37:08 $ + * @version $Revision: 1.13 $ $Date: 2001/05/04 05:30:00 $ */ public class StandardHost @@ -279,6 +279,31 @@ /** + * Return the default Mapper class name. + */ +public String getMapperClass() { + +return (this.mapperClass); + +} + + +/** + * Set the default Mapper class name. + * + * @param mapperClass The new default Mapper class name + */ +public void setMapperClass(String mapperClass) { + +String oldMapperClass = this.mapperClass; +this.mapperClass = mapperClass; +support.firePropertyChange(mapperClass, + oldMapperClass, this.mapperClass); + +} + + +/** * Return the canonical, fully qualified, name of the virtual host * this Container represents. */ @@ -775,7 +800,7 @@ } -// Private Methods +// -- Protected Methods /**