# History of Changes

Changes are chronologically ordered from top (most recent) to bottom (least recent)

Please read the document upgrading from 1.0 to 1.1

Apache JServ 1.1 - 14 January 2000
(Stefano "Tabs" Mazzocchi, Vadim Tkachenko, Jon "Plonk" Stevens, Henner Zeller, Michal Mosiewicz, Craig McClanahan, Jean-Luc Rochat, Ed Korthof, Pierpaolo "CVS" Fumagalli, Sean Dowd, Stephane Carrie, Damian Fauth)

- Fixed issues with JServSTMStore thanks to Radu Greab. (JSS)
- Fixed Bug Id: mod_jserv/5126 Thanks to mdusseault@home.com. (JSS)
- Fixed Bug Id: mod_jserv/5266 Thanks to Peter Bryant. (JSS)
- Lots of fixes in the JServInputStream thanks to Jon Smirl. This should fix issues with POST data as well as file uploads.
- Fixed Bug Id: mod_jserv/5825 Thanks to Jon Smirl. (JSS)
- Fixed Bug Id: mod_jserv/5498 Thanks to Jon Smirl. (JSS)
- FEATURE: Since jserv assumes that resources could only reside in directories, my servlets can't load files or images from jar files. With the following patch (against jserv-1.0, but should apply cleanly against 1.1b1 except for some line number fuzz), the AdaptiveClassLoader looks jar files, too. Hakan Tandogan

