iServer Version 1.7.0 01/09/2000

-----------------------------------------------------------------------------
CHANGE LOG

iServer Version 1.7.0 01/09/2000
- ported stop_iws/restart_iws to UNIX/Linux
- ported updated Apache Gateway to UNIX/Linux
- added Servlet Chaining example
- added support for chaining Servlets when the response matches a specific
  mimetype
- added stop_iws/restart_iws C wrapper for easy access to iwsCommand
- added iwsCommand used to restart/stop the server from the command line
- added support for virtual hosting
- added support for enabling/disabling Servlet Chaining
- added support for Servlet Chaining
- added remote_admin parameter to iws.ini used to enable/disable remote
  administration of server
- added backlog parameter to iws.ini used to specify size of client request
  backlog kept by ServerSocket
- added %base_uri% variable to session.ini used to specify base URI to
  session path
- added %base_uri% variable to templates.ini used to specify base URI in
  access log
- added %query_string% variable to templates.ini used to specify query string
  in access log
- combined servlets.ini and filters.ini configuration files into servlets.ini
- ServletTagServlet now can be used within a Servlet Chain
- List Employees and Connection Pool examples now used new included sample
  database
- created sample Microsoft Access database to replace use of Microsoft
  Adventure Works database
- iws and javaGateway C wrappers now support java_exe environmental variable
  with embedded Java VM parameters
- mimetype definitions for .shtml and .ssi are now associated with text/html
  instead of application/ssi
- iws and javaGateway C wrappers now remove temporary files on termination
  signals
- removed filters from Administrator
- removed filters from Documentation
- documented directory tree
- documented setting up iServer as an Windows 9x/NT Service
- documented automatically starting iServer in Windows 9x/NT from the StartUp
  directory
- documented iwsCommand and restart_iws and stop_iws C wrappers
- added FileCache.capacity(), FileCache.size(), FileCache.resize(),
  iws.hosts, iws.getBaseDirectory(), Utils.extractCookie(),
  Utils.getRootHandler(), Utils.concatParameters(), Utils.mergeParameters(),
  AccessLogEntry.baseURI, and AccessLogEntry.queryString to documented APIs
- documented administration of Virtual Hosts
- updated documented classes
- updated log file documentation
- updated configuration file documentation
- updated server installation instructions
- SSIncludeServlet no longer throws an exception when included file contains
  embedded SSI directives
- client requests that result in exception or that are prematurely terminated
  are no longer logged as 200 OK
- query string is now being parsed into parameters when request method is
  POST
- updated documentation for NSAPI/ISAPI/Apache iServer Gateway
  installation/configuration
- NSAPI/ISAPI/Apache iServer Gateways will now try other servers in the
  workgroup when they are unable to connect to the next server in the list
- NSAPI/ISAPI/Apache iServer Gateways will remove servers that are down from
  next list for an interval of time
- NSAPI/ISAPI/Apache iServer Gateways now support load-balancing and failover
- NSAPI/ISAPI/Apache iServer Gateways now uses server with session
- ClusterProxy now tries other servers in the workgroup when it is unable to
  connect to the next/best server
- improved ClusterProxy performance by removing servers that are down from
  next/best list for an interval of time
- ClusterRedirector now redirects to server with session
- ClusterProxy now uses server with session
- InvokerServlet now sends "404 Not Found" when Servlet is not specified or
  when Servlet can not be found
- Administrator no longer converts configuration information to lower case
- iws.init() now catches, reports and logs connection pool initialization
  errors then continues with server startup
- RequestHandler.run() and RequestHandler.nextRequest() now catches Errors
  thrown
- iws.main() now catches Errors thrown
- Utils.encodeCookie() now properly sets expires
- administrator no longer reports valid root directories as not existing when
  base directory is specified during startup
- Session.encodeURL() now properly replaces existing session ids with new
  ones
- Request.getServerPort() no longer returns 0 as the server port when a valid
  server port is known
- logger no longer logs 0 as the server port when a valid server port is
  known

