tc-3.2.2/3.2.3 Little Bug in ContextAdmin.java
Hi, with tomcat comes the admin-Context. When you use it and select the 'View All Context'-Button you get an IllegalArgumentException. The error arises because of the use of the class org.apache.tomcat.util.RequestUtil in the ContextAdmin-class which is used by the ContextAdmin-JSP. In tomcat 3.2.2 and 3.2.3 the RequestUtil-class throws the Exception when a '/' is URL-encoded in the Parameter-String (explained in the release-notes of 3.2.3). This happens e.g. in lines 76 and 92 of ContextAdmin.java. A quick solution is to use java.net.URLDecoder.decode() instead of RequestUtil. But this class was introduced in JDK 1.2, so users of older JDKs don't have this solution. I'm using 1.3, so the quick solution works fine for me :) If someone is interested in the diffs, I could send them, but they are very simple. If tomcat should run on JDKs prior to 1.2, I could write a small function in ContextAdmin, which translates the '/' before sending it to the RequestUtil-class and send the diffs of this. Bernd -- Dipl.-Inform. Bernd Koecke UNIX-Entwicklung Schlund+Partner AG Fon: +49-721-91374-0 E-Mail: [EMAIL PROTECTED]
mod_webapp
Hi, I have started to test mod_webapp I have some complains: - It needs gnu make but could have used normal make. - Should I change it? - - When configuring APR I need to pass some parameters: CC=/usr/bin/cc \ CFLAGS=-DXTI_SUPPORT \ ./configure --enable-static --disable-shared --disable-threads (I will add this to the README.txt) - The make build the java part but it needs CLASSPATH... (We use ant everywhere, why using make for mod_webapp). Cheers Jean-frederic
Re: Alternative to NSI
Frankly, Apache (HTTPd) went on for ages without installers, and it just went great... I don't see the need for it. On Unixes world Apache is easy to build and install but it's not so easy under Windows Boxes. More Windows users want to have such installer stuff and if you want to see Windows users (and newbies) you really need that.
Re: Problem with mod_jk 1.2.0 (latest CVS snapshot)
OOPS! Sorry :-( jk.conf (called from httpd.conf) - ### # Apache JK Configuration File# ### IfModule mod_jk.c JkWorkersFile /etc/tomcat/workers.properties JkLogFile /var/apache/logs/mod_jk.log JkLogLevelerror JkMount *.jsp ajp13 JkMount /*.jsp ajp13 JkMount *.vmajp13 JkMount /*.vm ajp13 JkMount /servlet/* ajp13 JkMount /login/j_security_check ajp13 /IfModule - workers.properties file: - ### #Apache JK Configuration File # ### # # Execution parameters ### # Setup for RedHat Linux system # workers.tomcat_home=/usr/local/tomcat workers.java_home=/usr/local/jdk ps=/ worker.list=ajp13 # Definition for Ajp13 worker # worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13 - BTW, this is the stuff that was running OK with Tomcat 3.3 M3 and it runs OK with CVS Tomcat 3.3 + mod_jk from M3. As for DSO, I'll have to work on that, so probably some time tomorrow (Sydney time). One of the points that I'm trying to make anyway is that statically linked Apache is supported, so mod_jk should run with it ;-) It runs faster anyhow and it uses less memory. Bojan Gomez Henri wrote: After including it in Apache 1.3.20, statically compiled/linked for RedHat Linux 7.0, the error messages 'child pid x exit signal Segmentation fault (11)' start appearing in the error log file of Apache. mod_jk from Tomcat 3.3 M3 works fine with both Tomcat M3 and the latest 3.3 CVS snapshot. Could you try to rebuild it dynamically (DSO) and see if the problem persist. Thanks to send us mod_jk parts in httpd.conf and workers.properties file :) Here is the scenario to replicate the problem: - start Tomcat and Apache, mod_jk for latest CVS - call a few JSP/Velocity or whichever pages that exercise mod_jk - restart Tomcat - restart Apache (gracefully!) 2 seconds after Tomcat's startup (I'm doing this from my startup script) - try to load any page from the site you were just browsing and you'll get errors along the lines that the web server didn't return anything - log files show segfaults If you stop Tomcat and Apache and start them again, this doesn't happen. Also, when mod_jk shipped with M3 is used everything is sweet. Don't know all that much about mod_jk, but it seems the problem is related to graceful restart of Apache and subsequent reconnection to Tomcat (ie. part of the code that does that was changed and ouch, segfault :-) Hope this helps. Bojan - Henri Gomez ___[_] EMAIL : [EMAIL PROTECTED](. .) PGP KEY : 697ECEDD...oOOo..(_)..oOOo... PGP Fingerprint : 9DF8 1EA8 ED53 2F39 DC9B 904A 364F 80E6
Re: Alternative to NSI
Why the heck does it matter what installer software that we use? As usually Jon, you only see what you want in the thread. JF proposed to use a JAVA OpenSource Installer, something you should understand and be agree with it to install java software on many platforms As long as people can easily modify it without having to purchase expensive software and that it does the job well, all that matters is that someone is doing the work to create the installer. I don't care if it is Java based or not and neither will the newbie who installs the software. If the users is experimented, it didn't need installer ! The installer are for newbies and ensure that all the stuff is installed correctly and nothing is missing. A great way to avoid questions in tomcat-user list... All the posts that I have seen suggesting another installer didn't actually come with any alternative installation scripts, so I consider those posts irrelevant to the discussion. You're right, I'll take a look at NSI for TC 3.3 and also VAInstall. I congratulate Remy on taking the initiative and Just Doing it. +1
Re: mod_webapp
jean-frederic clere at [EMAIL PROTECTED] wrote: Hi, I have started to test mod_webapp I have some complains: Oh, well... - It needs gnu make but could have used normal make. - Should I change it? - How about APR... Which one does it need? - When configuring APR I need to pass some parameters: CC=/usr/bin/cc \ CFLAGS=-DXTI_SUPPORT \ ./configure --enable-static --disable-shared --disable-threads (I will add this to the README.txt) I don't get why you have to specify the CC location (should be in your path) and enable XTI_SUPPORT... It's pointless to add them to the readme... If your platform requires those two things, they need to be updated in the APR configure script. - The make build the java part but it needs CLASSPATH... (We use ant everywhere, why using make for mod_webapp). So? The official Java build of the Warp code is the one in the jakarta-tomcat-4 repository... PIer
cvs commit: jakarta-tomcat-connectors/webapp README.txt
jfclere 01/07/18 06:20:11 Modified:webapp README.txt Log: Add CLASSPATH and APR configure environment variables. Revision ChangesPath 1.8 +17 -2 jakarta-tomcat-connectors/webapp/README.txt Index: README.txt === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/README.txt,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- README.txt2001/07/15 08:44:49 1.7 +++ README.txt2001/07/18 13:20:11 1.8 @@ -26,6 +26,13 @@ ./configure --with-apxs make +In case your platform needs some flags for APR just put them before the +configure. For example: + ./support/buildconf.sh + CC=/usr/bin/cc \ + CFLAGS=-DXTI_SUPPORT \ + ./configure --with-apxs=/opt/apache/bin/apxs + This will configure and build APR, and build the WebApp module for Apache 1.3. The available options for the configure script are: @@ -53,9 +60,17 @@ information. This will create a lot of output in your log files, and will kill performances, but it's a good starting poing when something goes wrong. + +To build the mod_webapp DSO module set the CLASSPATH to the catalina.jar +of your TOMCAT4.0 installation. (You need a GNU Make) +That something like the following: +CLASSPATH=$HOME/jakarta-tomcat-4.0/build/server/lib/catalina.jar +export CLASSPATH +make + +Once built, the DSO module will be found in the webapp/apache-1.3 directory. -Once built, the DSO module will be built in the webapp/apache-1.3 directory. -To install it copy the mod_webapp.so file in your Apache 1.3 libexec +To install it copy the mod_webapp.so file in your Apache 1.3 libexec directory, and add the following lines to httpd.conf: LoadModule webapp_module [path to mod_webapp.so]
[PATCH Suggestion] tc-3.2.3 Little bug in ContextAdmin.java
Hi, I got a request for the diff of ContextAdmin.java. Subject of my original posting was: tc-3.2.2/3.2.3 Little Bug in ContextAdmin.java Its not to long, so I send it to the list. The orig-class is the one shipped with tomcat-3.2.3. But again, it solves the problem only for Java2-Systems. I hope it's useful Bernd --- ContextAdmin.java.orig Wed Jul 18 15:25:25 2001 +++ ContextAdmin.java Wed Jul 18 15:25:53 2001 @@ -2,6 +2,7 @@ import java.util.Enumeration; import java.io.File; import java.net.URL; +import java.net.URLDecoder; import javax.servlet.http.*; import org.apache.tomcat.core.Request; @@ -73,7 +74,8 @@ v.addElement(FULL DOC BASE: + context.getDocumentBase().toString()); v.addElement(PATH: + context.getPath()); if (context.getWorkDir() != null) - v.addElement(WORK DIR: + RequestUtil.URLDecode(context.getWorkDir().getName())); + v.addElement(WORK DIR: + +URLDecoder.decode(context.getWorkDir().getName())); + //v.addElement(WORK DIR: + +RequestUtil.URLDecode(context.getWorkDir().getName())); v.addElement(DESCRIPTION: + context.getDescription()); v.addElement(SESSION TIMEOUT: + new Integer(context.getSessionTimeOut()).toString()); @@ -89,7 +91,8 @@ while (enum.hasMoreElements()) { key = (String)enum.nextElement(); v.addElement(ATTRIBUTE NAME: + key); - v.addElement(ATTRIBUTE: + RequestUtil.URLDecode(context.getAttribute(key).toString())); + v.addElement(ATTRIBUTE: + +URLDecoder.decode(context.getAttribute(key).toString())); + //v.addElement(ATTRIBUTE: + +RequestUtil.URLDecode(context.getAttribute(key).toString())); } v.addElement(SERVER INFO: + context.getEngineHeader());
Re: mod_webapp
Pier P. Fumagalli wrote: jean-frederic clere at [EMAIL PROTECTED] wrote: Hi, I have started to test mod_webapp I have some complains: Oh, well... - It needs gnu make but could have used normal make. - Should I change it? - How about APR... Which one does it need? Normal make. - When configuring APR I need to pass some parameters: CC=/usr/bin/cc \ CFLAGS=-DXTI_SUPPORT \ ./configure --enable-static --disable-shared --disable-threads (I will add this to the README.txt) I don't get why you have to specify the CC location (should be in your path) and enable XTI_SUPPORT... It's pointless to add them to the readme... If your platform requires those two things, they need to be updated in the APR configure script. I have just committed it - Have a look to it - (Yes, I could have added this to APR) - The make build the java part but it needs CLASSPATH... (We use ant everywhere, why using make for mod_webapp). So? The official Java build of the Warp code is the one in the jakarta-tomcat-4 repository... So I am just loosing time? Where hell is the correct code? (Should be in jakarta-tomcat-connectors!). PIer
TC4 URL BUG
Hi, I found TC4 can deal with x-www-form-urlencoded format (java.net.URLEncoder) url(GB2312), but can't deal with UTF-8 format url(GB2312). By the way, mod_jk connecter(java side) displayed the same bug. Dongsheng Song
Re: mod_webapp
On Wed, Jul 18, 2001 at 05:28:25PM +0200, jean-frederic clere wrote: The CVS I have does not compile because apr_socket_create()... It misses the inherit parameter! APR has added it to the apr_socket_create(). Should I fix it or just tell we need a tagged APR (like APACHE_2_0_20). I think it may get reverted back. Dean just vetoed this (well, rather, he said, I object.). There is a series of +1s to taking it back out and making the inherit call explicit. -- justin
Re: mod_webapp
On Wed, Jul 18, 2001 at 04:43:57PM +0100, Pier P. Fumagalli wrote: I have an old pre-sms version of APR I'm using, and it seems it's working on most platforms as-is... I might ask the APR guys to tag it with MOD_WEBAPP_1_0, or redistribute it in a nice tarball... Ha! -- justin
Re: Tomcat Frames
First, because servlet containers (and web servers, for that matter) don't have a clue about frames, it's 99.9% sure to be either an application error, a browser bug, or else a harmless warning that the browser stopped downloading one frame because some JavaScript in the page told it to do so. Second, these sorts of issues are better discussed on the TOMCAT-USER mailing list. Craig McClanahan On Mon, 16 Jul 2001, Cory Powers wrote: I am having issues using Tomcat with a frameset page that contains 4 frames, I do not have any problems with the same page when I reduce it to 3 frames. I have created a Bug in the Bugs Database(Bug #2605) and gotten no response. Can someone please assist me in getting this solved. The Bug entry has a lot more detail. Thanks, Cory [EMAIL PROTECTED]
Re: mod_webapp
Justin Erenkrantz at [EMAIL PROTECTED] wrote: On Wed, Jul 18, 2001 at 04:43:57PM +0100, Pier P. Fumagalli wrote: I have an old pre-sms version of APR I'm using, and it seems it's working on most platforms as-is... I might ask the APR guys to tag it with MOD_WEBAPP_1_0, or redistribute it in a nice tarball... Ha! -- justin What's funny? Pier
Re: mod_webapp
Nope... The official _stable_ WARP code is distributed with Tomcat 4.0, and resides in that CVS... The one you download from jakarta-tomcat-connectors is the working copy... As soon as I tag a stable version, that gets copied over into the official repository... So we will need to explain this in the README.txt. If the idea is to have the developement version in jakarta-tomcat-connectors and the maintenance mode one in Tomcat 4.0 that is great! (Otherwise it is confusing...). Aaron is pro README. j-t-c could really use a STATUS file as well...i'll attach the boilerplate STATUS to give us something to work with. If will change apjava.m4, so that if you don't specify --with-jdk, you won't compile java (remove the compile task, and remove all dependancies) sometimes in the future... Now it's not a priority (the priority is to have that piece of shit to pass the watchdog tests, soo). Maybe next week. The CVS I have does not compile because apr_socket_create()... It misses the inherit parameter! APR has added it to the apr_socket_create(). Should I fix it or just tell we need a tagged APR (like APACHE_2_0_20). Actually hold off on this, I think the function params will go back to normal shortly... -aaron ---cut here Jakarta-Tomcat-Connectors STATUS: -*-text-*- Last modified at [$Date: $] This project exists to ... Release: RELEASE SHOWSTOPPERS: Other bugs that need fixing: Other features that need writing: Documentation that needs writing: * Documentation? What documentation? Available Patches: Open issues:
RE: Problem starting latest nightly
On Wed, 18 Jul 2001, Kevin Jones wrote: lokoking at the nightly build for the 17th, you still have this code in Catalina.java mapper.addRule(prefix + /Loader, new CreateLoaderAction (org.apache.catalina.WebappLoader, className)); so I can start the server by specifying the StandardLoader (with className) but if I just have Loader checkInterval=3 / I get the same ClassNotFoundException as before, The patch was actually made yesterday (on the 17th), so this fix will have shown up in today's nightly build (the 18th). Kevin Jones DevelopMentor www.develop.com Craig -Original Message- From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]] Sent: 17 July 2001 17:34 To: Tomcat-Dev Subject: Re: Problem starting latest nightly On Tue, 17 Jul 2001, Kevin Jones wrote: I've just downloaded the latest nightly (20010716), and I can't get it to start. I have a context entry in server.xml that looks like this Context path=/AddressBook docBase=AddressBook debug=9 reloadable=true Loader checkInterval=3 lassname=org.apache.catalina.loader.StandardLoader/ /Context Thanks Kevin. I just fixed the default class name in Catalina.java (as you identified below). Now, if you don't specify a className attribute: Loader checkInterval=3/ you correctly get a WebappLoader instance. If you really want to use StandardLoader instead, you have to use className instead of classname, which is why you ran into this bug. Craig and I get the following error ERROR reading .\conf\server.xml At Line 199 /Server/Service/Engine/Host/Context/Loader/ checkInterval=3 classname=org.apache.catalina.loader.StandardLoader Catalina.start: java.lang.ClassNotFoundException: org.apache.catalina.WebappLoader java.lang.ClassNotFoundException: org.apache.catalina.WebappLoader at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardC lassLoader .java:1122) at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardC lassLoader .java:987) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:130) at org.apache.catalina.startup.CreateLoaderAction.start(Catalina.java:918) ... lots of XML mapper stuff ... at org.apache.catalina.startup.Catalina.start(Catalina.java:687) at org.apache.catalina.startup.Catalina.execute(Catalina.java:657) at org.apache.catalina.startup.Catalina.process(Catalina.java:178) at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:311) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:202) And indeed org.apache.catalina.WebappLoader doesn't exist although org.apache.catalina.loader.WebappLoader does Looking in Catalina.java I see an entry like this mapper.addRule(prefix + /Loader, new CreateLoaderAction(org.apache.catalina.WebappLoader, className)); I assume this should be mapper.addRule(prefix + /Loader, new CreateLoaderAction(org.apache.catalina.loader.WebappLoader, className)); Kevin Jones DevelopMentor www.develop.com
RE: Tomcat Frames
That is what I would have thought to but, as I noted in the bug report, I can reproduce the error in IE and Netscape on multiple platforms(different versions of Windows and Linux). Please take a look at this, I think there is a real issue here. I'm trying to investigate deeper but this is my first expirence with tomcat so I need figure out the code before I could really make any progress. Any pointers on where to look would be greatly appreciated. BTW I have posted this to the user list and recieved reports of other users having the same issue but, the only resolution was to restart the server and this did not work for me, strange... Thanks, Cory [EMAIL PROTECTED] -Original Message- From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]] Sent: Wednesday, July 18, 2001 11:59 AM To: '[EMAIL PROTECTED]' Subject: Re: Tomcat Frames First, because servlet containers (and web servers, for that matter) don't have a clue about frames, it's 99.9% sure to be either an application error, a browser bug, or else a harmless warning that the browser stopped downloading one frame because some JavaScript in the page told it to do so. Second, these sorts of issues are better discussed on the TOMCAT-USER mailing list. Craig McClanahan On Mon, 16 Jul 2001, Cory Powers wrote: I am having issues using Tomcat with a frameset page that contains 4 frames, I do not have any problems with the same page when I reduce it to 3 frames. I have created a Bug in the Bugs Database(Bug #2605) and gotten no response. Can someone please assist me in getting this solved. The Bug entry has a lot more detail. Thanks, Cory [EMAIL PROTECTED]
Re: mod_webapp
Justin Erenkrantz wrote: On Wed, Jul 18, 2001 at 05:28:25PM +0200, jean-frederic clere wrote: The CVS I have does not compile because apr_socket_create()... It misses the inherit parameter! APR has added it to the apr_socket_create(). Should I fix it or just tell we need a tagged APR (like APACHE_2_0_20). I think it may get reverted back. Dean just vetoed this (well, rather, he said, I object.). There is a series of +1s to taking it back out and making the inherit call explicit. -- justin I would advise to use a tagged version of APR in mod_webapp. Using the lastest one is/was not a good idea. I am using the APR tagged APACHE_2_0_20 for testing mod_webapp and it compiles Ok at least on 2 of test plateforms I use. (ReliantUnix and Linux).
Re: mod_webapp
On Wed, Jul 18, 2001 at 06:29:31PM +0200, jean-frederic clere wrote: I would advise to use a tagged version of APR in mod_webapp. Using the lastest one is/was not a good idea. I am using the APR tagged APACHE_2_0_20 for testing mod_webapp and it compiles Ok at least on 2 of test plateforms I use. (ReliantUnix and Linux). Keep in mind that we're still changing stuff around and we're not keeping backwards compatibility with anything because we haven't officially released APR. So, if you use an older tagged version for a while, you'll get stuck with a bunch of updates all at once that may not make any sense. Furthermore, this whole inherit thing wasn't the most thought-out patch we've committed into APR. I think we have a solution that is better and reverts us back to the old API. Bear with us. =) -- justin
Re: mod_webapp
Justin Erenkrantz at [EMAIL PROTECTED] wrote: On Wed, Jul 18, 2001 at 06:29:31PM +0200, jean-frederic clere wrote: I would advise to use a tagged version of APR in mod_webapp. Using the lastest one is/was not a good idea. I am using the APR tagged APACHE_2_0_20 for testing mod_webapp and it compiles Ok at least on 2 of test plateforms I use. (ReliantUnix and Linux). Keep in mind that we're still changing stuff around and we're not keeping backwards compatibility with anything because we haven't officially released APR. So, if you use an older tagged version for a while, you'll get stuck with a bunch of updates all at once that may not make any sense. Furthermore, this whole inherit thing wasn't the most thought-out patch we've committed into APR. I think we have a solution that is better and reverts us back to the old API. Bear with us. =) Choosing APR as the mod_webapp abstraction layer has been a well thought-out choice. When I started, I knew that APR was far from completion and its API were not stable, BUT the tradeoff of using that code is _incredible_. In the module source there isn't a single #ifdef dependant to the OS. That's why I'm oriented towards the use of CVS as a pure unstable development tree, having the Java classes copied over to jakarta-tomcat-4.0 when a release is tagged, and distributing an APR tarball with the sources of the module. Like in BSD, I want to get a UNSTABLE distribution (CVS, daily snapshots and so on, without APR), and a STABLE one (rolled tarballs, with APR). Pier
cvs commit: jakarta-tomcat-connectors/webapp README.txt
pier01/07/18 11:31:51 Modified:webapp README.txt Log: Describing the modifications to the build process. Revision ChangesPath 1.9 +8 -11 jakarta-tomcat-connectors/webapp/README.txt Index: README.txt === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/README.txt,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- README.txt2001/07/18 13:20:11 1.8 +++ README.txt2001/07/18 18:31:51 1.9 @@ -49,10 +49,14 @@ want to use them instead of checking them out from CVS, you can specify where these can be found. ---with-jdk=DIR -If the JAVA_HOME environment variable has not been set, you will -need to specify this option on the command line for the configure -script in order to compile the Java portion of WebApp. +--with-java[=JAVA_HOME] +Compile also the Java portion of WebApp. If the JAVA_HOME variable +is not set in your environment, you'll have to specify the root +path of your JDK installation on this command line. To compile +the Java classes, you will need to set your CLASSPATH variable to +include the catalina.jar distributed with Tomcat 4.0. Example: + # CLASSPATH=$CATALINA_HOME/server/lib/catalina.jar + # export CLASSPATH --enable-debug Enable compiled-in debugging output. Using this option the WebApp @@ -60,13 +64,6 @@ information. This will create a lot of output in your log files, and will kill performances, but it's a good starting poing when something goes wrong. - -To build the mod_webapp DSO module set the CLASSPATH to the catalina.jar -of your TOMCAT4.0 installation. (You need a GNU Make) -That something like the following: -CLASSPATH=$HOME/jakarta-tomcat-4.0/build/server/lib/catalina.jar -export CLASSPATH -make Once built, the DSO module will be found in the webapp/apache-1.3 directory.
cvs commit: jakarta-tomcat-4.0 build.xml tomcat.nsi
remm01/07/18 11:32:49 Modified:.build.xml tomcat.nsi Log: - Additional tweaks to make the shorcuts command line shorter (it's limited to 255 chars - originally, with the default install, it was 231 chars, so using any long path for the JDK would have broken the shotcuts). - Add an installation taget for a Windows system service (should work on WinNT, Win2k, WinXP). It shouldn't hurt to run that under 9x / Me, but it shouldn't do anything. The service is based on JavaService, and a binary is now needed to build the installer target. - Before uninstalling, stop the service !!! I'll add shell calls to stop it for you. - Obviously, the installation should be done as root. - More tweaks are needed for service shutdown. A specialized version of the Bootstrap and Catalina class will be written (since with JNI we have only one VM, no need for a socket, but the shutdown has to be syncronous). That will improve the security too, since right now, any user can kill Tomcat even when it's run as a service by issuing the shutdown command. Revision ChangesPath 1.29 +15 -12jakarta-tomcat-4.0/build.xml Index: build.xml === RCS file: /home/cvs/jakarta-tomcat-4.0/build.xml,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- build.xml 2001/07/16 23:07:46 1.28 +++ build.xml 2001/07/18 18:32:49 1.29 @@ -5,19 +5,20 @@ property file=build.properties/ property file=${user.home}/build.properties/ - property name=nsis.home value=c:\program files\nsis/ + property name=nsis.homevalue=c:\program files\nsis/ + property name=javaservice.home value=../javaservice/ - property name=catalina.build value=${basedir}/catalina/build/ - property name=jasper.buildvalue=${basedir}/jasper/build/ - property name=servletapi.home value=../jakarta-servletapi-4/dist/ - property name=tomcat.buildvalue=${basedir}/build/ - property name=tomcat.dist value=${basedir}/dist/ - property name=webapps.build value=${basedir}/webapps/build/ - property name=webapps.distvalue=${basedir}/webapps/dist/ - - property name=catalina.deploy value=${tomcat.build}/ - property name=jasper.deploy value=${tomcat.build}/ - property name=webapps.deploy value=${tomcat.build}/ + property name=catalina.build value=${basedir}/catalina/build/ + property name=jasper.build value=${basedir}/jasper/build/ + property name=servletapi.home value=../jakarta-servletapi-4/dist/ + property name=tomcat.build value=${basedir}/build/ + property name=tomcat.dist value=${basedir}/dist/ + property name=webapps.buildvalue=${basedir}/webapps/build/ + property name=webapps.dist value=${basedir}/webapps/dist/ + + property name=catalina.deploy value=${tomcat.build}/ + property name=jasper.deployvalue=${tomcat.build}/ + property name=webapps.deploy value=${tomcat.build}/ !-- = DEPLOY: Create Directories === -- @@ -171,6 +172,8 @@ copy todir=${tomcat.dist} fileset dir=resources / /copy +copy file=${javaservice.home}/bin/JavaService.exe + tofile=${tomcat.dist}/bin/tomcat.exe / copy file=tomcat.nsi tofile=${tomcat.dist}/tomcat.nsi / exec dir=${tomcat.dist} executable=${nsis.home}\makensis.exe arg value=tomcat.nsi / 1.10 +72 -2 jakarta-tomcat-4.0/tomcat.nsi Index: tomcat.nsi === RCS file: /home/cvs/jakarta-tomcat-4.0/tomcat.nsi,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- tomcat.nsi2001/07/16 23:07:46 1.9 +++ tomcat.nsi2001/07/18 18:32:49 1.10 @@ -1,6 +1,6 @@ ; Tomcat 4 script for Nullsoft Installer -; $Id: tomcat.nsi,v 1.9 2001/07/16 23:07:46 remm Exp $ +; $Id: tomcat.nsi,v 1.10 2001/07/18 18:32:49 remm Exp $ Name jakarta-tomcat-4.0 Caption Jakarta Tomcat 4.0 @@ -35,6 +35,7 @@ Section Tomcat 4.0 (required) SectionIn 1 2 3 + SetOutPath $INSTDIR File tomcat.ico File LICENSE @@ -51,6 +52,27 @@ File /r webapps\ROOT\WEB-INF File webapps\ROOT\*.* + ReadRegStr $1 HKLM SOFTWARE\JavaSoft\Java Development Kit CurrentVersion + ReadRegStr $2 HKLM SOFTWARE\JavaSoft\Java Development Kit\$1 JavaHome + + CopyFiles $2\lib\tools.jar $INSTDIR\common\lib 5 + +SectionEnd + +Section NT Service (NT/2k/XP only) + + SectionIn 1 2 3 + + ReadRegStr $1 HKLM SOFTWARE\JavaSoft\Java Development Kit CurrentVersion + ReadRegStr $2 HKLM SOFTWARE\JavaSoft\Java Development Kit\$1 JavaHome + + SetOutPath $INSTDIR\bin + File /oname=tomcat.exe bin\tomcat.exe + + ExecWait '$INSTDIR\bin\tomcat.exe -install
Re: cvs commit: jakarta-tomcat-4.0 build.xml tomcat.nsi
[EMAIL PROTECTED] at [EMAIL PROTECTED] wrote: - Add an installation taget for a Windows system service (should work on WinNT, Win2k, WinXP). It shouldn't hurt to run that under 9x / Me, but it shouldn't do anything. The service is based on JavaService, and a binary is now needed to build the installer target. - Before uninstalling, stop the service !!! I'll add shell calls to stop it for you. What's this? Are you using my service stuff (Compiled for Win???) Pier
cvs commit: jakarta-tomcat-connectors/webapp Makefile.in
pier01/07/18 11:45:05 Modified:webapp Makefile.in Log: Updated (local/apr)_(clean/all) to be (local/apr)-(clean/all) as APR does. Revision ChangesPath 1.13 +7 -7 jakarta-tomcat-connectors/webapp/Makefile.in Index: Makefile.in === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/Makefile.in,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- Makefile.in 2001/07/18 18:28:43 1.12 +++ Makefile.in 2001/07/18 18:45:05 1.13 @@ -56,7 +56,7 @@ # = # # @author Pier Fumagalli mailto:[EMAIL PROTECTED] -# @version $Id: Makefile.in,v 1.12 2001/07/18 18:28:43 pier Exp $ +# @version $Id: Makefile.in,v 1.13 2001/07/18 18:45:05 pier Exp $ include @SRCDIR@/Makedefs @@ -68,9 +68,9 @@ config.log \ config.status -all: apr_all local_all +all: apr-all local-all -clean: apr_clean local_clean +clean: apr-clean local-clean distclean: clean @echo Removing configure generated files... @@ -80,7 +80,7 @@ @echo Removing configure script... @rm -f configure -apr_all: +apr-all: @for DIR in $(APRDIR) ; do \ echo ; \ echo Compiling sources in $$DIR... ; \ @@ -93,7 +93,7 @@ fi ; \ done -apr_clean: +apr-clean: @for DIR in $(APRDIR) ; do \ echo ; \ echo Cleaning up $$DIR... ; \ @@ -106,7 +106,7 @@ fi ; \ done -local_all: +local-all: @for DIR in $(LOCALDIRS) ; do \ echo ; \ echo Compiling sources in $$DIR... ; \ @@ -119,7 +119,7 @@ fi ; \ done -local_clean: +local-clean: @for DIR in $(LOCALDIRS) ; do \ echo ; \ echo Cleaning up $$DIR... ; \
cvs commit: jakarta-tomcat-connectors/webapp/lib pr_warp.h pr_warp_config.c pr_warp_network.c pr_warp_packet.c .cvsignore Makefile.in pr_warp.c
pier01/07/18 12:08:35 Modified:webapp/lib .cvsignore Makefile.in pr_warp.c Added: webapp/lib pr_warp.h pr_warp_config.c pr_warp_network.c pr_warp_packet.c Log: Splitting WARP provider into several separate files to enhance maintainability Revision ChangesPath 1.5 +6 -0 jakarta-tomcat-connectors/webapp/lib/.cvsignore Index: .cvsignore === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/.cvsignore,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- .cvsignore2001/07/13 02:33:27 1.4 +++ .cvsignore2001/07/18 19:08:35 1.5 @@ -7,6 +7,12 @@ pr_info.o pr_warp.lo pr_warp.o +pr_warp_config.lo +pr_warp_config.o +pr_warp_network.lo +pr_warp_network.o +pr_warp_packet.lo +pr_warp_packet.o wa_config.lo wa_config.o wa_main.lo 1.12 +6 -2 jakarta-tomcat-connectors/webapp/lib/Makefile.in Index: Makefile.in === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/Makefile.in,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- Makefile.in 2001/07/13 02:08:42 1.11 +++ Makefile.in 2001/07/18 19:08:35 1.12 @@ -56,12 +56,16 @@ # = # # @author Pier Fumagalli mailto:[EMAIL PROTECTED] -# @version $Id: Makefile.in,v 1.11 2001/07/13 02:08:42 pier Exp $ +# @version $Id: Makefile.in,v 1.12 2001/07/18 19:08:35 pier Exp $ include @SRCDIR@/Makedefs OBJS = wa_main.lo wa_config.lo wa_request.lo -PROVS = pr_info.lo pr_warp.lo +PROVS = pr_info.lo \ + pr_warp.lo \ + pr_warp_packet.lo \ + pr_warp_network.lo \ + pr_warp_config.lo LIB = libwebapp.la 1.7 +2 -348jakarta-tomcat-connectors/webapp/lib/pr_warp.c Index: pr_warp.c === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/pr_warp.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- pr_warp.c 2001/07/15 08:39:58 1.6 +++ pr_warp.c 2001/07/18 19:08:35 1.7 @@ -54,359 +54,13 @@ * * * = */ -/* @version $Id: pr_warp.c,v 1.6 2001/07/15 08:39:58 pier Exp $ */ -#include wa.h +/* @version $Id: pr_warp.c,v 1.7 2001/07/18 19:08:35 pier Exp $ */ +#include pr_warp.h -/* * */ -/* STRUCTURES AND FUNCTIONS DECLARATION */ -/* * */ - -/* The WARP connection configuration structure */ -typedef struct warp_config { -apr_sockaddr_t *addr; -apr_socket_t *sock; -int serv; -} warp_config; - -/* The WARP packet structure */ -typedef struct warp_packet { -apr_pool_t *pool; -int type; -int size; -int curr; -char buff[65536]; -} warp_packet; - -/* WARP definitions */ -#define VERS_MAJOR 0 -#define VERS_MINOR 9 - -#define TYPE_INVALID -1 -#define TYPE_ERROR 0x00 -#define TYPE_FATAL 0xff - -#define TYPE_CONF_WELCOME 0x01 -#define TYPE_CONF_DEPLOY 0x02 -#define TYPE_CONF_APPLIC 0x03 -#define TYPE_CONF_DONE0x04 - - /* The list of all configured connections */ static wa_chain *warp_connections=NULL; /* The list of all deployed connections */ static wa_chain *warp_applications=NULL; -/* This provider */ -wa_provider wa_provider_warp; - -/* * */ -/* PACKET FUNCTIONS */ -/* * */ -static void p_reset(warp_packet *pack) { -pack-type=TYPE_INVALID; -pack-type=TYPE_INVALID; -pack-size=0; -pack-curr=0; -pack-buff[0]='\0'; -} - -static warp_packet *p_create(apr_pool_t *pool) { -warp_packet *pack=NULL; - -if (pool==NULL) return(NULL); -pack=(warp_packet *)apr_palloc(pool,sizeof(warp_packet)); -pack-pool=pool; -p_reset(pack); -return(pack); -} - -static wa_boolean p_read_ushort(warp_packet *pack, int *x) { -int k=0; - -if ((pack-curr+2)=pack-size) return(wa_false); -k=(pack-buff[pack-curr++]0x0ff)8; -k=k|(pack-buff[pack-curr++]0x0ff); -*x=k; -return(wa_true); -} - -static wa_boolean p_read_int(warp_packet *pack, int *x) { -int k=0; - -if
cvs commit: jakarta-tomcat-connectors/webapp/lib pr_warp.c pr_warp.h pr_warp_config.c pr_warp_network.c pr_warp_packet.c
pier01/07/18 12:12:38 Modified:webapp/lib pr_warp.c pr_warp.h pr_warp_config.c pr_warp_network.c pr_warp_packet.c Log: Where the hack that 2 came from? Revision ChangesPath 1.8 +2 -2 jakarta-tomcat-connectors/webapp/lib/pr_warp.c Index: pr_warp.c === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/pr_warp.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- pr_warp.c 2001/07/18 19:08:35 1.7 +++ pr_warp.c 2001/07/18 19:12:38 1.8 @@ -37,7 +37,7 @@ * * * THIS SOFTWARE IS PROVIDED AS IS AND ANY EXPRESSED OR IMPLIED WARRANTIES * * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * -2 * THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY * + * THE APACHE SOFTWARE FOUNDATION 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) * @@ -54,7 +54,7 @@ * * * = */ -/* @version $Id: pr_warp.c,v 1.7 2001/07/18 19:08:35 pier Exp $ */ +/* @version $Id: pr_warp.c,v 1.8 2001/07/18 19:12:38 pier Exp $ */ #include pr_warp.h /* The list of all configured connections */ 1.2 +2 -2 jakarta-tomcat-connectors/webapp/lib/pr_warp.h Index: pr_warp.h === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/pr_warp.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- pr_warp.h 2001/07/18 19:08:35 1.1 +++ pr_warp.h 2001/07/18 19:12:38 1.2 @@ -37,7 +37,7 @@ * * * THIS SOFTWARE IS PROVIDED AS IS AND ANY EXPRESSED OR IMPLIED WARRANTIES * * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * -2 * THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY * + * THE APACHE SOFTWARE FOUNDATION 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) * @@ -54,7 +54,7 @@ * * * = */ -/* @version $Id: pr_warp.h,v 1.1 2001/07/18 19:08:35 pier Exp $ */ +/* @version $Id: pr_warp.h,v 1.2 2001/07/18 19:12:38 pier Exp $ */ #ifndef _PR_WARP_H_ #define _PR_WARP_H_ 1.2 +3 -3 jakarta-tomcat-connectors/webapp/lib/pr_warp_config.c Index: pr_warp_config.c === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/pr_warp_config.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- pr_warp_config.c 2001/07/18 19:08:35 1.1 +++ pr_warp_config.c 2001/07/18 19:12:38 1.2 @@ -37,7 +37,7 @@ * * * THIS SOFTWARE IS PROVIDED AS IS AND ANY EXPRESSED OR IMPLIED WARRANTIES * * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * -2 * THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY * + * THE APACHE SOFTWARE FOUNDATION 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) * @@ -54,7 +54,7 @@ * * * = */ -/* @version $Id: pr_warp_config.c,v 1.1 2001/07/18 19:08:35 pier Exp $ */ +/* @version $Id: pr_warp_config.c,v 1.2 2001/07/18 19:12:38 pier Exp $ */ #include pr_warp.h wa_boolean n_check(wa_connection *conn, warp_packet *pack) { @@ -72,7 +72,7 @@ wa_log(WA_MARK,Invalid WARP packet %d (WELCOME),pack-type); return(wa_false); } - + if (p_read_ushort(pack,maj)!=wa_true) { wa_log(WA_MARK,Cannot read major version); return(wa_false); 1.2
Re: Tomcat Frames
I could be wrong but I thought that if the server supports HTTP 1.1 and the client does not receive a 'connection: close' with the response that it will re-use the connection. This means that some of the multiple simultaneous requests might be handled by the same connection and if the server has a bug in it's handling of persistent connections one might get an unexpected connection reset by peer. So, if all the other possibilities can be eliminated I would investigate the handling of persistent connections. Cheers, Forrest Craig R. McClanahan wrote: Servers don't know anything about frames. The only relevance it has in this context is the fact that your browser will typically do multiple requests (one per frame) simultaneously, up to some maximum -- typically 4. This is the same reason you see multiple images being downloaded simultaneously (these are also done on separate requests). In most browsers, the number of simultaneous requests is configurable somewhere. The server is reporting connection reset by peer in the middle of a request. That means one of the following things: * The browser started a request and the user pressed STOP. * The browser started an request in one frame and JavaScript on another frame told it to go somewhere else (which has the same effect as a user pressing STOP). * You have a meta refresh reload someplace that is firing so fast that the previous request hasn't had a chance to complete yet. The five second periodicity makes me pretty suspicious of this. * You have some network component in between (a router or proxy) that is misbehaving. * You have some completely separate connection attempts going on that are disobeying the HTTP protocol (such as doing a telnet connection to port 8080 and then disconnecting). Craig On Wed, 18 Jul 2001, Cory Powers wrote: That is what I would have thought to but, as I noted in the bug report, I can reproduce the error in IE and Netscape on multiple platforms(different versions of Windows and Linux). Please take a look at this, I think there is a real issue here. I'm trying to investigate deeper but this is my first expirence with tomcat so I need figure out the code before I could really make any progress. Any pointers on where to look would be greatly appreciated. BTW I have posted this to the user list and recieved reports of other users having the same issue but, the only resolution was to restart the server and this did not work for me, strange... Thanks, Cory [EMAIL PROTECTED] -Original Message- From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]] Sent: Wednesday, July 18, 2001 11:59 AM To: '[EMAIL PROTECTED]' Subject: Re: Tomcat Frames First, because servlet containers (and web servers, for that matter) don't have a clue about frames, it's 99.9% sure to be either an application error, a browser bug, or else a harmless warning that the browser stopped downloading one frame because some JavaScript in the page told it to do so. Second, these sorts of issues are better discussed on the TOMCAT-USER mailing list. Craig McClanahan On Mon, 16 Jul 2001, Cory Powers wrote: I am having issues using Tomcat with a frameset page that contains 4 frames, I do not have any problems with the same page when I reduce it to 3 frames. I have created a Bug in the Bugs Database(Bug #2605) and gotten no response. Can someone please assist me in getting this solved. The Bug entry has a lot more detail. Thanks, Cory [EMAIL PROTECTED] -- Forrest Girouard @ Openwave Systems Inc. phone: +1-650-480-4184 mailto:[EMAIL PROTECTED] http://www.openwave.com
cvs commit: jakarta-tomcat-connectors/webapp/lib pr_warp.c
pier01/07/18 12:19:26 Modified:webapp/lib pr_warp.c Log: Whops... Symbols for the WARP configurations are static. Revision ChangesPath 1.9 +5 -10 jakarta-tomcat-connectors/webapp/lib/pr_warp.c Index: pr_warp.c === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/pr_warp.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- pr_warp.c 2001/07/18 19:12:38 1.8 +++ pr_warp.c 2001/07/18 19:19:26 1.9 @@ -54,18 +54,9 @@ * * * = */ -/* @version $Id: pr_warp.c,v 1.8 2001/07/18 19:12:38 pier Exp $ */ +/* @version $Id: pr_warp.c,v 1.9 2001/07/18 19:19:26 pier Exp $ */ #include pr_warp.h -/* The list of all configured connections */ -static wa_chain *warp_connections=NULL; -/* The list of all deployed connections */ -static wa_chain *warp_applications=NULL; - -/* * */ -/* WEBAPP LIBRARY PROVIDER FUNCTIONS */ -/* * */ - /* Initialize this provider. */ static const char *warp_init(void) { wa_debug(WA_MARK,WARP provider initialized); @@ -199,6 +190,10 @@ return(wa_rerror(WA_MARK,r,500,Not yet implemented)); } +/* The list of all configured connections */ +wa_chain *warp_connections=NULL; +/* The list of all deployed connections */ +wa_chain *warp_applications=NULL; /* The warp provider structure */ wa_provider wa_provider_warp = { warp,
cvs commit: jakarta-tomcat-4.0/tester/web/WEB-INF web.xml
craigmcc01/07/18 13:17:18 Modified:tester/src/bin tester.xml tester/src/tester/org/apache/tester UpperCaseResponse.java tester/web/WEB-INF web.xml Added: tester/src/tester/org/apache/tester CharArrayResponse.java CharArrayWriterUpperCase.java ResponseWrap01.java ResponseWrap01a.java ResponseWrap01c.java Log: Unit tests for creating a response wrapper and then using it with a request dispatcher, testing both includes and forwards to servlets and JSP pages. Revision ChangesPath 1.59 +18 -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.58 retrieving revision 1.59 diff -u -r1.58 -r1.59 --- tester.xml2001/07/17 22:34:52 1.58 +++ tester.xml2001/07/18 20:17:17 1.59 @@ -737,6 +737,24 @@ request=${context.path}/Include07 debug=${debug} golden=${golden.path}/Include07.txt/ +!-- == Response Wrapping = -- + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/ResponseWrap01?type=Famp;page=/ResponseWrap01a + outContent=RESPONSEWRAP01A PASSED debug=${debug} / + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/ResponseWrap01?type=Famp;page=/ResponseWrap01b.jsp + outContent=RESPONSEWRAP01B PASSED debug=${debug} / + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/ResponseWrap01?type=Iamp;page=/ResponseWrap01c + outContent=RESPONSEWRAP01C PASSED debug=${debug} / + +tester host=${host} port=${port} protocol=${protocol} + request=${context.path}/ResponseWrap01?type=Iamp;page=/ResponseWrap01d.jsp + outContent=RESPONSEWRAP01D PASSED debug=${debug} / + /target 1.2 +12 -2 jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/UpperCaseResponse.java Index: UpperCaseResponse.java === RCS file: /home/cvs/jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/UpperCaseResponse.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- UpperCaseResponse.java2001/05/30 19:42:46 1.1 +++ UpperCaseResponse.java2001/07/18 20:17:17 1.2 @@ -69,7 +69,7 @@ * upper case. * * @author Craig R. McClanahan - * @version $Revision: 1.1 $ $Date: 2001/05/30 19:42:46 $ + * @version $Revision: 1.2 $ $Date: 2001/07/18 20:17:17 $ */ public class UpperCaseResponse extends HttpServletResponseWrapper { @@ -77,9 +77,16 @@ HttpServletResponse response = null; +boolean stream = false; // Wrap our own output stream + public UpperCaseResponse(HttpServletResponse response) { +this(response, false); +} + +public UpperCaseResponse(HttpServletResponse response, boolean stream) { super(response); this.response = response; +this.stream = stream; } public ServletOutputStream getOutputStream() throws IOException { @@ -87,7 +94,10 @@ } public PrintWriter getWriter() throws IOException { -return (new UpperCaseWriter(response.getWriter())); +if (stream) +return (new PrintWriter(getOutputStream(), true)); +else +return (new UpperCaseWriter(response.getWriter())); } 1.1 jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/CharArrayResponse.java Index: CharArrayResponse.java === /* = * * * * The Apache Software License, Version 1.1 * * * * Copyright (c) 1999, 2000, 2001 The Apache Software Foundation. * * All rights reserved.* * * * = * * * * Redistribution and use in source and binary forms, with or without modi- * * fication, are permitted provided that the following conditions are met: * * * * 1. Redistributions of source code must retain the
cvs commit: jakarta-tomcat/src/admin/test sanity-form.jsp
larryi 01/07/18 13:39:40 Modified:src/admin/test sanity-form.jsp Log: Add missing tests to the list Revision ChangesPath 1.4 +5 -1 jakarta-tomcat/src/admin/test/sanity-form.jsp Index: sanity-form.jsp === RCS file: /home/cvs/jakarta-tomcat/src/admin/test/sanity-form.jsp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- sanity-form.jsp 2001/02/10 19:08:15 1.3 +++ sanity-form.jsp 2001/07/18 20:39:40 1.4 @@ -8,9 +8,13 @@ optionrequestMap/option optionpost/option optionwrong_request/option - optionunavailable/option optionrestricted/option optionjsp/option + optionunavailable/option + optionheaders/option + optionsecurity_chk_url/option + optionsecurity_chk/option + optionaaa/option optionspecial/option optiontomcat-standalone/option optiontomcat-apache/option
Re: [DOC] INSTALL.txt
Hi, I'm gonna follow your doc to install tomcat 4 on mandrake tonight. I'll make change to it for *nix platforms and highlight them then e-mail you the revised copy 8o) Adam. Adam Fowler Help Desk Live Project Information Services University of Wales, Aberystwyth Web guy+author on the TomcatBook Project http://tomcatbook.sourceforge.net e-mail: [EMAIL PROTECTED] On Wednesday 18 July 2001 00:23, you wrote: Along the right line? Used the formatting from the TC4 readme files. Needs some polish. - r Content-Type: text/plain; charset=iso-8859-1; name=INSTALL.txt Content-Transfer-Encoding: quoted-printable Content-Description:
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/modules/session SessionId.java
larryi 01/07/18 14:06:38 Modified:src/share/org/apache/tomcat/modules/session SessionId.java Log: Fix postReadRequest() to remove ;jsessionid= from unparsedURI too. Revision ChangesPath 1.11 +7 -0 jakarta-tomcat/src/share/org/apache/tomcat/modules/session/SessionId.java Index: SessionId.java === RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/session/SessionId.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- SessionId.java2001/05/26 18:03:19 1.10 +++ SessionId.java2001/07/18 21:06:38 1.11 @@ -139,6 +139,13 @@ // rewrite URL, do I need to do anything more? request.requestURI().setString(uri.substring(0, foundAt)); +// remove from unparsedURI too, if not already +foundAt = request.unparsedURI().indexOf(sig); +if (foundAt!=-1) { +uri=request.unparsedURI().toString(); +request.unparsedURI().setString(uri.substring(0, foundAt)); +} + // No validate now - we just note that this is what the user // requested. request.setSessionIdSource( Request.SESSIONID_FROM_URL);
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/modules/mappers DecodeInterceptor.java
larryi 01/07/18 14:18:07 Modified:src/share/org/apache/tomcat/modules/mappers DecodeInterceptor.java Log: Updated to implement rejection of unsafe escapes, i.e. %25, %2E, %2F, and %5C which are '%','.','/', and '\' respectively. Note that the escape checking does not occur in the session id that follows ;jsessionid= if found to be present. This behavior is optional and is controled by the safe property, which defaults to true. Normalization has been moved so that it occurs prior to decoding. This means that getRequestURI() will return a normalized URI that remains encoded as required by the spec. There is support for this normalization in RFC1630 (thanks Danny). The normalization is also optional and is controlled by the normalize property, which defaults to true. The above rejection and normalization behavior is consistent with what has been implemented in Tomcat 4.0 and 3.2.3. Revision ChangesPath 1.6 +58 -14 jakarta-tomcat/src/share/org/apache/tomcat/modules/mappers/DecodeInterceptor.java Index: DecodeInterceptor.java === RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/mappers/DecodeInterceptor.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DecodeInterceptor.java2001/07/17 01:59:43 1.5 +++ DecodeInterceptor.java2001/07/18 21:18:07 1.6 @@ -67,7 +67,9 @@ /** * Default actions after receiving the request: get charset, unescape, - * pre-process. + * pre-process. This intercept can optionally normalize the request + * and check for certain unsafe escapes. Both of these options + * are on by default. * */ public class DecodeInterceptor extends BaseInterceptor { @@ -81,6 +83,7 @@ private int encodingInfoNote; private int sessionEncodingNote; +private boolean normalize=true; private boolean safe=true; public DecodeInterceptor() { @@ -105,10 +108,21 @@ charsetURIAttribute=; + charsetAttribute + =; } -/** Decode interceptor can normalize unsafe urls, by eliminating - dangerous things like /../, // , etc - all of them are known - as very dangerous for security. +/** Decode interceptor can normalize urls, per RFC 1630 */ +public void setNormalize( boolean b ) { + normalize=b; +} + +/** Decode interceptor can reject unsafe urls. These are +URL's containing the following escapes: +%25 = '%' +%2E = '.' +%2F = '/' +%5C = '\' +These are rejected because they interfere with URL's +pattern matching with reguard to security issues. +*/ public void setSafe( boolean b ) { safe=b; } @@ -241,6 +255,32 @@ } } + +private boolean isSafeURI(MessageBytes pathMB) { +int start = pathMB.indexOf(%); +if( start = 0 ) { +int end = pathMB.indexOf(;jsessionid=); +if( end 0 || start end ) { +int percent = pathMB.indexOfIgnoreCase(%25,start); +if( percent = 0 ( end 0 || percent end ) ) +return false; + +int period = pathMB.indexOfIgnoreCase(%2E,start); +if( period = 0 ( end 0 || period end ) ) +return false; + +int fslash = pathMB.indexOfIgnoreCase(%2F,start); +if( fslash = 0 ( end 0 || fslash end ) ) +return false; + +int bslash = pathMB.indexOfIgnoreCase(%5C,start); +if( bslash = 0 ( end 0 || bslash end ) ) +return false; +} +} + +return true; +} public int postReadRequest( Request req ) { MessageBytes pathMB = req.requestURI(); @@ -251,7 +291,21 @@ //if( path.indexOf(?) =0 ) // throw new RuntimeException(ASSERT: ? in requestURI); + +// If path is unsafe, return forbidden +if( safe !isSafeURI(pathMB) ) +return 403; + if( normalize + ( pathMB.indexOf(//) = 0 || + pathMB.indexOf(/. ) =0 + )) { + //debug=1; + normalizePath( pathMB ); + if( debug 0 ) + log( Normalized url + pathMB ); + } + // Set the char encoding first String charEncoding=null; MimeHeaders headers=req.getMimeHeaders(); @@ -331,16 +385,6 @@ log( Error decoding request , ex); return 400; } - } - - if( safe - ( pathMB.indexOf(//) = 0 || - pathMB.indexOf(/. ) =0 - )) { - //debug=1; -
cvs commit: jakarta-tomcat/src/tests/webpages/jsp ShowPathInfo.jsp
larryi 01/07/18 14:20:06 Modified:src/tests/webpages/WEB-INF test-tomcat.xml Added: src/tests/webpages/jsp ShowPathInfo.jsp Log: Add a JSP to show path information. Update tests per newly implemented DecodeInterceptor behavior. Revision ChangesPath 1.37 +88 -30jakarta-tomcat/src/tests/webpages/WEB-INF/test-tomcat.xml Index: test-tomcat.xml === RCS file: /home/cvs/jakarta-tomcat/src/tests/webpages/WEB-INF/test-tomcat.xml,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- test-tomcat.xml 2001/07/17 14:12:06 1.36 +++ test-tomcat.xml 2001/07/18 21:20:06 1.37 @@ -16,7 +16,7 @@ early tests. -- - property name=revision value=$Revision: 1.36 $ / + property name=revision value=$Revision: 1.37 $ / property name=host value=127.0.0.1 / property name=port value=8080 / property name=outputType value=text / @@ -1147,50 +1147,71 @@ target name=security_chk_url depends=init httpClient - httpRequest path=/test/aaa/protected/a/../index.jsp + httpRequest path=/test/jsp/a/../ShowPathInfo.jsp method=GET / - httpStatusMatch match=200 magnitude=false/ + httpStatusMatch match=200/ + responseMatch match=getRequestURI: /test/jsp/ShowPathInfo.jsp/ /httpClient httpClient - httpRequest path=/test/aaa/a/../protected/index.jsp + httpRequest path=/test/jsp/../jsp/ShowPathInfo.jsp method=GET / - httpStatusMatch match=200 magnitude=false/ + httpStatusMatch match=200/ + responseMatch match=getRequestURI: /test/jsp/ShowPathInfo.jsp/ /httpClient httpClient - httpRequest path=/test/aaa//protected/index.jsp + httpRequest path=/test/jsp//ShowPathInfo.jsp method=GET / - httpStatusMatch match=200 magnitude=false/ + httpStatusMatch match=200/ + responseMatch match=getRequestURI: /test/jsp/ShowPathInfo.jsp/ /httpClient httpClient - httpRequest path=/test/../test/aaa/protected/a/../index.jsp + httpRequest path=/test/../test/jsp/a/../ShowPathInfo.jsp method=GET / - httpStatusMatch match=200 magnitude=false/ + httpStatusMatch match=200/ + responseMatch match=getRequestURI: /test/jsp/ShowPathInfo.jsp/ /httpClient httpClient - httpRequest path=/test/aaa/./protected/index.jsp + httpRequest path=/test/jsp/./ShowPathInfo.jsp method=GET / - httpStatusMatch match=200 magnitude=false/ + httpStatusMatch match=200/ + responseMatch match=getRequestURI: /test/jsp/ShowPathInfo.jsp/ /httpClient httpClient - httpRequest path=/test/aaa/protected/../../snoop.jsp + httpRequest path=/test/jsp/a/../../jsp/ShowPathInfo.jsp method=GET / httpStatusMatch match=200/ + responseMatch match=getRequestURI: /test/jsp/ShowPathInfo.jsp/ /httpClient httpClient - httpRequest path=/test/snoop.jsp/. + httpRequest path=/test/jsp/ShowPathInfo.jsp/. method=GET / httpStatusMatch match=200/ + responseMatch match=getRequestURI: /test/jsp/ShowPathInfo.jsp/ /httpClient httpClient - httpRequest path=/test/snoop.jsp/./ + httpRequest path=/test/jsp/ShowPathInfo.jsp/foo/.. method=GET / httpStatusMatch match=200/ + responseMatch match=getRequestURI: /test/jsp/ShowPathInfo.jsp/ + responseMatch match=getPathInfo: null/ + /httpClient + httpClient + httpRequest path=/test/ShowPathInfo.jsp/./ + method=GET / + httpStatusMatch match=404/ /httpClient httpClient - httpRequest path=/test/snoop.jsp/foo/.. + httpRequest path=/test/jsp/ShowPathInfo.jsp;jsessionid=%25%2E%2F%5C method=GET / httpStatusMatch match=200/ + responseMatch match=getRequestURI: /test/jsp/ShowPathInfo.jsp/ /httpClient + httpClient + httpRequest path=/test/js%70/ShowPathInfo.jsp;jsessionid=%25%2E%2F%5C + method=GET / + httpStatusMatch match=200/ + responseMatch match=getRequestURI: /test/js%70/ShowPathInfo.jsp/ + /httpClient /target target name=security_chk depends=init,security_chk_url @@ -1201,12 +1222,12 @@ gtest description=This URL should return 404 Not Found request=GET
cvs commit: jakarta-tomcat/src/native/mod_jk/common jk_ajp13_worker.c
mmanders01/07/18 14:36:35 Modified:src/native/mod_jk/common jk_ajp13_worker.c Log: This fixes a problem with the new recovery handling in ajp13. The problem occurs when the user requests a page and presses stop before it is all back, and the protocol retries the request to the java backend. Since there is data in the reply buffer already, the code assumes it is post data and sends it to the java side. The data in the reply is still there and that gets passed around and eventually it shows up in the next request made by the browser; i.e. if the previous request was to servlet foo1, a request to foo2 returns the response from foo1. This should also fix the problem reported with frames displaying improperly (especially because of resets from the browser.) Revision ChangesPath 1.9 +25 -11jakarta-tomcat/src/native/mod_jk/common/jk_ajp13_worker.c Index: jk_ajp13_worker.c === RCS file: /home/cvs/jakarta-tomcat/src/native/mod_jk/common/jk_ajp13_worker.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- jk_ajp13_worker.c 2001/06/01 08:41:15 1.8 +++ jk_ajp13_worker.c 2001/07/18 21:36:35 1.9 @@ -58,7 +58,7 @@ * Author: Henri Gomez [EMAIL PROTECTED] * * Author: Costin [EMAIL PROTECTED] * * Author: Gal Shachor [EMAIL PROTECTED] * - * Version: $Revision: 1.8 $ * + * Version: $Revision: 1.9 $ * ***/ #include jk_pool.h @@ -74,6 +74,7 @@ #define DEF_RETRY_ATTEMPTS (1) #define DEF_CACHE_SZ(1) #define JK_INTERNAL_ERROR (-2) +#define JK_FATAL_ERROR (-3) #define MAX_SEND_BODY_SZ(DEF_BUFFER_SZ - 6) #define AJP13_HEADER_LEN (4) #define AJP13_HEADER_SZ_LEN (2) @@ -125,6 +126,7 @@ struct ajp13_operation { jk_msg_buf_t*request; /* original request storage */ jk_msg_buf_t*reply; /* reply storage (chuncked by ajp13 */ +jk_msg_buf_t*post; /* small post data storage area */ int uploadfd; /* future persistant storage id */ int recoverable;/* if exchange could be conducted on another TC */ }; @@ -309,6 +311,7 @@ } static int ajp13_process_callback(jk_msg_buf_t *msg, + jk_msg_buf_t *pmsg, ajp13_endpoint_t *ep, jk_ws_service_t *r, jk_logger_t *l) @@ -335,7 +338,7 @@ res.num_headers)) { jk_log(l, JK_LOG_ERROR, Error ajp13_process_callback - start_response failed\n); -return JK_INTERNAL_ERROR; +return JK_FATAL_ERROR; } } break; @@ -346,7 +349,7 @@ if(!r-write(r, jk_b_get_buff(msg) + jk_b_get_pos(msg), len)) { jk_log(l, JK_LOG_ERROR, Error ajp13_process_callback - write failed\n); -return JK_INTERNAL_ERROR; +return JK_FATAL_ERROR; } } break; @@ -366,7 +369,7 @@ } /* the right place to add file storage for upload */ - if(read_into_msg_buff(ep, r, msg, l, len)) { + if(read_into_msg_buff(ep, r, pmsg, l, len)) { r-content_read += len; return JK_AJP13_HAS_RESPONSE; } @@ -609,7 +612,7 @@ */ jk_log(l, JK_LOG_DEBUG, send_request 2: request body to send %d - request body to resend %d\n, - p-left_bytes_to_send, jk_b_get_len(op-reply) - AJP13_HEADER_LEN); + p-left_bytes_to_send, jk_b_get_len(op-post) - AJP13_HEADER_LEN); /* * POST recovery job is done here. @@ -619,8 +622,8 @@ * We send here the first part of data which was sent previously to the * remote Tomcat */ - if(jk_b_get_len(op-reply) AJP13_HEADER_LEN) { - if(!connection_tcp_send_message(p, op-reply, l)) { + if(jk_b_get_len(op-post) AJP13_HEADER_LEN) { + if(!connection_tcp_send_message(p, op-post, l)) { jk_log(l, JK_LOG_ERROR, Error resending request body\n); return JK_FALSE; } @@ -636,13 +639,13 @@ unsigned len = p-left_bytes_to_send; if(len MAX_SEND_BODY_SZ)
RE: [PATCH] Ajp13 wrong Response
Henri, Check what I just checked in to TC3.3. I'm pretty sure it is a more comprehensive fix for the same issue. We had seen this internally and needed a fix for it and so I just committed my fix. Mike Anderson [EMAIL PROTECTED] 07/10/01 01:58AM I'll study carefully this one to see if he didn't broke the recovery stuff added to handle case where tomcat is restarted... Thanks - Henri Gomez ___[_] EMAIL : [EMAIL PROTECTED](. .) PGP KEY : 697ECEDD...oOOo..(_)..oOOo... PGP Fingerprint : 9DF8 1EA8 ED53 2F39 DC9B 904A 364F 80E6 -Original Message- From: William Barker [mailto:[EMAIL PROTECTED]] Sent: Monday, July 09, 2001 8:58 PM To: [EMAIL PROTECTED] Subject: [PATCH] Ajp13 wrong Response This fixes the problem reported by Angel Aray in thread 23795. The diff is against TC3.3 M4. What was happening is that the user hitting the stop button in the browser was invoking the re-try broken connection logic. This totally freaks out the proxy server who now thinks that the re-sent page is actually the page for a different request.
RE: [DOC] INSTALL.txt
Heyya Adam, I'm gonna follow your doc to install tomcat 4 on mandrake tonight. I'll make change to it for *nix platforms and highlight them then e-mail you the revised copy 8o) Cool, thanks =) Hopefully after that, one of the TC4 committers will check it out and give it the 'ok' for inclusion. As well, we've sort of petered out on the big DOC movement. At this point, I'm just going to write everything I feel like in plain readme form like the release notes. It'll be easy enough to convert to whatever we end up using. - r
Re: cvs commit: jakarta-tomcat-4.0 build.xml tomcat.nsi
Quoting Pier P. Fumagalli [EMAIL PROTECTED]: [EMAIL PROTECTED] at [EMAIL PROTECTED] wrote: - Add an installation taget for a Windows system service (should work on WinNT, Win2k, WinXP). It shouldn't hurt to run that under 9x / Me, but it shouldn't do anything. The service is based on JavaService, and a binary is now needed to build the installer target. - Before uninstalling, stop the service !!! I'll add shell calls to stop it for you. What's this? Are you using my service stuff (Compiled for Win???) No, I'm bundling a binary of JavaService (a BSD licensed open-source project) until the official JSR 96 (or your interpretation of it) runs on Windows (is it possible to build it now ? I thought it wasn't). Remy
Re: cvs commit: jakarta-tomcat-4.0 build.xml tomcat.nsi
Remy Maucherat at [EMAIL PROTECTED] wrote: No, I'm bundling a binary of JavaService (a BSD licensed open-source project) until the official JSR 96 (or your interpretation of it) runs on Windows (is it possible to build it now ? I thought it wasn't). As per our conversation of yesterday night, I still need to modify something in Tomcat before it could work (basically, removing the stuff in the start() method that will wait and schedule a stop()) and add the load() method in the connectors... And by next week hopefully the guys down at westminster.ac.uk will have the Win32 sources (if not, I'm going to do them myself)... Can we shoot for a B7 after all those changes are in? Pier
Re: [DOC] INSTALL.txt
Wow, that was quick 8o) Always a good thing with install instructions! Here's the update INSTALL.txt Adam. Adam Fowler Help Desk Live Project Information Services University of Wales, Aberystwyth Web guy+author on the TomcatBook Project http://tomcatbook.sourceforge.net e-mail: [EMAIL PROTECTED] On Wednesday 18 July 2001 21:58, you wrote: Hi, I'm gonna follow your doc to install tomcat 4 on mandrake tonight. I'll make change to it for *nix platforms and highlight them then e-mail you the revised copy 8o) Adam. Adam Fowler Help Desk Live Project Information Services University of Wales, Aberystwyth Web guy+author on the TomcatBook Project http://tomcatbook.sourceforge.net e-mail: [EMAIL PROTECTED] On Wednesday 18 July 2001 00:23, you wrote: Along the right line? Used the formatting from the TC4 readme files. Needs some polish. - r Content-Type: text/plain; charset=iso-8859-1; name=INSTALL.txt Content-Transfer-Encoding: quoted-printable Content-Description: -- Apache Tomcat Version 4.0 Beta 6 Install Guide = cvs keyword thing INTRODUCTION: Welcome! This document explains how to perform a stand-alone installation of the Tomcat 4.0 servlet container. Once you're up and running, you will have access to the more detailed documentation locally via Tomcat's default home page, as well as administration and sample applications. As well, the documentation is available locally at: $CATALINA_HOME/webapps/docs/index.html where $CATALINA_HOME is the root of the directory you extracted the Tomcat files to. The absolute latest version of the documentation is always available online at the following URL: http://jakarta.apache.org/tomcat/tomcat-4.0-doc/index.html Because the documentation released with each version of Tomcat is the latest as of that release, there is a good chance the online documentation will be slightly updated. NOTE: It is STRONGLY reccomended that you complete this minimal, stand-alone installation before continuing on to more advanced topics. === DOWNLOADING: === In the rare occurence that you find yourself reading this file without a copy of Tomcat 4 to install, you can obtain the latest version here http://jakarta.apache.org/site/binindex.html == INSTALLING: == Fortunately, installing the Tomcat servlet container consists of a few, easy steps: extract the archive, and set environment variables. Of course, since Tomcat is written in Java, it is assumed that you have install at least version 1.2 of the JDK. You can download the JDK from Sun at the following URL http://java.sun.com/j2se/ 1) Unpack the files You've most likely completed this step already =) Lets say that for installation (A), you're on a Windows machine and you've unpacked the files to C:\tomcat Or for installation (B) on a *nix machine, you've unpacked it to /usr/local/tomcat cd /var (I thought TC should go in /var for most platforms???) mv tomcat-download-file /var/ tar xzvf jakarta-tomcat-4.0-br.tar.gz OR unzip jakarta-tomcat-4.0-br.tar.Z tar xvf jakarta-tomcat-4.0-br.tar 2) Set your environment variables Tomcat 4 requires 2 environment variables: CATALINA_HOME and JAVA_HOME. CATALINA_HOME should be set to the root of your Tomcat installation, and JAVA_HOME should be set to the root of your JDK installation. For the Win9X-series of operating systems, add the following lines to your C:\AUTOEXEC.BAT file: SET CATALINA_HOME=C:\tomcat SET JAVA_HOME=C:\jdk1.3.1 In WinNT-based systems, you modify environment variables by first right- clicking on the My Computer icon, and going to Properties. In NT you get to the properties by doing THIS, and in 2000, by doing THIS. For *nix, is there any different for the different shells? I'm no *nix expert by any means =) export CATALINA_HOME=/var/jakarta-tomcat-4.0-b5 export JAVA_HOME=/usr/java/jdk1.3 NB This should either be done in a systemV startup script or /etc/profile to make it system wide. (Preferably startup script so its available on tomcat start on boot if required) 3) Start it To start the container, execute the script appropriate to your operating system. The startup and shutdown scripts are named appropriately, and found in $CATALINA/bin. For *nix, that will be the scripts ending with the sh extension, and for Windows, bat. cd
[DOC] INSTALL.txt and Init Script...
Hey all, I've updated my initialisation script. Installation details are in the file. I also forgot to mention in my last post with regards to the nice INSTALL.txt 8o) that a symbolic link should be made like:- ln -s /var/jakarta-tomcat-4.0-b5/ /var/jakarta-tomcat So to allow easy upgrades. This is also detailed in the tomcat script (attached) Hope this helps. Adam. Adam Fowler Help Desk Live Project Information Services University of Wales, Aberystwyth Web guy+author on the TomcatBook Project http://tomcatbook.sourceforge.net e-mail: [EMAIL PROTECTED] tomcat systemV init script
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup BootstrapService.java CatalinaService.java
remm01/07/18 15:46:50 Added: catalina/src/share/org/apache/catalina/startup BootstrapService.java CatalinaService.java Log: - Add a Bootstrap and a Catalina class which do a synchronous stop operation without using a socket (which is a lot more secure, obviously). - Still doesn't solve the shutdown problem unfortunately, since Catalina's shutdown takes a very long time (without using any CPU time; I still don't know the reason for this), and NT will kill the service after about 30s idle. With only one or two contexts, the shutdown is faster, and will suceed. The error message added to NT's event log is : The Jakarta Tomcat service has timed out during a stop request and is being terminated. Revision ChangesPath 1.1 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/BootstrapService.java Index: BootstrapService.java === /* * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/BootstrapService.java,v 1.1 2001/07/18 22:46:50 remm Exp $ * $Revision: 1.1 $ * $Date: 2001/07/18 22:46:50 $ * * * * The Apache Software License, Version 1.1 * * Copyright (c) 1999 The Apache Software Foundation. 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. The end-user documentation included with the redistribution, if *any, must include the following acknowlegement: * This product includes software developed by the *Apache Software Foundation (http://www.apache.org/). *Alternately, this acknowlegement may appear in the software itself, *if and wherever such third-party acknowlegements normally appear. * * 4. The names The Jakarta Project, Tomcat, and Apache Software *Foundation must not be used to endorse or promote products derived *from this software without prior written permission. For written *permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called Apache *nor may Apache appear in their names without prior written *permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``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 APACHE SOFTWARE FOUNDATION 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 Apache Software Foundation. For more * information on the Apache Software Foundation, please see * http://www.apache.org/. * * [Additional notices, if required by prior licensing conditions] * */ package org.apache.catalina.startup; import java.io.File; import java.io.IOException; import java.lang.reflect.Method; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import org.apache.catalina.loader.Extension; import org.apache.catalina.loader.StandardClassLoader; /** * Special version of the Catalina bootstrap, designed to be invoked with JNI, * and designed to allow easier wrapping by system level components, which * would otherwise be confused by the asychronous startup and shutdown Catalina * uses. This class should be used to run Catalina as a system service under * Windows NT and clones. * * @author Craig R. McClanahan * @author Remy Maucherat * @version $Revision: 1.1 $ $Date: 2001/07/18 22:46:50 $ */ public final class BootstrapService { // ---
cvs commit: jakarta-tomcat-4.0/catalina build.xml
remm01/07/18 15:47:29 Modified:catalina build.xml Log: - Bundle the BootstrapService class in bootstrap.jar. Revision ChangesPath 1.49 +2 -2 jakarta-tomcat-4.0/catalina/build.xml Index: build.xml === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/build.xml,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- build.xml 2001/07/16 06:57:18 1.48 +++ build.xml 2001/07/18 22:47:29 1.49 @@ -159,7 +159,7 @@ !-- Construct bootstrap JAR file -- jar jarfile=${catalina.build}/bin/bootstrap.jar basedir=${catalina.build}/classes - includes=org/apache/catalina/startup/Bootstrap.class,org/apache/catalina/loader/StandardClassLoader*.class,org/apache/catalina/loader/Extension.class,org/apache/catalina/loader/Reloader.class,org/apache/catalina/startup/SecurityManagerDebug.class,org/apache/naming/JndiPermission.class + includes=org/apache/catalina/startup/Bootstrap.class,org/apache/catalina/startup/BootstrapService.class,org/apache/catalina/loader/StandardClassLoader*.class,org/apache/catalina/loader/Extension.class,org/apache/catalina/loader/Reloader.class,org/apache/catalina/startup/SecurityManagerDebug.class,org/apache/naming/JndiPermission.class manifest=etc/bootstrap.MF / jar jarfile=${catalina.build}/common/lib/naming.jar @@ -334,7 +334,7 @@ target name=deploy-main depends=deploy-static jar jarfile=${catalina.deploy}/server/lib/catalina.jar basedir=${catalina.build}/classes - excludes=**/org/apache/naming/**,**/connector/warp/**,org/apache/catalina/startup/Bootstrap.class,org/apache/catalina/loader/StandardClassLoader*.class,org/apache/catalina/loader/Extension.class,org/apache/catalina/loader/Reloader.class,org/apache/catalina/startup/SecurityManagerDebug.class / + excludes=**/org/apache/naming/**,**/connector/warp/**,org/apache/catalina/startup/Bootstrap.class,org/apache/catalina/startup/BootstrapService.class,org/apache/catalina/loader/StandardClassLoader*.class,org/apache/catalina/loader/Extension.class,org/apache/catalina/loader/Reloader.class,org/apache/catalina/startup/SecurityManagerDebug.class / jar jarfile=${catalina.deploy}/server/lib/warp.jar basedir=${catalina.build}/classes includes=**/connector/warp/** /
cvs commit: jakarta-tomcat-4.0 tomcat.nsi
remm01/07/18 15:49:02 Modified:.tomcat.nsi Log: - Use BootstrapService class instead of Bootstrap. Revision ChangesPath 1.11 +3 -3 jakarta-tomcat-4.0/tomcat.nsi Index: tomcat.nsi === RCS file: /home/cvs/jakarta-tomcat-4.0/tomcat.nsi,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- tomcat.nsi2001/07/18 18:32:49 1.10 +++ tomcat.nsi2001/07/18 22:49:02 1.11 @@ -1,6 +1,6 @@ ; Tomcat 4 script for Nullsoft Installer -; $Id: tomcat.nsi,v 1.10 2001/07/18 18:32:49 remm Exp $ +; $Id: tomcat.nsi,v 1.11 2001/07/18 22:49:02 remm Exp $ Name jakarta-tomcat-4.0 Caption Jakarta Tomcat 4.0 @@ -55,7 +55,7 @@ ReadRegStr $1 HKLM SOFTWARE\JavaSoft\Java Development Kit CurrentVersion ReadRegStr $2 HKLM SOFTWARE\JavaSoft\Java Development Kit\$1 JavaHome - CopyFiles $2\lib\tools.jar $INSTDIR\common\lib 5 + CopyFiles $2\lib\tools.jar $INSTDIR\common\lib 4500 SectionEnd @@ -69,7 +69,7 @@ SetOutPath $INSTDIR\bin File /oname=tomcat.exe bin\tomcat.exe - ExecWait '$INSTDIR\bin\tomcat.exe -install Jakarta Tomcat $2\jre\bin\hotspot\jvm.dll -Djava.class.path=$INSTDIR\bin\bootstrap.jar -Dcatalina.home=$INSTDIR -start org.apache.catalina.startup.Bootstrap -params start -stop org.apache.catalina.startup.Bootstrap -params stop -out $INSTDIR\logs\stdout.log -err $INSTDIR\logs\stderr.log' + ExecWait '$INSTDIR\bin\tomcat.exe -install Jakarta Tomcat $2\jre\bin\hotspot\jvm.dll -Djava.class.path=$INSTDIR\bin\bootstrap.jar -Dcatalina.home=$INSTDIR -start org.apache.catalina.startup.BootstrapService -params start -stop org.apache.catalina.startup.BootstrapService -params stop -out $INSTDIR\logs\stdout.log -err $INSTDIR\logs\stderr.log' ClearErrors
Re: cvs commit: jakarta-tomcat-4.0 build.xml tomcat.nsi
Quoting Pier P. Fumagalli [EMAIL PROTECTED]: Remy Maucherat at [EMAIL PROTECTED] wrote: No, I'm bundling a binary of JavaService (a BSD licensed open-source project) until the official JSR 96 (or your interpretation of it) runs on Windows (is it possible to build it now ? I thought it wasn't). As per our conversation of yesterday night, I still need to modify something in Tomcat before it could work (basically, removing the stuff in the start() method that will wait and schedule a stop()) and add the load() method in the connectors... Guess what, I needed that too for the NT service ;-) So I did it. It's BootstrapService and CatalinaService. They don't expose a damn shutdown socket, and they don't shutdown asychronously. Of course, since the time needed to shutdown TC 4 is waaay too long, NT still ends up killing TC before the end of the shutdown, but at least it's a step in the right direction. Can we shoot for a B7 after all those changes are in? I think we can. Remy
Re: cvs commit: jakarta-tomcat-4.0 build.xml tomcat.nsi
Remy Maucherat at [EMAIL PROTECTED] wrote: Guess what, I needed that too for the NT service ;-) Boom :) We're game, so... All we need, then, is to extend load() up to the connectors so that under UNIX we can bind to ports 1024 (as load() is called as root :) So I did it. It's BootstrapService and CatalinaService. They don't expose a damn shutdown socket, and they don't shutdown asychronously. Friggin' great... First time someone commits some code I need without me asking for it :) Of course, since the time needed to shutdown TC 4 is waaay too long, NT still ends up killing TC before the end of the shutdown, but at least it's a step in the right direction. I believe (but I'm not sure) that under Win32 you can actually tell to the Service loader to hold for a longer time... I have to check... Can we shoot for a B7 after all those changes are in? I think we can. Whoho! Let's make a B6 with the connector and a B7 with the ability to bind to port 80 without running as root, then (I'll request a vote after B6 is gone!) Pier
cvs commit: jakarta-tomcat-connectors/webapp/java WarpLogger.java WarpConfigurationHandler.java WarpConnection.java WarpConnector.java
pier01/07/18 16:12:49 Modified:webapp/java WarpConfigurationHandler.java WarpConnection.java WarpConnector.java Added: webapp/java WarpLogger.java Log: Improved logging/debugging output of private components within the WARP connector. Revision ChangesPath 1.6 +8 -4 jakarta-tomcat-connectors/webapp/java/WarpConfigurationHandler.java Index: WarpConfigurationHandler.java === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/java/WarpConfigurationHandler.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- WarpConfigurationHandler.java 2001/07/15 08:40:58 1.5 +++ WarpConfigurationHandler.java 2001/07/18 23:12:49 1.6 @@ -64,12 +64,18 @@ public class WarpConfigurationHandler { +/* */ +/* Constructor */ +/* */ + public WarpConfigurationHandler() { super(); } public boolean handle(WarpConnection connection) throws IOException { +WarpLogger logger=new WarpLogger(this); +logger.setContainer(connection.getConnector().getContainer()); WarpPacket packet=new WarpPacket(); // Prepare the Welcome packet @@ -86,11 +92,9 @@ String path=packet.readString(); if (Constants.DEBUG) -connection.getConnector().debug(this,Deploying application \+appl+ -\ under \http://+host+:+port+path); +logger.debug(Deploying application \+appl+\ under \http://+ + host+:+port+path); return(true); -//while (true) { -//connection.recv(packet); } } 1.14 +12 -12jakarta-tomcat-connectors/webapp/java/WarpConnection.java Index: WarpConnection.java === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/java/WarpConnection.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- WarpConnection.java 2001/07/15 08:40:58 1.13 +++ WarpConnection.java 2001/07/18 23:12:49 1.14 @@ -82,6 +82,8 @@ private boolean started=false; /** The local thread. */ private Thread thread=null; +/** Our logger. */ +private WarpLogger logger=null; /* */ /* Bean variables */ @@ -100,6 +102,7 @@ */ public WarpConnection() { super(); +this.logger=new WarpLogger(this); } /* */ @@ -125,6 +128,7 @@ */ public void setConnector(WarpConnector connector) { this.connector=connector; +this.logger.setContainer(connector.getContainer()); } /** @@ -166,7 +170,7 @@ this.socket.close(); this.getConnector().removeLifecycleListener(this); } catch (IOException e) { -this.getConnector().log(this,Cannot close socket,e); +logger.log(Cannot close socket,e); } } } @@ -175,8 +179,7 @@ * Process data from the socket. */ public void run() { -if (Constants.DEBUG) -this.getConnector().debug(this,Connection starting); +if (Constants.DEBUG) logger.debug(Connection starting); try { this.input=this.socket.getInputStream(); @@ -185,11 +188,10 @@ this.stop(); } catch (IOException e) { -this.getConnector().log(this,Exception on socket,e); +logger.log(Exception on socket,e); } -if (Constants.DEBUG) -this.getConnector().debug(this,Connection terminated); +if (Constants.DEBUG) logger.debug(Connection terminated); } /* */ @@ -202,9 +204,8 @@ public void send(WarpPacket packet) throws IOException { if (Constants.DEBUG) { -this.getConnector().debug(this, TYPE=+packet.getType()+ -LENGTH=+packet.size); -this.getConnector().debug(this, +packet.dump()); +logger.debug( TYPE=+packet.getType()+ LENGTH=+packet.size); +logger.debug( +packet.dump()); } this.output.write(packet.getType()0x0ff); @@ -244,9 +245,8 @@ } if
cvs commit: jakarta-tomcat-4.0 tomcat.nsi
remm01/07/18 16:14:04 Modified:.tomcat.nsi Log: - Don't install the system service by default. Revision ChangesPath 1.12 +2 -2 jakarta-tomcat-4.0/tomcat.nsi Index: tomcat.nsi === RCS file: /home/cvs/jakarta-tomcat-4.0/tomcat.nsi,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- tomcat.nsi2001/07/18 22:49:02 1.11 +++ tomcat.nsi2001/07/18 23:14:03 1.12 @@ -1,6 +1,6 @@ ; Tomcat 4 script for Nullsoft Installer -; $Id: tomcat.nsi,v 1.11 2001/07/18 22:49:02 remm Exp $ +; $Id: tomcat.nsi,v 1.12 2001/07/18 23:14:03 remm Exp $ Name jakarta-tomcat-4.0 Caption Jakarta Tomcat 4.0 @@ -61,7 +61,7 @@ Section NT Service (NT/2k/XP only) - SectionIn 1 2 3 + SectionIn 3 ReadRegStr $1 HKLM SOFTWARE\JavaSoft\Java Development Kit CurrentVersion ReadRegStr $2 HKLM SOFTWARE\JavaSoft\Java Development Kit\$1 JavaHome
[TC4.0] Disabling debug output...
Checking out the source code, I see a lot of // (commented out lines) when debug() is supposed to be called... Can't we have a global constant boolean called DEBUG and replace the // with if (DEBUG), so that we can simply compile in and out the debugging information without touching the sources? Check out org.apache.catalina.connector.warp.Constants and WarpLogger... Old trick we used in JServ. :) Pier
cvs commit: jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime JspRuntimeLibrary.java
horwat 01/07/18 16:16:20 Modified:jasper/src/share/org/apache/jasper/runtime JspRuntimeLibrary.java Log: Fix the class comparison when converting property values. Bugzilla #2655 Revision ChangesPath 1.7 +5 -5 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/JspRuntimeLibrary.java Index: JspRuntimeLibrary.java === RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/JspRuntimeLibrary.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- JspRuntimeLibrary.java2001/04/25 02:52:54 1.6 +++ JspRuntimeLibrary.java2001/07/18 23:16:20 1.7 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/JspRuntimeLibrary.java,v 1.6 2001/04/25 02:52:54 horwat Exp $ - * $Revision: 1.6 $ - * $Date: 2001/04/25 02:52:54 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/JspRuntimeLibrary.java,v 1.7 2001/07/18 23:16:20 horwat Exp $ + * $Revision: 1.7 $ + * $Date: 2001/07/18 23:16:20 $ * * * @@ -167,12 +167,12 @@ return new Long(s); } else if ( t.equals(Double.class) || t.equals(Double.TYPE) ) { return new Double(s); -} else if ( t.equals(Object.class) ) { -return new Object[] {s}; } else if ( t.equals(String.class) ) { return s; } else if ( t.equals(java.io.File.class) ) { return new java.io.File(s); +} else if (t.getName().equals(java.lang.Object)) { +return new Object[] {s}; } else { return getValueFromPropertyEditorManager( t, propertyName, s);
RE: [TC4.0] Disabling debug output...
Check out org.apache.catalina.connector.warp.Constants and WarpLogger... Old trick we used in JServ. :) Is Log4j not a good idea? I've used it for a couple of months, seems pretty cool =) Too much for TC? - r
cvs commit: jakarta-tomcat-connectors/jk/native/apache-1.3 Makefile.nw
mmanders01/07/18 16:35:37 Modified:jk/native/apache-1.3 Makefile.nw Log: Added -DUSE_SPRINTF to compile flags since there isn't an snprintf currently available on NetWare. Revision ChangesPath 1.7 +1 -0 jakarta-tomcat-connectors/jk/native/apache-1.3/Makefile.nw Index: Makefile.nw === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-1.3/Makefile.nw,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- Makefile.nw 2001/06/07 13:48:42 1.6 +++ Makefile.nw 2001/07/18 23:35:37 1.7 @@ -90,6 +90,7 @@ @echo -DN_PLAT_NLM $@ @echo -DNETWARE $@ @echo -DXP_NETWARE $@ + @echo -DUSE_SPRINTF $@ link.opt: Makefile.nw -@del link.opt NUL
cvs commit: jakarta-tomcat-connectors/jk/native/netscape Makefile.nw
mmanders01/07/18 16:38:12 Modified:jk/native/netscape Makefile.nw Log: Added -DUSE_SPRINTF to compile flags since there isn't an snprintf currently available on NetWare. Revision ChangesPath 1.6 +1 -0 jakarta-tomcat-connectors/jk/native/netscape/Makefile.nw Index: Makefile.nw === RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/netscape/Makefile.nw,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- Makefile.nw 2001/06/07 14:19:34 1.5 +++ Makefile.nw 2001/07/18 23:38:12 1.6 @@ -86,6 +86,7 @@ @echo -DN_PLAT_NLM $@ @echo -DNETWARE $@ @echo -DXP_NETWARE $@ + @echo -DUSE_SPRINTF $@ link.opt: Makefile.nw -@del link.opt NUL
RE: [DOC] RS-INSTALL.txt
Uhm, that sounds insulting! =) What I *meant* was that I removed the separators Adam put in to denote his new additions, and took out the questions I left in there. - r -Original Message- From: Rob S. [mailto:[EMAIL PROTECTED]] Sent: Wednesday, July 18, 2001 7:47 PM To: Tomcat-Dev@Jakarta. Apache. Org Subject: [DOC] RS-INSTALL.txt Here's a new version with *nix stuff appropriately entered. Any TC4 ppl care to comment on accuracy, etc? It's not that long ;) - r
Re: [TC4.0] Disabling debug output...
Rob S. at [EMAIL PROTECTED] wrote: Check out org.apache.catalina.connector.warp.Constants and WarpLogger... Old trick we used in JServ. :) Is Log4j not a good idea? I've used it for a couple of months, seems pretty cool =) Too much for TC? I believe the integration with Log4J is planned for TC4.1, as it involves an extensive rewrite of the Tomcat code... I wouldn't want to screw up it all _now_ :) :) :) Pier
cvs commit: jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler JspUtil.java
horwat 01/07/18 16:53:49 Modified:jasper/src/share/org/apache/jasper/compiler JspUtil.java Log: When converting an expression into XML, escape out the quotation characters. Bugzilla #2671 Revision ChangesPath 1.10 +4 -4 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java Index: JspUtil.java === RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- JspUtil.java 2001/07/17 22:12:03 1.9 +++ JspUtil.java 2001/07/18 23:53:49 1.10 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java,v 1.9 2001/07/17 22:12:03 horwat Exp $ - * $Revision: 1.9 $ - * $Date: 2001/07/17 22:12:03 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java,v 1.10 2001/07/18 23:53:49 horwat Exp $ + * $Revision: 1.10 $ + * $Date: 2001/07/18 23:53:49 $ * * * @@ -196,7 +196,7 @@ returnString = expression; } -return returnString; +return escapeXml(returnString); } /**
Re: [DOC] RS-INSTALL.txt
Rob S. at [EMAIL PROTECTED] wrote: Here's a new version with *nix stuff appropriately entered. Any TC4 ppl care to comment on accuracy, etc? It's not that long ;) Seems OK for me (off of my head, didn't check it step-by-step, though!) Pier
[FAQ] jGuru FAQ Update
jGuru maintains FAQs and Forums on Servlets, JSP, and Tomcat (as well as many other Java topics). Here is an automated update on recent postings to Tomcat-related FAQs. Please direct flames and feedback to [EMAIL PROTECTED] . - Alex SPONSORED BY developerWorks need it? get it. tools, code and tutorials for open-standards based development. Stay informed with dW's weekly email newsletter http://www.jguru.com/misc/register_devworks.jsp?src=notify - Hi. You asked to be notified daily when certain jGuru.com items get new entries. You can shut email notification off at the FAQ home page(s) or: http://www.jguru.com/guru/notifyprefs.jsp ++ Servlets FAQ: http://www.jguru.com/faq/Servlets How do I trap a 404 error inside my servlet if my servlet does a ttRequestDispatcher/tt to a non-existent page ? http://www.jguru.com/misc/faqtrampoline.jsp?src=notifyEID=457102
Re: mod_webapp
At 04:43 PM 7/18/01 +0100, you wrote: jean-frederic clere at [EMAIL PROTECTED] wrote: Nope... The official _stable_ WARP code is distributed with Tomcat 4.0, and resides in that CVS... The one you download from jakarta-tomcat-connectors is the working copy... As soon as I tag a stable version, that gets copied over into the official repository... So we will need to explain this in the README.txt. If the idea is to have the developement version in jakarta-tomcat-connectors and the maintenance mode one in Tomcat 4.0 that is great! (Otherwise it is confusing...). Hmm... Ok... If will change apjava.m4, so that if you don't specify --with-jdk, you won't compile java (remove the compile task, and remove all dependancies) sometimes in the future... Now it's not a priority (the priority is to have that piece of shit to pass the watchdog tests, soo). Maybe next week. The CVS I have does not compile because apr_socket_create()... It misses the inherit parameter! APR has added it to the apr_socket_create(). Should I fix it or just tell we need a tagged APR (like APACHE_2_0_20). I have an old pre-sms version of APR I'm using, and it seems it's working on most platforms as-is... I might ask the APR guys to tag it with MOD_WEBAPP_1_0, or redistribute it in a nice tarball... Pier, I just ran into that problem myself: I think you can't get the older version of APR anymore (or rather: I wasn't able to find it). I was able to get everything to compile by just adding the parameter in the function call. However, didn't get around to test it yet. Klaus Pier
BugRat Report #713 - Cannot Start Tomcat (Resource Bundle not found)
- Sender's Comment - http://znutar.cortexity.com/BugRatViewer/ShowReport/713 - End Of Sender's Comment --- Report URL: http://znutar.cortexity.com/BugRatViewer/ShowReport/713 Report #713 Details Project: Tomcat Category: Bug Report SubCategory: New Bug Report Class: swbug State: received Priority: high Severity: critical Confidence: public Environment: Release: 3.2.1 JVM Release: 1.3 Operating System: Win 2000 OS Release: SP 1 Platform: Intel P3 766 Synopsis: Cannot Start Tomcat (Resource Bundle not found) Description: This is the error I get when I tried to start tomcat. I have no idea why. The same exact installation on another machine starts fine. What could cause this? Exception in thread main java.lang.ExceptionInInitializerError: java.util.Miss ingResourceException: Can't find bundle for base name org.apache.tomcat.resource s.LocalStrings, locale en_US at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle .java:707) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:679) at java.util.ResourceBundle.getBundle(ResourceBundle.java:546) at org.apache.tomcat.util.StringManager.init(StringManager.java:115) at org.apache.tomcat.util.StringManager.getManager(StringManager.java:26 0) at org.apache.tomcat.startup.Tomcat.clinit(Tomcat.java:24)
re: BugRat Report #713 - Cannot Start Tomcat (Resource Bundle notfound)
Um ... different locales on the two different machines? Description: This is the error I get when I tried to start tomcat. I have no idea why. The same exact installation on another machine starts fine. What could cause this? Exception in thread main java.lang.ExceptionInInitializerError: java.util.Miss ingResourceException: Can't find bundle for base name org.apache.tomcat.resource s.LocalStrings, locale en_US at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle .java:707) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:679) at java.util.ResourceBundle.getBundle(ResourceBundle.java:546) at org.apache.tomcat.util.StringManager.init(StringManager.java:115) at org.apache.tomcat.util.StringManager.getManager(StringManager.java:26 0) at org.apache.tomcat.startup.Tomcat.clinit(Tomcat.java:24)
Re: BugRat Report #713 - Cannot Start Tomcat (Resource Bundle notfound)
SHIT!... Can someone _REMOVE_ bugrat? Otherwise we get bugs filed in the wrong database Pier BugRat Mail System at [EMAIL PROTECTED] wrote: - Sender's Comment - http://znutar.cortexity.com/BugRatViewer/ShowReport/713 - End Of Sender's Comment --- Report URL: http://znutar.cortexity.com/BugRatViewer/ShowReport/713 Report #713 Details Project: Tomcat Category: Bug Report SubCategory: New Bug Report Class: swbug State: received Priority: high Severity: critical Confidence: public Environment: Release: 3.2.1 JVM Release: 1.3 Operating System: Win 2000 OS Release: SP 1 Platform: Intel P3 766 Synopsis: Cannot Start Tomcat (Resource Bundle not found) Description: This is the error I get when I tried to start tomcat. I have no idea why. The same exact installation on another machine starts fine. What could cause this? Exception in thread main java.lang.ExceptionInInitializerError: java.util.Miss ingResourceException: Can't find bundle for base name org.apache.tomcat.resource s.LocalStrings, locale en_US at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle .java:707) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:679) at java.util.ResourceBundle.getBundle(ResourceBundle.java:546) at org.apache.tomcat.util.StringManager.init(StringManager.java:115) at org.apache.tomcat.util.StringManager.getManager(StringManager.java:26 0) at org.apache.tomcat.startup.Tomcat.clinit(Tomcat.java:24)
cvs commit: jakarta-tomcat-connectors/webapp/java WarpConfigurationHandler.java WarpConnector.java
pier01/07/18 19:45:33 Modified:webapp/java WarpConfigurationHandler.java WarpConnector.java Log: Added support for automatic host/application deployment. Revision ChangesPath 1.7 +130 -15 jakarta-tomcat-connectors/webapp/java/WarpConfigurationHandler.java Index: WarpConfigurationHandler.java === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/java/WarpConfigurationHandler.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- WarpConfigurationHandler.java 2001/07/18 23:12:49 1.6 +++ WarpConfigurationHandler.java 2001/07/19 02:45:33 1.7 @@ -56,12 +56,16 @@ * = */ package org.apache.catalina.connector.warp; +import java.io.File; import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.ServerSocket; -import java.net.Socket; +import java.net.URL; +import org.apache.catalina.Container; +import org.apache.catalina.Context; +import org.apache.catalina.Deployer; +import org.apache.catalina.Host; +import org.apache.catalina.core.StandardHost; + public class WarpConfigurationHandler { /* */ @@ -82,19 +86,130 @@ packet.setType(Constants.TYPE_CONF_WELCOME); packet.writeUnsignedShort(Constants.VERS_MAJOR); packet.writeUnsignedShort(Constants.VERS_MINOR); -packet.writeInteger(-1); +packet.writeInteger(connection.getConnector().uniqueId); connection.send(packet); - -connection.recv(packet); -String appl=packet.readString(); -String host=packet.readString(); -int port=packet.readUnsignedShort(); -String path=packet.readString(); + +// Loop for configuration packets +while (true) { +connection.recv(packet); + +switch (packet.getType()) { + +case Constants.TYPE_CONF_DEPLOY: { +String appl=packet.readString(); +String host=packet.readString(); +int port=packet.readUnsignedShort(); +String path=packet.readString(); +Context context=null; +packet.reset(); + +if (Constants.DEBUG) +logger.log(Deploying web application \+appl+\ + + under http://+host+:+port+path+;); +try { +context=deploy(connection,logger,appl,host,path); +} catch (Exception e) { +logger.log(e); +} +if (context==null) { +String msg=Error deploying web application \+appl+ + \ under http://+host+:+port+path+;; +logger.log(msg); +packet.setType(Constants.TYPE_ERROR); +packet.writeString(msg); +connection.send(packet); +} else { +int k=connection.getConnector().applicationId(context); +packet.setType(Constants.TYPE_CONF_APPLIC); +packet.writeInteger(k); +packet.writeString(context.getDocBase()); +connection.send(packet); +if (Constants.DEBUG) +logger.debug(Application \+appl+\ deployed + + under http://+host+:+port+path+ + with root=+context.getDocBase()+ + ID=+k); +} +break; +} + +case Constants.TYPE_CONF_DONE: { +packet.reset(); +packet.setType(Constants.TYPE_CONF_PROCEED); +connection.send(packet); +return(true); +} + +default: { +logger.log(Invalid packet with type +packet.getType()); +return(false); +} +} +} +} + +/** Deploy a web application */ +private Context deploy(WarpConnection connection, WarpLogger logger, + String applName, String hostName, String applPath) +throws IOException { +synchronized (connection.getConnector()) { + +Container container=connection.getConnector().getContainer(); + +Host
cvs commit: jakarta-tomcat-connectors/webapp/include wa_config.h
pier01/07/18 21:18:22 Modified:webapp/include wa_config.h Log: Added a deployed flag to the wa_application structure. Revision ChangesPath 1.4 +2 -1 jakarta-tomcat-connectors/webapp/include/wa_config.h Index: wa_config.h === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/include/wa_config.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- wa_config.h 2001/05/10 08:56:22 1.3 +++ wa_config.h 2001/07/19 04:18:22 1.4 @@ -58,7 +58,7 @@ /** * @package Configuration * @author Pier Fumagalli mailto:[EMAIL PROTECTED] - * @version $Id: wa_config.h,v 1.3 2001/05/10 08:56:22 pier Exp $ + * @version $Id: wa_config.h,v 1.4 2001/07/19 04:18:22 pier Exp $ */ #ifndef _WA_CONFIG_H_ #define _WA_CONFIG_H_ @@ -118,6 +118,7 @@ /** The local expanded application path (if any). */ char *lpth; /** Wether this web-application has been deployed or not. */ +wa_boolean depl; }; /**
cvs commit: jakarta-tomcat-connectors/webapp/lib pr_info.c
pier01/07/18 21:20:42 Modified:webapp/lib pr_info.c Log: Display the status of the deployed flag. (This might cause some troubles under MacOS/X with the Cisco VPN-5000 client installed. I don't know why but I get a kernel error) Revision ChangesPath 1.3 +5 -2 jakarta-tomcat-connectors/webapp/lib/pr_info.c Index: pr_info.c === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/pr_info.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- pr_info.c 2001/07/09 22:02:08 1.2 +++ pr_info.c 2001/07/19 04:20:42 1.3 @@ -55,7 +55,7 @@ * * * = */ -/* @version $Id: pr_info.c,v 1.2 2001/07/09 22:02:08 pier Exp $ */ +/* @version $Id: pr_info.c,v 1.3 2001/07/19 04:20:42 pier Exp $ */ #include wa.h /* Counter for requests */ @@ -92,6 +92,7 @@ appl-name,appl-host-name,appl-host-port,appl-rpth, appl-conn-name); appl-conf=NULL; +appl-depl=wa_true; return(NULL); } @@ -116,7 +117,8 @@ wa_rprintf(r, Rootnbsp;URLnbsp;Pathbr\n); wa_rprintf(r, Localnbsp;Deploymentnbsp;Pathbr\n); wa_rprintf(r, Configurationnbsp;Detailsbr\n); -wa_rprintf(r, Connection\n); +wa_rprintf(r, Connectionbr\n); +wa_rprintf(r, Deployed\n); wa_rprintf(r, /font\n); wa_rprintf(r,/td\n); wa_rprintf(r,td width=\90%%\ valign=\top\ align=\left\\n); @@ -135,6 +137,7 @@ wa_rprintf(r, bquot;%squot;/b,a-conn-name); wa_rprintf(r, ia href=\#%s\(details)/a/ibr\n,a-conn-name); +wa_rprintf(r, b%s/bbr\n,a-depl?TRUE:FALSE); wa_rprintf(r, /font\n); wa_rprintf(r,/td\n); wa_rprintf(r, /tr\n);
cvs commit: jakarta-tomcat-connectors/webapp/lib wa_request.c wa_config.c
pier01/07/18 21:21:38 Modified:webapp/lib wa_request.c wa_config.c Log: Handle the deployed flag at library level. Revision ChangesPath 1.13 +3 -2 jakarta-tomcat-connectors/webapp/lib/wa_request.c Index: wa_request.c === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/wa_request.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- wa_request.c 2001/07/15 08:39:58 1.12 +++ wa_request.c 2001/07/19 04:21:38 1.13 @@ -55,7 +55,7 @@ * * * = */ -/* @version $Id: wa_request.c,v 1.12 2001/07/15 08:39:58 pier Exp $ */ +/* @version $Id: wa_request.c,v 1.13 2001/07/19 04:21:38 pier Exp $ */ #include wa.h /* Allocate a new request structure. */ @@ -190,8 +190,9 @@ /* Invoke a request in a web application. */ int wa_rinvoke(wa_request *r, wa_application *a) { +if (a-depl!=wa_true) +return(wa_rerror(WA_MARK,r,404,Web-application not yet deployed)); return(a-conn-prov-handle(r,a)); -/*return(wa_rerror(r,500,This is being fixed));*/ } void wa_rlog(wa_request *r, const char *f, const int l, const char *fmt, ...) { 1.3 +2 -1 jakarta-tomcat-connectors/webapp/lib/wa_config.c Index: wa_config.c === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/wa_config.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- wa_config.c 2001/05/10 08:54:14 1.2 +++ wa_config.c 2001/07/19 04:21:38 1.3 @@ -55,7 +55,7 @@ * * * = */ -/* @version $Id: wa_config.c,v 1.2 2001/05/10 08:54:14 pier Exp $ */ +/* @version $Id: wa_config.c,v 1.3 2001/07/19 04:21:38 pier Exp $ */ #include wa.h /* Allocate and set up a codewa_application/code member. */ @@ -92,6 +92,7 @@ appl-conn=NULL; appl-conf=NULL; appl-lpth=NULL; +appl-depl=wa_false; /* Done */ wa_debug(WA_MARK,Created application \%s\ in path \%s\,
cvs commit: jakarta-tomcat-connectors/webapp/lib pr_warp_packet.c
pier01/07/18 21:23:07 Modified:webapp/lib pr_warp_packet.c Log: Fixed bug preventing to successfully load the last entry in a WARP packet. Revision ChangesPath 1.3 +7 -4 jakarta-tomcat-connectors/webapp/lib/pr_warp_packet.c Index: pr_warp_packet.c === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/pr_warp_packet.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- pr_warp_packet.c 2001/07/18 19:12:38 1.2 +++ pr_warp_packet.c 2001/07/19 04:23:07 1.3 @@ -54,7 +54,7 @@ * * * = */ -/* @version $Id: pr_warp_packet.c,v 1.2 2001/07/18 19:12:38 pier Exp $ */ +/* @version $Id: pr_warp_packet.c,v 1.3 2001/07/19 04:23:07 pier Exp $ */ #include pr_warp.h void p_reset(warp_packet *pack) { @@ -78,7 +78,7 @@ wa_boolean p_read_ushort(warp_packet *pack, int *x) { int k=0; -if ((pack-curr+2)=pack-size) return(wa_false); +if ((pack-curr+2)pack-size) return(wa_false); k=(pack-buff[pack-curr++]0x0ff)8; k=k|(pack-buff[pack-curr++]0x0ff); *x=k; @@ -88,7 +88,7 @@ wa_boolean p_read_int(warp_packet *pack, int *x) { int k=0; -if ((pack-curr+2)=pack-size) return(wa_false); +if ((pack-curr+2)pack-size) return(wa_false); k=(pack-buff[pack-curr++]0x0ff)24; k=k|((pack-buff[pack-curr++]0x0ff)16); k=k|((pack-buff[pack-curr++]0x0ff)8); @@ -102,10 +102,13 @@ if (p_read_ushort(pack,len)==wa_false) { *x=NULL; +wa_debug(WA_MARK,Cannot read string length); return(wa_false); } -if ((pack-curr+len)=pack-size) { +if ((pack-curr+len)pack-size) { *x=NULL; +wa_debug(WA_MARK,String too long (len=%d curr=%d size=%d), + len,pack-curr,pack-size); return(wa_false); }
cvs commit: jakarta-tomcat-connectors/webapp/lib pr_warp_network.c
pier01/07/18 21:24:15 Modified:webapp/lib pr_warp_network.c Log: Fixed bug preventing to read a zero-length WARP packet. Revision ChangesPath 1.3 +18 -11jakarta-tomcat-connectors/webapp/lib/pr_warp_network.c Index: pr_warp_network.c === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/pr_warp_network.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- pr_warp_network.c 2001/07/18 19:12:38 1.2 +++ pr_warp_network.c 2001/07/19 04:24:15 1.3 @@ -54,7 +54,7 @@ * * * = */ -/* @version $Id: pr_warp_network.c,v 1.2 2001/07/18 19:12:38 pier Exp $ */ +/* @version $Id: pr_warp_network.c,v 1.3 2001/07/19 04:24:15 pier Exp $ */ #include pr_warp.h wa_boolean n_recv(apr_socket_t *sock, warp_packet *pack) { @@ -68,7 +68,10 @@ p_reset(pack); len=3; while(1) { -if (apr_recv(sock,hdr[ptr],len)!=APR_SUCCESS) return(wa_false); +if (apr_recv(sock,hdr[ptr],len)!=APR_SUCCESS) { +wa_debug(WA_MARK,Cannot receive header); +return(wa_false); +} ptr+=len; len=3-ptr; if (len==0) break; @@ -77,16 +80,20 @@ pack-size=(hdr[1]0x0ff)8; pack-size=pack-size|(hdr[2]0x0ff); -len=pack-size; -ptr=0; -while(1) { -if (apr_recv(sock,pack-buff[ptr],len)!=APR_SUCCESS) -return(wa_false); -ptr+=len; -len=pack-size-ptr; -if (len==0) break; +if (pack-size0) { +len=pack-size; +ptr=0; +while(1) { +if (apr_recv(sock,pack-buff[ptr],len)!=APR_SUCCESS) { +wa_debug(WA_MARK,Cannot receive payload); +return(wa_false); +} +ptr+=len; +len=pack-size-ptr; +if (len==0) break; +} } - + wa_debug(WA_MARK,WARP TYP=%d LEN=%d,pack-type,pack-size); return(wa_true);
cvs commit: jakarta-tomcat-connectors/webapp/lib pr_warp_config.c
pier01/07/18 21:25:24 Modified:webapp/lib pr_warp_config.c Log: Now web-applications are correctly deployed from the configuration data contained in the web-server config file. Revision ChangesPath 1.3 +38 -1 jakarta-tomcat-connectors/webapp/lib/pr_warp_config.c Index: pr_warp_config.c === RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/pr_warp_config.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- pr_warp_config.c 2001/07/18 19:12:38 1.2 +++ pr_warp_config.c 2001/07/19 04:25:24 1.3 @@ -54,7 +54,7 @@ * * * = */ -/* @version $Id: pr_warp_config.c,v 1.2 2001/07/18 19:12:38 pier Exp $ */ +/* @version $Id: pr_warp_config.c,v 1.3 2001/07/19 04:25:24 pier Exp $ */ #include pr_warp.h wa_boolean n_check(wa_connection *conn, warp_packet *pack) { @@ -105,6 +105,7 @@ apr_pool_t *pool=NULL; wa_boolean ret=wa_false; warp_packet *pack=NULL; +char *temp=NULL; if (apr_pool_create(pool,wa_pool)!=APR_SUCCESS) { wa_log(WA_MARK,Cannot create WARP temporary configuration pool); @@ -133,7 +134,43 @@ p_write_string(pack,appl-rpth); n_send(conf-sock,pack); +if (n_recv(conf-sock,pack)!=wa_true) { +wa_log(WA_MARK,Cannot read packet (%s:%d),WA_MARK); +return(wa_false); +} +if (pack-type==TYPE_ERROR) { +wa_log(WA_MARK,Cannot deploy application %s,appl-name); +continue; +} +if (pack-type!=TYPE_CONF_APPLIC) { +wa_log(WA_MARK,Unknown packet received (%d),pack-type); +p_reset(pack); +pack-type=TYPE_FATAL; +p_write_string(pack,Invalid packet received); +n_send(conf-sock,pack); +} +p_read_int(pack,(int *)appl-conf); +p_read_string(pack,temp); +wa_debug(WA_MARK,TEMP=\%s\,temp); +appl-lpth=apr_pstrdup(wa_pool,temp); +appl-depl=wa_true; +wa_debug(WA_MARK,Application \%s\ deployed with root=%s id=%d, +appl-name,appl-lpth,appl-conf); + elem=elem-next; +} + +p_reset(pack); +pack-type=TYPE_CONF_DONE; +n_send(conf-sock,pack); + +if (n_recv(conf-sock,pack)!=wa_true) { +wa_log(WA_MARK,Cannot read packet (%s:%d),WA_MARK); +return(wa_false); +} +if (pack-type!=TYPE_CONF_PROCEED) { +wa_log(WA_MARK,Cannot proceed on this connection); +return(wa_false); } apr_pool_destroy(pool);
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util/http/res - New directory
costin 01/07/18 22:45:33 jakarta-tomcat/src/share/org/apache/tomcat/util/http/res - New directory
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util/buf/res - New directory
costin 01/07/18 22:45:47 jakarta-tomcat/src/share/org/apache/tomcat/util/buf/res - New directory
Re: cvs commit: jakarta-tomcat-4.0 build.xml tomcat.nsi
Remy Maucherat at [EMAIL PROTECTED] wrote: Guess what, I needed that too for the NT service ;-) Boom :) We're game, so... All we need, then, is to extend load() up to the connectors so that under UNIX we can bind to ports 1024 (as load() is called as root :) There's no load() yet, though. So I did it. It's BootstrapService and CatalinaService. They don't expose a damn shutdown socket, and they don't shutdown asychronously. Friggin' great... First time someone commits some code I need without me asking for it :) Of course, since the time needed to shutdown TC 4 is waaay too long, NT still ends up killing TC before the end of the shutdown, but at least it's a step in the right direction. I believe (but I'm not sure) that under Win32 you can actually tell to the Service loader to hold for a longer time... I have to check... I don't know how to do that. I hope there's a way to speed up the shutdown process instead (which is using a simple method call - no mapper, no socket). Remy
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util/buf/res LocalStrings.properties LocalStrings_es.properties LocalStrings_fr.properties
costin 01/07/18 22:49:34 Added: src/share/org/apache/tomcat/util/buf/res LocalStrings.properties LocalStrings_es.properties LocalStrings_fr.properties Log: Snapshot of j-t-c Revision ChangesPath 1.1 jakarta-tomcat/src/share/org/apache/tomcat/util/buf/res/LocalStrings.properties Index: LocalStrings.properties === hexUtil.bad=Bad hexadecimal digit hexUtil.odd=Odd number of hexadecimal digits httpDate.pe=invalid date format: {0} 1.1 jakarta-tomcat/src/share/org/apache/tomcat/util/buf/res/LocalStrings_es.properties Index: LocalStrings_es.properties === hexUtil.bad=Dígito hexadecimal incorrecto hexUtil.odd=Numero de dígitos hexadecimales incorrecto httpDate.pe=formato de fecha no valido: {0} 1.1 jakarta-tomcat/src/share/org/apache/tomcat/util/buf/res/LocalStrings_fr.properties Index: LocalStrings_fr.properties === hexUtil.bad=Mauvais digit hexadécimal hexUtil.odd=Nombre impair de digits hexadécimaux httpDate.pe=Format de date invalide: {0}