- FEATURE: I have made a modification to the Apache JServ source and I have added my own class "org.apache.java.io.SimpleFileFilter"

  What my modifications do is allow using wildcards when specifying repositories for a servlet zone.

  Example:
  repositories=/usr/local/servletzone1/*.jar,/usr/local/servletzone1

  adds all of the files with a .jar extension in the /usr/local/servletzone1 directory as well as the /usr/local/servletzone1 directory to the given repository.

  This way, if a given user using a particular servlet zone has a complex enough servlet, they can simply package their servlet up into a .jar file. If the same user updates their servlet, they can create another .jar file and upload it without having to restart the servlet engine.

  Mike Jennings

- FEATURE: A little patch to allow for using "jserv-servlet" handler with apache's SetHandler command. So, now you can use following:

  ApJServMount * whatever #This sets a default engine configuration that is used by jserv-servlet handler, when it is called as a result of SetHandler

  SetHandler jserv-servlet

  I would call it a quick hack only, but hopefully some will find it very practicall. You are now free to decide what URL's are passed to servlet engine, and what are kept served by apache.

  Note that you may configure your tomcat to share a default context with apache, so apache will serve static files, while tomcat will do more inteligent jobs. (MM)

- Fixed Bug Id: mod_jserv/5569 Thanks to josh larios. (JSS)
- removed confusing watchdog messages for people not usinng load-balaciing. was : [16/10/1999 22:01:42:011] (EMERGENCY) jserv_mmap: cant open (null) errno=14 (Jean-Luc)
- jserv_utils.c: avoid memory leak by making sure not to create a pool and then fail to free it. if logging is off, the pool won't be created at all, which is preferable.(EK)
- Finally correct problems with requestURI. It seems like the meaning of r->uri, r->unparsed_uri and things like ap_unparse_uri_components is different in different versions of apache. (MM)
- Fixed Bug Id: mod_jserv/5270 Thanks to Jonathan.Budar-Danoff. (JSS)
- Fixed Bug Id: mod_jserv/5534 Thanks to john chandy. (JSS)
- Fixed Bug Id: mod_jserv/5577 Thanks to jan koktan. (JSS)
- Fixed lots of issues with gcc -Wall turned on. (JSS)
- Fixed Bug Id: mod_jserv/5268 Thanks to Steve Drach. (JSS)
- Better HPUX support in the Makefiles for DSO. (JSS)
- Better FreeBSD support in the Makefiles for DSO. Thanks to Ryan Morgan (JSS)
- Fixed Bug Id: mod_jserv/5295 Thanks to Dave Peterson. (JSS)
- Relative paths to the Apache src directory should now work properly. (JSS)
- Fixed Bug Id: mod_jserv/5320 Thanks to ypsilon@mindless.com. (JSS)
- Fixed Bug Id: mod_jserv/5436 Thanks to Jon Christiansen. (JSS)
- Fixed Bug Id: mod_jserv/5197 Thanks to erick rudeyak. (JSS)
- Added ability to specify -DEAPI in the configure script. This is needed for compiling Apache JServ with servers that are using EAPI, such as SSL servers. (JSS)
- We require Apache 1.3.9 or higher (JSS)
- add security.allowedAddresses=DISABLED option. (use with care: allows all Apache (not only yours) servers to connect to this JServ). (DF)
- Allow signal() to bind to the same IP @ than JServ. (SD)
- added 2 new fields in the ajpv12 protocol.: SSL_CLIENT_DN and SSL_CLIENT_IDN. These changes are not compatible with previous versions of JServ. Thes fields are here for ajpv11 compatibility, and may be not used in future versions. (JLR)
- Set ApJServMountCopy to "on" by default as described in the doc.(JLR)
- Fixed SEGV (load-balancing & Virtualhost). Thanks to S.Carrie.(JLR)
- Fixed Bug Id: mod_jserv/5216 added (back) the bindaddress=* option : allows JServ to listen to all IP addresses, still allowing it to listen to only one. The default is still to bind to "localhost". Thanks to Skip Carter. (JLR)
- Fixed Bug Id: mod_jserv/5267 Thanks to Steve Drach (JLR)

Apache JServ 1.1b3 - 25 October 1999
(Stefano "Tabs" Mazzocchi, Vadim Tkachenko, Jon "Plonk" Stevens, Henner Zeller, Michal Mosiewicz, Craig McClanahan, Jean-Luc Rochat, Bernie Bernstein, Ed Korthof, Pierpaolo "CVS" Fumagalli)

- Added new make/install scripts for the Win32 distributions (PF)
- Fixed some bugs with make install not creating the directories for the documentation properly (JSS)
- Added javadoc generation to the top level make file. You can re-build the javadoc by typing "make javadoc" (JSS)
- Eliminated the need to have `test(1) -nt` (newer than) option supported by the default shell. Instead, `find(1)` now has to support the `-newer` option, which seems to be there for all the platforms. (VT)
- Load balancing code cleanup. (JLR)
- Fixes for Win32 compiler errors. Thanks to Ian Holsman for the help. (JLR) (PF) (JSS)
- Added JServInputStream.available() because JDK 1.2 InputStream says that we should implement it ourselves. This should also be fixed in ServletInputStream in the JSDK someday. Thanks to mdusseault@home.com. (JSS)
- Really fixed the issue with requestUri behaviour. It should now work as it did in 1.0. (MM)
- Fixed issue with the AdaptiveClassLoader and file URL's (SM)
- Fixed a bug where save-install.sh was not executable. (JSS)
- Fixed issue with ./conf/save-install.sh failing because it moved files instead of copying files. (JSS)

Apache JServ 1.1b2 - 8 October 1999
(Stefano "Duke" Mazzocchi, Vadim Tkachenko, Jon S. Stevens, Henner Zeller, Michal Mosiewicz, Craig McClanahan, Jean-Luc Rochat, Bernie Bernstein, Ed Korthof, Pierpaolo "Flux" Fumagalli)

- Added new feature to the builtin status screens that allows you to view and modify the the state of the shared memory file when using load balancing. (JLR)
- Fixed Bug Id: mod_jserv/5113 Thanks to Kazuhiro Kazama for the find and fix. (SM)
- Fixed Bug Id: mod_jserv/5093 Thanks to Aart de Vries for the find and fix. (JSS)
- Fixed Bug Id: mod_jserv/5092 Thanks to Aart de Vries for the find and fix. (JSS)
- Added checks to make GNU make a required tool for installation. (JSS)
- Changes to make it easier for people to do RPM's (HZ)
- Updated load balancing documentation for 1.1 (JLR)
- Bug fixes for Win32 compilation. (PF) (MM)
- requestUri behaviour as in 1.0, i.e. returns req->unparsedUri. This should fix issues with some servlets like Cocoon that depend on old behavior. (MM)
- Fixed Bug Id: mod_jserv/5098 Thanks to Lars Pedersen for the find and fix. (JSS)
- Finally closed the issue with the classloader and zones. See below for more information. Now, ANY objects in your session that are serializable are restored after the class loader is re-instantiated due to class reloading. Many many thanks to stuart d. gathman
- fix a bug which may lead to lost sessions when switching off cookie usage for sessions but the browser still sends the old cookie: it is read, isRequestedSessionIdFromCookie() is true and encodeUrl() does not rewrite URLs - bad.So do not read cookies in the first place if session-cookie support is switched off. (HZ)
- Misc configuration and documentation file changes to help make things easier for new users.(JSS)

Apache JServ 1.1b1 - 29 September 1999
(Stefano "Camelot" Mazzocchi, Vadim Tkachenko, Jon S. Stevens, Henner Zeller, Michal Mosiewicz, Craig McClanahan, Jean-Luc Rochat, Bernie Bernstein, Ed Korthof, Pierpaolo "Quartz" Fumagalli)

- Apache 1.2.x support removed. Please see the upgrade document for more details. (JSS)
- Fixed potential DoS bug when load balancing is used. Thanks to Cott Lang for helping troubleshoot the issue. (JLR)
- Fixed potential file descriptor leaks bug when load balancing is used. (BB)
- Fixed Bug Id: mod_jserv/4601 Thanks to ronald@trustpoint.com for the find and fix. (JSS)
- Added thread pool code and recycle technology The pool behavior is off by default since it needs more testing, but I consider it finished. (SM)
- Explicitly check if the "class" to be loaded ends with initArgs and load it as a standard file in. Dr. Andreas Wittek (JSS)
- Fixed Bug Id: mod_jserv/4652 Thanks to Cott Lang for the find and fix. (JSS)
- Replaced the ifdefs _POSIX_MAPPED_FILES by ifdef HAVE_MMAP Apache standard value. Now freeBSD can use shared memory. This functionnality was only working on linux & solaris. (JLR)
- Removed bug: ExtendedProperties required to have a space before the line-continuation backslash (HZ)
- Real limit on maxConnections (previous setting renamed to security.backlog) (MM)
- Modified the encodeCookie() method of org.apache.jserv.JServUtils.java to use new Date(1000) instead of new Date(0) when expiring the cookie. This fixes a bug with some browsers where it would not expire the cookie properly given a new Date(0). Thanks to Damian Fauth for tracking this one down. (JSS)
- Create ApJServVMTimeout : this controls the time given to the VM to start up and shut down. (EK)
- Put support for ApJServRetryAttempts into AJP version 1.2. (EK)
- Make IsItWorking a bit more dynamic to show that the servlet is indeed executed (and not cached). Generate a local timestamp. (HZ)
- C code: fix some bogus sleeps which I'd put in -- thanks to Michal for pointing these out. also, fix the wait in jserv_shutdown_core to use the configurable timeout, and implement the SIGTERM / SIGKILL signals so that we check each second (for up to three seconds), rather than waiting three seconds (all the time) before checking.(EK)
- C code: better if-modified-since handling; still needs work on the java side. also, better comments re: return codes for handlers. (EK)
- By default, the system comes with two zones configured in jserv.conf, /servlets and /servlet. This should help newbies avoid confusion. (JSS)
- Fixed Bug Id: mod_jserv/4828 Thanks to Ian Holsman for the find and fix. (JSS)
- Fixed Bug Id: mod_jserv/4790 Thanks to Ben Kelly for the find and fix. (JSS)
- Fixed Bug Id: mod_jserv/4382 Thanks to Justin Ashworth for the find and fix. (JSS)
- Corrected a bug of mine on win32 only : the load-balancing algo was always sending requests to the first JServ. Thanks to Justin Call for pointing this out, and validating my patch before putting it in CVS. (JLR)
- Removed the decoding of the name/value of the cookies. the spec doesn't say anything about this being needed and a user complained about it decoding his data improperly. (JSS)
- Fixed typo in function name...only shows up if JSERV_DEBUG is compiled on. thanks to Oliphant, Erich
- The status page now takes care of load-balancing configurations.(JLR)
- Support for 1 sessionId/zone in the load-balancing (C side) + adding a new parameter (JSERV_ROUTE) in ajpv12 for session handling in case of load-balancing. NB: as the ajpv12 protocol was changed, you need a synch version of both C & java side. This is maybe not the way to go, but at least a quick bug fix.(JLR)(BB)
- Make the session string much shorter - it shrinked to 10 character. This is very helpful for pages which contain many links which are URL-rewritten. It doesn't contain the full time and the session count anymor, just the number of bits making it unique enough. Plus a random part with 2.1 G-possibities to make it immune to attacks. Usses Long.toString(long number, int radix) to do the base 36 encoding. (HZ)
- Allow for setting whether or not the system uses cookies or not for handling session state. Default is to use cookies if they can be used. This is set via the zone.properties:session.useCookies value. Thanks to Antonio Cotroneo for initial patch and idea. (JSS)
- Fixed Bug Id: mod_jserv/4901 Thanks to zingelman@fnal.gov for the find and fix. (JSS)
- Fixed a condition in the case that when HttpSessionBindingEvent.valueUnbound() is called, the reference to the session has already been removed and thus, the (this) reference is kinda useless since the session doesn't exist anymore so, this fix makes it so that the reference to (this) actually contains the sessiondata and the sessiondata is then removed at the end of the removeValue() call. (JSS)
- Fixed Bug Id: mod_jserv/4964 Thanks to Brian Slesinsky for the find and fix. (CM)
- When the instance of the AdaptiveClassLoader is dumped because classes are reloaded, we used to also dump the sessions that servlets had stored in memory without care. Now, we attempt to keep those sessions and their data. Note that only objects which can be found in the system or bootstrap classpath will be kept. Also, make sure that all of your objects which implement HttpSessionBindingListener that are stored in the session do not also implement Serializable or you will have problems. Custom objects (which are only accessable via repositories= that implement HSBL will now have valueUnbound called when they are removed after the reload of the ACL.(JSS)
- New protocol version: ajpv12 thanks to (MM). If you are upgrading, make sure to change the ApJServDefaultProtocol in jserv.conf to ajpv12 and also change wrapper.protocol in jserv.properties to ajpv12. This new protocol has many speed improvements.
- Fixed: if the session was invalidated the isNew() will throw an InvalidStateException and the thread will terminate. thx to diego besprosvan for the fix.
- Fixed Bug Id: mod_jserv/3604 Thanks to jlilly@ptc.com for the comments. (JSS)
- Logging by severity. Not by the place. (MM)
- If the zone.properties file cannot be read, catch the potential NPE thanks to florian.kieling@fh-stralsund.de for catching this. (JSS)
- If log.file cannot be written to, Apache JServ keeps running instead of failing. In the JServ servlet, a big red notice is shown if logging has been disabled for this reason (HZ)
- ApacheJServ.spec RPM installer has been updated and works properly now (HZ)
- New Feature: added bindaddress property to jserv.properties. This allows one to bind Apache JServ to a specific IP address. By default, it is 127.0.0.1. This feature allows one to have multiple copies of Apache JServ running on the same machine and same port, but different IP addresses. (JSS)
- Updated the INSTALL document to reflect configure changes (JSS)
- Tons of changes and bug fixes to configure scripts, including updating to use libtool 1.3.3. Please read the document upgrading from 1.0 to 1.0.1 for more details on changes with the configure scripts.(VT)(JSS)(HZ)
- Documented jserv.properties: log.channel=[true][false] (VT)

Apache JServ 1.0 - 14 June 1999
(Everybody!!!)

- Thanks to everybody who helped make Apache JServ 1.0 a reality!

Apache JServ 1.0fc1 - 10 June 1999
(Ed Korthof, Bernie Bernstein, Jon S. Stevens, Henner Zeller)

- Fixed bug reported by Paul Gibson <paul@virtualvin.com> regarding JServConnection.getSession() not checking whether or not the session that it is returning is valid or not. It will now only return valid sessions. (JSS)
- Fixed Bug Id: mod_jserv/4599 Thanks to <andreas@ljunggren.net> for the fix and patch. (JSS)
- Fixed Bug Id: mod_jserv/4473 Thanks to <bakgerman@checkfree.com> for the fix. (JSS)
- Fixed bug in the jserv_watchdog: Set PID in child process rather than parent since there is no synchronization. (BB)
- Re-wrote JServServletManager.encodeUrl() to handle # in the URI's as well as fix a bug regarding & usage instead of &. (HZ)
- jserv_wrapper_unix.c: fix use of autoincrement in function argument list -- order of evaluation is undefined, and the results may not be as intended. reported by Sebastian Bazley <Sebastian.Bazley@sema.co.uk> (EK)

Apache JServ 1.0b5 - 17 May 1999
(Ed Korthof, Jean-Luc Rochat, Jon S. Stevens)

- Empty lines in configuration files like 'wrapper.classpath=', which the configure scripts can sometimes produce, are now just ignored. (EK)
- Fixed .initArgs file handling to work with aliased servlets. (EK)
- Fixed lots of issues with the Unix build system. It should now be more robust, report more information to be more friendly to the users and actually work now. (JSS)
- Fixed win32 port w/o watchdog + small bugfix in ApJServMountCopy with load-balancing. Thanks to Stephane Carrie <scarrie@maginfo.fr> for finding this bug and giving a fix at the same time. (JLR)
- Fixed function prototype (for when there is no mmap support) (EK)

Apache JServ 1.0b4 - 30 April 1999
(Jon S. Stevens, Vadim Tkachenko, Stefano Mazzocchi, Craig McClanahan, Jean-Luc Rochat)

- Added Load Balancing documentation and various load balancing bug fixes (JLR)
- Fixed the badly broken GET/POST parsing to be implemented according to the rules defined in the Servlet API 2.1 spec. (CM)
- Added ApJServLogLevel directive to provide configurable log levels within the C portion of Apache JServ. Thanks to Philip Guenther <guenther@gac.edu> for the code and patch. (JSS)
- Fixed Bug Id: mod_jserv/3674 Thanks to Pawel Pesz <Pawel.Pesz@insert.com.pl> for the fix and patch. (JSS)
- Fixed Bug Id: mod_jserv/4298 Thanks to Philip Guenther <guenther@gac.edu> for the fix and patch. (JSS)
- Moved JServConnection creation before connection is accepted and cleaned up initialization parameters. Thanks to Michal Mosiewicz for the suggestion. (SM)
- Added TURBO and PROFILE mode. Turbo mode performance-tuned compilation and profile mode turns on the method tracing capabilities of instrumented JVM (such as IBM JInsight) in the JServConnection.run() method. (SM)
- Added better command line interface for standalone mode operation. Now you can shutdown and restart your servlet engine using the exact same class that is already running. Thanks to Donald Ball for the idea. (SM)
- Fixed Bug Id: mod_jserv/4169 Thanks to <erik@adaptations.com> for the fix and patch. (JSS)
- Fixed Bug Id: mod_jserv/4073 Thanks to Cott Lang <cott@internetstaff.com> for the fix and patch. (JSS)
- Fixed Bug Id: mod_jserv/4104 Thanks to <akuchlin@cnri.reston.va.us> for the fix. (JSS)
- Changed .jar name again. It is now ApacheJServ.jar. This is a consistency change so that Win32 and Unix have the same name for this file. (VT)
- Fixed Bug Id: mod_jserv/3976 Thanks to <eb@softstar.it> for patch. (JSS)
- Fixed Apache 1.2.6 compatibility issue and made it so that future distributions will include jserv_compat.c which is missing from 1.0b3. Thanks to Matt Feiszli <matt@weborder.com> for tracking this down. (JSS)

Apache JServ 1.0b3 - 19 Feb 1999
(Ed Korthof, Stefano Mazzocchi, Vadim Tkachenko, Craig McClanahan, Bernie Bernstein, Jean-Luc Rochat, Jon S. Stevens)

- Fixed bugs in the c/Makefile.am that prevented all of the .c files from being included in the distribution. (JSS)
- Added ApJServRetryAttempts. Setting this to a positive integer (say between 2 and 5) means that mod_jserv will attempt to connect to the JVM up to that many times before returning a server error. It does a 1 second wait between each attempt. This allows you to avoid server errors during a restart. (EK)
- JServUtils.parseCookieHeader(): If cookie is send just as: foo; instead of foo=; add cookie with empty string "". Previously, the cookie name was not being added. (JSS)
- JServSession.putValue(): make call to removeValue(). (CM)
- Fixed bug where sessions would not get expired after finding the first expired one and also fixed potential sync issues. Thanks to tom@go2net.com for final fix. (JSS)
- Fixed bug where the Apache JServ configuration files would not get auto reloaded. Patch thanks to dfauth@access.fairfax.com.au (EK)
- JServConnection.java: Workaround known bug in SimpleDateFormat. Thanks to simonb@defacto.peace.co.nz (JSS)
- The official distribution now has the Apache-JServ.jar file compiled with -O instead of -g. (JSS)
- Fixed potential core dump in jserv_mkimg.c. Patch thanks to akuchlin@cnri.reston.va.us. (JSS)
- Added very nice Load Balancing code. Sorry, no included documentation yet. Please see mailing list archives for now.(BB) (JLR)
- Changed trace.* to log.* (CM)
- Removed references to security.remote.administration. It is now security.selfservlet. (CM)
- Fixed the Apache JServ bug report HTML page. (JSS)
- Added some new properties in the properties file with regards to logging. (ie: log.queue.maxage, log.queue.maxsize) Changed the thread priority of the logging thread. This should help fix JVM OutOfMemory errors. (VT)
- Renamed sbin to bin because of changes in Apache 1.3.4. This fixes DSO installation issues. (EK)
- Added a configure-options file which stores your configure options (VT)

Apache JServ 1.0b2 - 11 Jan 1999
(Stefano Mazzocchi, Jon S. Stevens, Tommy Reilly, Markus Mayer)

- Fixed month off by one logging bug in jserv_utils.c. Thanks to Markus Mayer <mmayer@iname.com>. (JSS)
- Fixed some small bugs due to an internal bug of Windows VISE installer. (SM)
- Use apxs to find include dirs. (TR)

Apache JServ 1.0b1 - 25 Dec 1998
(Stefano Mazzocchi, Vincent Partington, PierPaolo Fumagalli, Radu Greab (1), Hendrik Schreiber, Ed Korthof, Ross Golder (2), Tim Williams, Paul Phillips, James Cooper, Hans Bergsten, Jon S. Stevens, Vadim Tkachenko, Tommy Reilly, Hasan Bramwell)

- Fixed a bug in configuration.in as pointed out by Hasan Bramwell <hasan@pi.pro.ec> (JSS)
- Fixed a compliance bug in ServletRequest.getQueryString() returning "" instead of null. Thanks to Dan Morrill <morrildl@nycap.rr.com> (SM)
- Changed annoying INFO stuff in DEBUG as suggested by Michael Bayne <mdb@go2net.com> (SM)
- Fixed a bug in HttpServletRequest.getRequestURI() that returned the query string. Thanks to Dennis Doubleday <dday@fore.com> (SM)
- linux port: DSO and compiling statically into source work (TR)
- JDK tool finding improved per discussions with Vadim (TR)
- JAR added to the above (TR)
- new options --with-apache-src and --with-apache-install replace --with-apache-dir. (TR)
- --enable-apache-conf is real nice about not squashing your apache configuration (TR)
- links are used instead of copying files for static build (TR)
- if DSO support isn't compiled in when doing --with-apache-install it bombs during configure instead of make. (TR)
- if no apache dirs are specified and we find a candidate in /usr/local/apache the user is queried to see if they want to use that, the reason I did this is because if you configure with no options then you may just be interested in the jserv standalone. (TR)
- added scripts and jdepds.jar to src/java to others can use --enable-maintainer-build to rebuild .deps when adding new files. NOTE: JDeps screws up on one rule, it puts JServSSI.java twice on a compile line which makes JAVAC bomb out, you have to remove one of them manually. (TR)
- Mads Volsted Pedersen, mpedersen@247media.com: We found a small bug in the code that sets the expiration date in cookies (in JServUtils.java search for 1000). The problem is that by multiplying the age by 1000 as integers you only allow for values smaller than (2 ^ 31) / 1000 (roughly 24 days). The can easily be remidied by casting the age to long before multiplying by 1000. (JSS)
- fixed the jserv-status bug that caused an Apache child to die (EK)
- added magic to configure so that is the JSDK is specified in your CLASSPATH then you don't have to specify it as a configure argument. Now if we don't find the jsdk.jar configure will stop with an error message. (TR)
- added some stuff to the CLEANFILES so that a make clean does its job (TR)
- added src/c/.deps to DISTCLEAN as per some guys recommendation on the list (TR)
- replaced Hello.java with Hello.java.in because it now picks up a configure variable so it can include a link to the manual. (TR)
- Changed texinfo manual name to more appropriate ApacheJServ (TR)
- added texi2html to tree so we can start hacking it to our liking. (TR)
- included html in distro (result of make dist) (TR)
- --with-compressed-jar -> --enable-compressed-jar (TR)
- put apache related stuff in acinclude.m4 in configure.in, now acinclude.m4 has only macros that are explicity related to our project (how it should be). (TR)
- removed config.h stuff, we weren't using it (TR)
- using jdeps to build, invoke configure with --enable-maintainer-build to build. (TR)
- simplified build process. see manual for how (TR)
- --with-jsdk-dir = tells configure where to find the JSDK classes. (TR)
- removed configure and all .in files (TR)
- added docs/manual start of JServ manual (TR)
- added example servlet should work off the bat (requires specification of jsdk-dir). (TR)
- Fixed a bug in jserv_wrapper_win.c that did not passed correctly the environment settings (SM)
- Filtered direct calls to JServ as servlet since this could bypass web server security on JServ-status and be a _huge_ security problem on sites where self-servlet execution of JServ was left enabled (SM)
- Changed mistaken session timeout log in JServServletManager. Thanks to Jean-luc Rochat (SM)
- Changed "exceptionTracking" to "exceptionTracing" as noted by Stuart Ballard <sballard@netreach.net> (SM)
- Changed default mod_jserv log name from "jserv.log" to a more explaining "mod_jserv.log", now "jserv.log" is generated by the servlet engine (SM)
- Changed version in formation in the whole package to match updated Apache Group version (SM)
- Added a few FAQ questions that keep on coming up on jserv-users (SM)
- Disabled authentication in sample configuration files for easier setup but allowed only localhost to connect as suggested by Ed (SM)
- Changed jserv.properties directive "trace.*" to "log.*" for better definition (SM)
- Removed frames from jserv-status for use in old and simple HTML browsers and updated graphic style to match docs (SM)
- Replaced the string constant channel identifiers & keywords with the interface members (`org.apache.jserv.JServLogChannels`, `org.apache.java.io.LogWriter`); fixed the `NullPointerException` when the log was enabled, but the file not specified; made nicer the interruption handling for the background logger thread (now it flushes if interrupted). (VT)
- Updated docs, cleaned up distribution directory, added win32 bat scripts, fixed javadoc bugs and few other things preparing for release (SM)
- If the servlet was called as alias, the alias name gets logged along with a class name (provided by `javax.servlet.GenericServlet#log`). (VT)
- Log messages don't go through AJP any more, ending up in whatever log file specified as `trace.file` in `jserv.properties`. Logger records the channel identifier in the trace file (you can switch it off, too). Possible improvement because of eliminated synchronized access point on the critical path. Fixed `NullPointerException` on shutdown with the log turned off, thanks to Miranda Robson. (VT)
- Misc improvements to the wrapper (better handling of parameters, avoiding endless spawn/die cycles, reliable operation under Unix, etc.). (EK) Thanks to Dave Galloway () and John Kelly () for help with this.
- Fixed trace file creation bug: JServ failed to start if the trace file didn't exist. (VT)
- Added logging of session creation, using 'servletManager' log channel. (RG2)
- Introduced the background logging. Now the log processing can be made arbitrarily expensive, because happens in a separate thread with minimum priority. (VT)
- Added 'session.checkFrequency' parameter. Corrected a problem where multiple initArgs/startup servlets were causing ClassCastExceptions. Added some debugging of the parsing of the zone configuration file. Fixed a few minor typos. (RG2)
- Improved an error condition handling for the case of a bad port specified in `jserv.properties`: now both wrapper and JServ will complain in the log about the bad value and it will be correctly reset to default port. Also, eliminated the asynchronous handling: on the wrapper side, instead of resetting the bad value the fatal error condition was raised. (VT)
- Fixed the configuration bug and changed the default behavior. Now `configure` can properly resolve the `java` binary location (there was apparently an old leftover bug). If `--with-jdk-home` option was specified, it overrides the value of `JAVA_HOME` variable (used to be the other way around) (VT).
- Fixed bug where JServ was not setting its group ID before running the Java VM. (EK) Bug Id: mod_jserv/3021
- Changed ApJServErrorLog to ApJServLogFile in jserv_utils.c. Thanks to Eric <eric@dev.unibiz.com>) (JS)
- Fixed bug where PATH_INFO was being used as part of the servlet name. Thanks to Trung Tran-Duc . (RG2)
- Applied patch suggested by Alan Sparks that formats the HTML table produced by jserv_status.c (JS)
- Applied patch suggested by Per Landberg <Per.Landberg@lule.frontec.se> which corrected a problem parsing initArgs where a value contained an equals character. (RG2)
- Fixed problem in request input handling that wasn't counting for unfinished read(). Thanks to Trung Tran-Duc <trung.tranduc@prague.ixos.cz> and Simon Levitt <Simon.Levitt@uk.worldpay.com> for pointing out and writing a solution (SM)
- Fixed problem with Sessions, where cookies were not being parsed correctly. (RG2) Bug Id: mod_jserv/3035
- Fixed error parsing initArgs when whitespaces are present. Thanks to Carlos Amengual <webmaster@healthnet-sl.es> (RG2) Bug Id: mod_jserv/2963
- Fixed bug in Configurations where parameters spanning multiple lines (split with backslash) were not parsed correctly. Thanks to Carlos Amengual <webmaster@healthnet-sl.es> (RG2) Bug Id: mod_jserv/2962
- Fixed illegal access to private members from inner classes of JServConnection. Thanks to Ari Halberstadt <ari@shore.net> (RG2) Bug Id: mod_jserv/2855
- Change printing of IP address to avoid big-/little- endian assumptions, and to always print correctly for the current architecture (using inet_ntoa). (EK, JSS)
- If file was zero length, jserv_readfile() (C code) would try to print error message with filesize instead of filename. We already know it is zero, so the error was a bit strange. (JSS)
- Added a small README file to src/java, cleaned up and fixed bugs in the Makefile and Makefile.java.bat in src/java. (JSS)
- Added IfModule directive around example Apache 1.2.x configuration in httpd.conf. (JSS)
- Fixed small compile bug in jserv_compat.c to make it compile with Apache 1.2.x. (JSS)
- Added documentation for Apache 1.3.x and Apache 1.2.x in the src/c/README file. (JSS)
- Fixed a bug that prevented mod_jserv to automatically start JServ under win95. Pointed out by SM (PF)
- Added error control on file availability in JServSSI to prevent internal server errors when SSI file was not readable or not accessible or not existing (SM)
- Fixed bug reported by Brian Millett, bpm@ec-group.com where the last env[] was not being set to null in jserv_wrapper_unix.c. (JSS)
- Fixed bug that prevented the use of JServ without a secret key when authentication was disabled. Thanks to Remy Amouroux to point it out (SM)
- Forced JServSSI to close its output stream. (HB) Bug Id: mod_jserv/2594
- Fixed invalid domain in session cookie bug. (HB) Bug Id: mod_jserv/2593
- Fixed parameters enclosed in single quotes that didn't work bug. (HB) Bug Id: mod_jserv/2592
- Fixed cookie getMaxAge() overflow bug. Thanks to Ari Halberstadt <ari@shore.net> (RG2) Bug Id: mod_jserv/2800
- Fixed session id generation. Security flaw: access could have be gained by guessing a user's cookie. Design flaw: it could have been possible for more than one user to be given the same cookie. Thanks to Geoff Smith <gsmith@webventures.com.au> (RG2) Bug Id: mod_jserv/2794
- Removed HTML fanciness from JServ servlet as mod_jserv/jserv_status will encapsulate those dynamic data in a coherent manner with Apache side (SM)
- Added JServ directive security.remote.administration for control of servlet behavior (default is disabled for security reasons) (SM)
- Fixed a NullPointerException throwing in JServConnection.sendError() where log was disabled (SM)
- Upgraded JServ servlet behavior and made it the starting point for future work on remote control (SM)
- Moved SGMLTag from org.apache.java.sgml into org.apache.java.util for better adhesion to Java classpath (SM)
- Moved JServClassLoader into org.apache.java.lang.AdaptiveClassLoader and removed tracing methods after careful profiling (SM)
- Upgraded documentation and changed "JServ" to "Apache JServ" for legal reasons.
- Made JServ extend HttpServlet and unified servlet testing and jserv status in a single servlet (SM)
- Added JServStatus location to mod_jserv to inspect the JServ configurations on the Apache side (PF)
- Totally rewritten mod_jserv for easier Unix/win32 porting and added support for multiple protocol, multiple jservs. Protocol pluggability is introduced to reduce the overhead of future changes and permitting the coexistence of different JServ versions on a single environment (PF)
- Changed host.properties to zone.properties (SM)
- Changed starting behavior of both JServServletManager and JServSTMStore to match servlet zone behavior. (SM)
- Changed JServ behavior from a per-virtual host to a per-servlet zone basis. Many virtual hosts may now share a common servlet zone. (also needed for future security enhancements) (SM)
- Removed the need for standard in/out/err streams. JServ does its own log/trace/error management while sending servlet logs and receiving signals on the authenticated socket. (SM)
- Changed authentication method (using the one proposed for AJPv2.1) and changed the protocol name to AJPv1.1 to match this change (SM)
- Added a bunch of MIME types to avoid need of callback in ServletContext.getMimeType() method (SM)
- Added test servlet to give installation feedback to users (SM)
- Added comments on jserv.properties and host.properties file placed under ./conf (SM)
- Totally rewritten JServ.java to make it more static and used JServ thread as signal handler after removing JServSignal (SM)
- Fixed a bug that caused not to comply with the cookie spec since it was causing cookie to never be set for certain domain names. (JC)
- Changed Makefile (RG2)
- Added code to the log the JVM's pid to a file before exec-ing the JVM. (PP)
- Changes for SGMLTag (Removed unnecessary recursion in comment-parsing code addition of SGMLTag, Further restored original efficiency by no longer duplicating entire page each time a new comment was encountered, Improved case-in/sensitive handling of parameter values to allow for both case-insensitive applications (SGML) and case sensitivity (as in SERVLET tag initialization parameters). Further protected integrity of parameter values by only returning enumeration, not raw data structures (hashtable) (TW)
- Fixed a bug where the 'req.getSession(true)' statement returns null, causing a subsequent NullPointerException (RG2)
- Allow buffering to be turned off, by setting the header "Servlet-Buffer: off". With this, when the output is flushed it's sent to the client (EK)
- Changed token separating string from ":" to System.getProperty("path.separator") to avoid "c:" problem under Win32 systems and created a property envelope named org.apache.java.util.Configurations(SM)
- Modified JServInputStream to return EOF at the end of the header (RG1)
- Modified JServClassLoader to check if a file from ServletAlias repository is really a zip/jar archive (RG1)
- Added a small fix to JServClassLoader to reload classes if they are modified (it worked only for new versions) (RG1)
- Added HTTP Session timeouts (can be set in per-virtual host config with jserv.session.timeout, defaults to 1800000 (30 minutes)) (VP)
- Changed JServ.invalidate() to send HttpSessionBindingEvent to all values that want it (VP)
- Updated servclasses.zip to jsdk.jar, according to newer JSDK conventions and placed it under ./lib. (SM)
- Fixed a bug where request.getSession(true) would return null (RG2)
- Very minor documentation fixes (RG2)
- Allow buffering to be turned off, by setting the header "Servlet-Buffer: off". With this, when the output is flushed it's sent to the client (EK)
- Added "disable authentication" as default in standalone mode (EK)
- Added MODULE_MAGIC_NUMBER to mod_jserv around compat.h (EK)
- Fixed some problems into JServLock (HS, RG1)
- Added SingleThreadModel support (RG1)
- Added Win32 support for mod_jserv (PF)
- Added Known Bugs and Wanted feature list in the docs (SM) (suggested by RG2)
- Fixed JServ.c (standalone) to be compatible with name changes (VP)
- Added init timeout property in JServServletManager (jserv.init.timeout) (SM)
- Changed timeout properties in JServServletManager from jserv.timeout to jserv.destroy.timeout (SM)
- Added timeout on servlet init() to avoid possible stall (SM)
- Changed mod_jserv.c to start org.apache.jserv.JServ class (SM)
- Changed name of main method container from JServHandler.java to more reasonable JServ.java (SM)
- Changed license to state JServ is a product of the Java Apache Project (SM)
- Changed manual mode to standalone mode and renamed its directory (SM)
- Created a new package org.java.jserv.servlets and moved EnvDumpServlet and JServSSI into it (SM)
- Moved SGMLTag into org.apache.java.sgml (SM)
- Created packages under org.apache.java.* to extend java.* apis (SM)
- Changed the tracing capability by removing JServDebug and unifying them with LogWriter (SM)
- Updated protocol to version 1.1 to match new behavior(SM)
- Changed command line parameters and configuration behavior (now needs a configuration file) (SM)
- Changed mod_jserv to allow parameters to be passed to JServ executable (not only to Java interpreter) (SM)
- Unified documentation: merged every document into a coherent HTML structure (SM)
- Changed directory structure (SM)

Apache JServ 0.9.11a - May 19, 1998
(Ian Kluft, Ross Golder, Vincent Partington, Roger Zeng, Jon Stevens, Brian Jonnes, Ed Korthof)

- Added INSTALL, a simple walkthrough for setting up JServ (EK)
- Moved jserv.autoreload.file, jserv.autoreload.classes, jserv.init.timeout, and jserv.destroy.timeout to per-virtual host configuration file (EK)
- Allow turning tracing on or off in the .properties file (for automatic apache, this directive is required for this: ServletGeneralProperties) (EK)
- Added ServletManagerHostName, an alias corresponding to the name in jserv.hosts list (EK)
- Replaced ServletHost with ServletVMHost (ServletHost is now deprecated) (EK)
- Added doc/ModeOfOperation file (JS, BJ)
- Added simple timeout parameter to prevent 'hostile servlet' problem (RG)
- Installation instructions in README now differentiate Apache 1.2/1.3 (IK)
- Only pass TZ environment variable when it's there (VP)
- Expanded notes in README about use of servclasses.zip (IK)
- Fix null pointer in JServConnection on empty POST request (RG)
- Allow ServletEnvironment directive to make assignments (VP)
- Fixed bugs with servlet init() and destroy() methods in JServSSI (RZ)

Apache JServ 0.9.10a - February 13, 1998
(Ed Korthof, Ian Kluft, Jon Stevens, Francis J. Lacoste, Hanan Herzog, Stefano Mazzocchi, Vincent Partington)

- Updated Apache::Servlet perl module to catch up with protocol tweaks (IK)
- Fixed Makefile to install JavaDoc files for either JDK 1.1 or 1.2 (IK)
- Added properties to control autoreload behavior
- Added a workaround for SimpleDateFormat bug (FLJ)
- Added simple timeout on write lock before destroying servlet (FLJ)
- Fixed depreciated error in JServSSI.java (JSS)
- Fixed some Javadoc compilation errors (JSS)
- Closed zip file to prevent leaking file descriptors (HH)
- Implemented session handling and jsdk 1.1 stuff (FLJ)
- Bundled JavaSoft Servlet API's 1.1
- Added missing javadoc-generated files to the Makefile (IK)
- Added sample EnvDumpServlet (IK)
- getRequestURI() uses REQUEST_URI if available (Vincent Partington)
- GATEWAY_INTERFACE now reports JServ version instead of CGI version (IK)
- Added pseudo-attribute "attribute_names" (IK, VP)
- Fixed attribute prefixes to be "org.apache.jserv" to match the classes (VP)
- Fixed strtok problem in readConfigByStdin()
- Renamed SSIServlet.java to JServSSI.java (JSS)
- Added Apache::Servlet Perl5 module so mod_perl can call Java Servlets (IK)
- Remove newlines in Servlet-Logs lines (logging data) sent to Apache (SM)
- Changed LIFO order to FIFO for logging data (SM)
- Remove newlines from headers in general

Apache JServ 0.9.9a - January 20, 1998
(Francis J. Lacoste, Martin Pool, Jon Stevens, Ed Korthof, Ian Kluft, Adam Messinger)

- Skipped 0.9.8 version because of the number of new changes as well as confusion over 0.9.8 and 0.9.8-dev naming conventions (JSS)
- Added a sample configuration to the README file (IK)
- Modified Makefile to create subdirectories as needed (IK)
- Added Javadoc comments to ServletRequest, HttpServletRequest, ServletResponse, HttpServletResponse, ServletConfig, and ServletContext
- Tracing of several parts of JServ can be turn on or off using a bitmask configured via a system property.
- JServServletManager now has synchronized methods, so synchronization doesn't need to be done on the Hashtable in JServContext
- JServServletManager now restarts itself when its property file is changed
- Correct behavior in a few methods to match specification more closely : getIntHeader, getDateHeader, getServlet.
- Add a top-level Makefile that makes and installs code and documentation
- Put back classes directory and added doc.
- Can escape = and , in init parameters.
- Misc performance improvements
- Remove creation of Integer in readHexLine(). (AM)
- Fix some documentation in JServConnection. (MP)
- Allow Java VM to reside on a separate machine from the webserver
- Changed restarts to use sockets rather than STDIN for reliability
- Fixed a bug in the automatic mode initialization (FJL)
- Turned tracing off by default in JServClassLoader.java (JSS)
- Changed from DataInputStream.readLine() to BufferedReader.readLine() with a bufsize of 1 in JServHandler.java to avoid deprecated code warning (JSS)
- Added the actual Module line to the README that should be copied into the Apache Configuration file (JSS)
- Fixed small typo on line 397 of mod_jserv.c (changed } to ]) (JSS)
- Fixed a bug in JServConnection.java where getAttribute() had a +1 wrongly inserted. Thanks to Svein Omdahl <sveint@link.no>. (JSS)
- Renamed TestClassLoader.java to ClassLoaderTest.java to be more clear (JSS)
- Changed javac path in Makefile to be more generic (JSS)
- Commented out the servlets.properties file examples to prevent possible accidental misconfigurations (JSS)
- Removed duplicate examples where it made sense from the servlets.properties file (JSS)
- Fixed a typo in the servlets.properties file (JSS)
- Fixed a typo in the README file (reault->result) (JSS)
- Removed classes directory (JSS)
- Moved classes from package apache.jserv to org.apache.jserv to comply with JLS
- Fixed free() bug in manual/jserv.c
- Determine whether whether the URL scheme should be 'http' or 'https' by looking for the Stronghold environment variable 'SSL'
- Servlets loaded from ServletAlias directive are loaded via a custom ClassLoader
- Classes loaded by the ClassLoader are reloaded whenever they are modified
- Servlets from different virtual host are loaded in different name space and cannot see each other
- ServletProperties is now a virtual host directive
- Loading of startup servlets is done in a different thread and after binding the socket to prevent two simultaneous JServ process to initialize servlets
- Added a ServletBinaryArgument directive to pass additional command line arguments to the Java interpreter
- Added servlets.default.initArgs property in the servlet properties file that give init arguments available to all servlets in the virtual host
- Init arguments for servlet invoked by class name are now specified in a file named <servlet_classname>.initArgs
- Added sample configurations files
- Manual JServ is now configured by a property file to handle multiple virtual host
- Manual JServ write its pid to a file
- Added simple shell scripts to start/stop/restart manual JServ
- Updated doc files to reflect recent changes
- getDateHeader is now RFC2068 compliant and handles three date format
- Added <SERVLET></SERVLET> tag support in SSIServlet.java

Apache JServ 0.9.7a - September 8, 1997
(Alexei Kosut)

- Fixed some compiler warnings (AK)
- Correctly block signals when initializing, instead of ignoring them. This should prevent another race condition on startup or restart (AK)

Apache JServ 0.9.6a - August 28, 1997
(Alexei Kosut, Orjan Reinholdsen, Rhys Jones)

- javax.servlet.ServletRequest.getAttribute("apache.jserv.<var>") returns a String with the contents of CGI environment variable <var>. e.g. getAttribute("apache.jserv.SERVER_SOFTWARE") (AK)
- Fixed problem with path info when using ServletAlias to point to a zip/jar file (OR)
- Added ServletEnvironment directive to pass arbitrary environment variables to Java (AK)
- The jserv manual program now passes all environment variables to Java, not just PATH, CLASSPATH and TZ (AK)
- Correctly allow virtual servers to use ServletAlias() (RJ)
- Avoid a race condition in mod_jserv.c when receiving a signal. (AK)
- ServletRequest.getRealPath() works correctly (AK)
- manual/jserv can now take -J arguments (after the first argument), which it will pass on to Java (AK)

Apache JServ 0.9.5a - August 13, 1997
(Alexei Kosut)

- Added "watcher" process to handle signals and allow graceful restart/termination of servlets (AK)
- New C program for use with manual mode (see manual/README) (AK)
- Moved Java classes and source to the classes directory (AK)
- Split Java source into several files instead of one (AK)
- Added Makefile to classes/apache/jserv (AK)
- Work around bug in the Linux JDK's java.net.Socket class (AK)

Apache JServ 0.9.4a - August 7, 1997
(Alexei Kosut)

- Default properties file changed to conf/servlets.properties (AK)
- Support for servlet aliases in servlets.properties (AK)
- Can now load servlets on startup (servlets.startup property) (AK)
- New ServletErrorLog directive can log System.err output from Java (AK)
- Exceptions and Errors caught from servlets will print a stack trace to ServletErrorLog if active (or with -t switch in manual mode)

Apache JServ 0.9.3a - July 31, 1997
(Alexei Kosut, Jordan Mendelson, Ian Kluft)

- Fixed socket code so it will work with Linux (JM)
- Added more secure auth string, ServletAuthExport directive (IK)
- getServlets() now returns the correct object (AK)
- sendError() now closes the connection directly after sending the error (AK)

Apache JServ 0.9.2a - July 30, 1997
(Alexei Kosut)

- Added ServletManual directive and "-m" flag to JServHandler, to allow for manual starting/stopping of JServHandler (AK)
- Put additional check into JServHandler to ensure that the request comes from the local host (127.0.0.1) (AK)
- Properly handle exceptions and errors generated by the servlet (AK)

Apache JServ 0.9.1a - July 30, 1997
(Alexei Kosut)

- Fixed so mod_jserv.c will work with Apache 1.2 (AK)
- Made sendError(int) work correctly (AK)

Apache JServ 0.9a - July 29, 1997
(Alexei Kosut)

- Initial version (AK)

Copyright (c) 1997-99 The Java Apache Project.
$Id: changes.html,v 1.92 2000/01/15 00:56:40 jonbolt Exp $
All rights reserved.