iServer Version 1.6.2 11/07/1999 
- added ability to run a web site contained in a JAR/ZIP file
- added ability for FileServlet to preload list of files into file cache
- added CookieTesterServlet
- added delayed logging using configurable logger interval
- added load-balancing ClusterProxy
- added support for <servlet></servlet> tag using ServletTagServlet
- added <servlet></servlet> tag example
- added IOManager, IOHandler and RealmAdministrator to documented API
- added support for directly accessing contents in jar files
- added ConsoleLogger
- added OutputStreamLogger, common base used by ConsoleLogger and FileLogger
- added Utils.decodeParameters()/Utils.encodeParameters()
- added configuration page for 3rd party add-ons (JSP/iASP/Perl/iScript)
- replaced SSI example include with ssitester
- definitions in configuration files are now case sensitive
- changed administrator to no longer change keys to lower case
- created separate help for administrator
- changed format of aliases.ini, servlets.ini and filters.ini to support
  multiple aliases
- moved configuration of file cache from servers.ini to FileServlet in
  servlets.ini
- reduced default size of file cache from 8MB to 4MB
- expanded aliases to encompass servlets and filters enabling a single
  instance of a servlet or filter to be used my multiple aliases
- updated Servlet.jar to latest version included in JavaServer(tm) WDK
  (JavaServer(tm) Web Development Kit 1.0)
- Request.server_variables are no longer stored in a Hashtable
- improved performance by replacing Strings with StringBuffers and by
  removing redundant code
- redefined alias .ssi as filter ServletTagServlet
- separated server and gateway installation instructions
- updated documentation
- documented configuration files
- documented new Utils API methods
- documented deploying to JAR/ZIP file
- documented required/optional classes
- fixed bug that caused connections to terminate prematurely because the
  default server timeout value was too small, increasing server timeout
  from 1 second to 5 minutes
- fixed bug in RequestHandler that prevented keep alive from working
- fixed bug in administrator that resulted in valid session timeout values
  being reported as invalid
- fixed bug in iws startup that reset session interval to minimum value when
  -1 was used
- fixed bug in administrator that improperly reported that file cache size
  was not being set
- fixed bug in Session.isValid() that invalidated session, but did not call
  HttpSessionBindingListeners for Unbound event
- fixed bug in FileLogger that confused absolute paths starting with / as
  relative paths
- fixed bug in ServletManager that changed matching Servlet/Realm URI to
  lower case
- fixed bug in Utils.parseCookieHeader() that resulted in
  NoSuchElementException being thrown when cookie value contained an
  embedded '='
- fixed bug in DString.extract() that resulted in invalid values being
  returned when delimiters specified was larger than length one character
- fixed bug in FileLogger that resulted in access log entries being lost when
  a template was not specified
- fixed bug in Logger that resulted in access log recording port as -1 when
  port was 80
- fixed bug in iServer Administrator that resulted in Monitor using -1 for
  workgroup server's port number when the workgroup server's port was 80
- fixed bug in FileCache that resulted cache growing larger than maximum
  size because makeSpace() did not free enough before inserting new item into
  cache
- fixed bug in ConnectionPool.putConnection() that resulted in
  Connection.close() being called recursively when extra connections were
  being closed
- fixed bug in administrator that resulted in improper values being written
  for session source

iServer Version 1.6.1 10/07/1999 
- fixed bug where logger was always logging events, error and access
  regardless of logger.ini setting
- fixed bug where session manager was starting when session manager interval
  was set to -1

iServer Version 1.6.0 10/03/1999 
- updated administrator documentation
- added dns_lookup to administrator
- added PreloadServlet sample to demonstrate use of FileCache
- added ability to disable DNS lookup
- added Apache/CGI/NSAPI/ISAPI iServer gateways which allow any
  Web/Application server supporting these protocols to run Servlets using
  iServer as their Java Servlet Engine
- changed exit code for restarting iServer under Windows 9x to from 1 to
  0x7FFF so that when a Java VM error occurs iws.exe wrapper will not loop
  retrying to start iServer
- added cgi-bin directory to distribution
- fixed bug in Utils.getArgs() that caused null to be returned when
  Request.getPathTranslated() returned a value that contained an embedded =
- fixed bug in Utils.getParameters() that caused arguments to be returned
  along with the parameters
- fixed bug in Request that caused HttpUtils.parseQueryString() to throw
  IllegalArgumentException, arguments are now removed from query string
  before calling HttpUtls.parseQueryString()
- changed Request.getRequestURI() to no longer return query string with URI
- changed how request_length is calulated for access log entries, 
  request_length is now set to total number of bytes sent by the client
  instead of bytes read from ServletInputStream
- added new methods to API documentation
- expanded API by exposing FileCache methods for interfacing with the
  server's file cache
- expanded API by exposing ServletManager methods for loading and unloading
  Servlets, Filters and Realms and for checking if a specified Servlet,
  Filter or Realm is presently loaded
- expanded API by exposing Utils methods for reading items and loading
  configuration files
- expanded API by exposing iws variables for accessing aliases, mimetypes,
  messages, resource, servlets, filters, realms, ServletManager and server's
  file cache
- expanded API by exposing iws methods for initializing and shutting down the
  server and for logging errors
- expanded API by exposing iws methods for getting the servers version and
  getting the mime type of a file
- expanded API by exposing Logger methods logging events, errors and server
  access
- expanded API by exposing Realm methods for authenticating computers and
  users and for checking if a given IP address is within a specified range of
  IP address
- added workgroup and computers to administrator documentation
- Y2K certified iServer
- changed SSIncludeServlet #config TIMEFMT %Y and %C to use 4 digit year
- changed FileServlet to generate 4 digit year in directory listings
- changed database and file realms to now check for computers at specified
  hostname, ip address and ip range for proper access rights and block access
  when the computer does not have them
- added computers to databases (iserver.mdb, iserver.sql), administrator and
  access control lists selection form
- changed administrator to now check that selected right/user/group/realm/acl
  are not in use before removing them
- added support for managing database and file realms using administrator
- changed Response ServletOutputStream/PrintWriter to now flush the output
  stream
- changed Response.getWriter() to no longer output headers when called
- fixed bug in RequestDispatch forward()/include() that caused an exception
  to be thrown during processing when query string was null
- expanded security to protect resources using multiple selected access
  control lists
- fixed bug in InvokerServlet that caused an exception to be thrown when a
  Servlet was not specified, InvokerServlet now calls FileServlet when a
  Servlet is not specified
- documented Servlet, Filter and Realm API
- added shutdown delay for controlling how long to wait before shutting down
  server
- changed iws.destroy() to now close the server socket
- changed RequestHandler to no longer keep alive connections when Response
  Connection header entry is set to close
- changed evaluation order for session id, now check for session id from
  cookie first and if not found then check session id from url
- changed HttpServletResponse.encodeURL() and
  HttpServletResponse.encodeRedirectURL() to now check for existing session
  id before encoding url
- changed HttpServletResponse.flush() and HttpServletResponse.close() to now
  flush the output stream
- added support for showing if servlets, filters or realms are loaded or
  unloaded
- added support for servlet/filter/realm load/unload/reload from
  administrator
- integrated online help into administrator
- fixed bug in administrator that prevented absolute root directory from
  being specified
- added support for monitoring and managing workgroup servers from
  administrator
- added add/edit/remove workgroup servers to administrator

iServer Version 1.5.0 06/27/1999 
- documented SecurityService API
- documented Logger, AccessLogEntry, ErrorLogEntry, EventLogEntry API
- updated and expanded documented API
- added support for jsdk 2.1
- added support for invoker servlet
- added new security options to iServer administrator
- added database security
- fixed bug in multi form parser that resulted in connection timeout on read
  when input stream terminated with CR/LF
- added new logger options to iServer administrator
- created oracle schemas
- fixed bug in security service that prevented basic authentication from
  functioning properly with Microsoft Internet Explorer Web browser
- added database logger

iServer Version 1.0.0 05/02/1999 
- added fileupload example
- added multi-part form support

iServer Version 1.0.0 03/15/1999 
- fixed bug that resulted in StatusServet throwing a ClassCastException

iServer Version 1.0.0 03/14/1999 
- fixed bug with how getServerName() generates the host name
- fixed bug with how FileServlet handles root directories

iServer Version 1.0.0 02/21/1999 
- updated documentation
- updated administrator allowing it to support session, session cookie and ip
  address configuration
- added support for specifying how sessions are maintained on client
  (url/cookie)
- added support for listening to requests on single (given) ip address or
  multihoming (*) (all ip addresses)
- added support for specifying session cookie configuration
  (name, comment, domain, path, maxage, secure)
- separated request and response objects from request handler

iServer Version 1.0.0 02/07/1999 
- updated documentation
- added support for specifying absolute directory path for root server
  parameter
- added logger support in administrator 
- separated logger parameters from server parameters
- added access/errors/events log file rollover support
- added template support in administrator
- defined popular access log entry templates
- added support for access log entry templates

iServer Version 1.0.0 01/26/1999 
- updated documentation, fixed spelling and syntax errors
- advworks connection pool was commented out, because most users will not
  have sample database setup and iServer will not start without defined
  connection pools
- updated error handler for date parsing to recover from invalid dates sent
  by the browser

iServer Version 1.0.0 01/24/1999 
- added new connection pools and protected directory samples
- updated list employees sample
- updated installation instructions
- updated build scripts
- updated documentation
- fixed loop hole that allowed user to continue managing iServer after they
  had logged off.
- cleaned up configuration/deployment files
- added connection pools, users, groups, realms, resources to server
  administrator
- added support for session manager thread that invalidates sessions on
  timeout
- added support for http session binding listener/event
- added support for database connection pools
- added support for access control lists (acl)
- added support for enabled/disabled security
- added support for file cache
- cleaned up error handling/reporting
- rewrote object synchronization to minimize the time an object is locked
- added support for cluster redirector servlet
- added support for cluster monitor servlet
  (fault tolerance and load balancing)
- rewrote server administration user interface
- fixed bug where valid session was being improperly invalidated
- added support for single thread model, but not servlet pool
- separated servlet operations to servlet manager class
- added support for if-range modifier
- added support for range/content-range modifiers
- fixed bug affecting generated error messages
- added support for session timeout
- added redirect servlet
- added support for enabling/disabling logging of access/events/errors
- added logger thread for logging access/events/errors
- improved performance, messages and directory templates are now preloaded
- fixed bug where connection was abruptly terminated when stop was invoked
  from the administration control panel, now the request is logged and the
  connection is closed before server is stopped
- added support for preload servlets and filters (load on startups)
- added maximum number connections
- added restart to administration control panel
- added support for if modifiers (if-modified-since/if-unmodified-since)
- added support for keep alive (requests, timeout)
- added detailed explanations for many of the codes in messages.ini
- content length is not being recorded in the log file
- moved file and directory handling into separate component, FileServlet

iServer Version 1.0.0 10/25/1998 
- fixed bug where filters were being loaded and initialized more than once
- fixed bug where cgi servlet was not properly handling date objects sent by
  ssi servlet
- removed server_variables from request headers
- fixed bug where server was not properly redirecting requests to default
  page
- fixed bug where HTTP_ was being added to request header variables
- content length now set to -1 when not known and not 0
- removed iScriptServlet
- removed definition for .ctf from filters.ini

iServer Version 1.0.0 10/15/1998 
- fixed bug, iServer no longer display NullPointerException when
  configuration files are not found
- jsdk.jar added to iServer
- updated installation instructions
- updated iServer license agreement
- cleanup documentation

iServer Version 1.0.0 10/11/1998 
- initial release of iServer
