Following the normal W3C conventions, there were two different
kind of releases of Jigsaw. Member release are provided
to W3C members, a month in advance of the Public
Release. Depending on their status the member release may get a
different release number then the public release. On this page,
you will find the release notes for the different versions of
Jigsaw (which don't necessarily coincide with member
release). From the beginning of 1998, the releases are only
public ones, we still add the word "public" to avoid any
confusion.
NOTE! The odd number in the
middle state that this is NOT a stable release, not that it is unstable,
but it means that not all the features are present, and that some more
testing is needed until it gets its even middle number.
Jigsaw 2.2.6
A public release, made on April 10th, 2007.
This version is a bugfix and optimized version of 2.2.5. It may be
the latest using jdk1.2 only code.
New Features
Support for more XML Parsers in the Resources deserialization code
- Added support for connection reuse policies in the
Client stack.
- Added a default policy to reuse the same connection when the
thread matches (in HttpBasicConnection)
- Added a socket timeout on request
parsing, to avoid having it linked to request timeout
- The Servlet runner thread now use the server
timeout mechanism to interrupt the running thread when the server
is closing the request on timeout.
- Added a method to print Dates in ISO 8601 format without
milliseconds
- Added a "detach" method to HttpBasicConnection to remove a
connection from the list of used client connections but without
closing the socket immediately (used when the client hits a
HTTP/1.0 server that doesn't send Content-Length).
Bug Fixes
- Fixed cookie parsing bug, if the cookie value contains a '='
- Fixed SAX parsing of stores and remote resource description (allow multiple 'characters' call for one value)
- Removed an unneeded synchronization point in HTTPFrame.getURL()
- Added an extra SP when exporting auth headers with different components
- Fixed source code to remove 'enum' as it is now a keywork starting with JDK 1.5
- Fixed client connection deletion in connection reuse, it was leading to a leak in the client hashtable (and to lots of connections in CLOSE_WAIT).
- Fixed bug in DateParser (wrong timezone offset) thanks to Menno Jonkers
- Optimized a bit Digest Auth (the RFC2069 one) and implemented Digest Auth with qop="auth" per RFC2617 (available with SecurityLevel set to 2), See DigestQopAuthPrincipal
- Fixed a few WebDAV properties that were using wrong formats
- HeaderFilter now sets the relevant headers even when the reply is sent via the exception mechanism.
- More SSL and servlet related patches from Thomas Kopp.
- ActiveStream patch, under some condition, the same data
could be re-read a data chunk (thanks to Doug Borland)
- The servlet parameter decoding now uses the right charset.
- Fixed error when file timestamp was not modified but the file was actually modified.
- Fixed deadlock during store change notification when the sweeper is running (very rare)
- Fixed server client count when load is raising from LIGHT to DEAD
- Fixed Segment information unpickle, as the segment start and size were not properly parsed, leading to an infinite loop
- More SSL patches from Thomas Kopp, see changelog for more details.
- Fixed connection count when MimeParser did not started and connection was new.
- Client stack now reuses the
connection timeout parameter.
Jigsaw 2.2.5
A public release, made on June 8th, 2005.
This version is a bugfix and optimized version of 2.2.4.
It contains an updated version of the SSL code (that may require
the use of jdk1.4).
New Features
New Digest Authentication code has been added.
It now conforms to
RFC2617.
The old code was implementing only the
RFC2069
version of the Digest Authentication.
WebDAV support has been improved, interoperating with most WebDAV
clients now.
Bug Fixes
- Added a "detach" method to HttpBasicConnection to remove a connection from the list of used client connections but without closing the socket immediately (used when the client hits a HTTP/1.0 server that doesn't send Content-Length).
- Fixed client connection deletion in connection reuse, it was leading to a leak in the client hashtable (and to lots of connections in CLOSE_WAIT).
- Fixed bug in DateParser (wrong timezone offset) thanks to Menno Jonkers
- Optimized a bit Digest Auth (the RFC2069 one) and implemented Digest Auth with qop="auth" per RFC2617 (available with SecurityLevel set to 2), See DigestQopAuthPrincipal
- Fixed a few WebDAV properties that were using wrong formats
- Added a method to print Dates in ISO 8601 format without milliseconds
- HeaderFilter now sets the relevant headers even when the reply is sent via the exception mechanism.
- ActiveStream patch, under some condition, the same data
could be re-read a data chunk (thanks to Doug Borland)
- The servlet parameter decoding now uses the right charset.
- The Servlet runner thread now use the server
timeout mechanism to interrupt the running thread when the server
is closing the request on timeout.
- Fixed error when file timestamp was not modified but the file was actually modified.
- Fixed deadlock during store change notification when the sweeper is running.
- Fixed server client count when load is raising from LIGHT to DEAD
- Fixed Segment information unpickle, as the segment start and size were not properly parsed, leading to an infinite loop
- More SSL patches from Thomas Kopp, see changelog for more details.
- Fixed connection count when MimeParser did not started and connection was new.
Improvements
- Added a socket timeout on request
parsing, to avoid having it linked to request timeout
- Added a default policy to reuse the same connection when the thread matches (in HttpBasicConnection)
- Added support for connection reuse policies in the Client stack.
- Client stack now reuses the connection timeout parameter.
Jigsaw 2.2.4
A public release, made on February 18th, 2004.
This version is a bugfix and optimized version of 2.2.3.
It contains an updated version of the SSL code (that may require
the use of jdk1.4). It contains a security fix, so
you are encouraged to update as soon as possible.
New Features
The HTTP Client stack has been completely reworked to be
faster and to avoid keeping information on too many remote servers.
The client stack now also has a timeout on connect.
Bug Fixes
- Fix in the client stack persistent connection handler. It now closes the socket and mark the connection free when a "Connection: close" header is in the reply.
- SSL patches from Thomas Kopp.
- URI components now generate an exception when a separator is found
- Memory usage optimization of the serialization of a resource.
- Read/write of stores is now more fault tolerant.
- Fixed the client stack use of connections, also the global server knowledge hastable is now trimmed the right way.
- Fixed StatisticsFrame to use less StringBuffers
- Added a configurable timeout on connect, for the HTTP client stack.
org.w3c.www.protocol.http.connections.connTimeout
(defaulting to 1000ms)
- Fixed ContainerResource check for
duplicate key, the "new key" algorithm is now more random
(ie it uses the
whole scale instead of the object serial mask), as it was leading to
infinite loops on huge sites.
Jigsaw 2.2.3
A public release, made on November 27th, 2003.
This version is a bugfix and optimized version of 2.2.2.
It also includes Jigedit with WebDAV support, a package with
a specific WebDAV configuration will follow, and a tutorial to do the
WebDAV setup is already online.
New Features
Bug Fixes
- Fixed internal copy in DAVFrame in the
case of a SSL server
- Added the underlying exception in the
HttpManager to distinguish between errors in the client stack.
- Fixed ContainerResource check for
duplicate key, the "new key" algorithm is now more random (ie it uses the
whole scale instead of the object serial mask), as it was leading to
infinite loops on huge sites.
- Fixed deadlock in NegotiatedFrame.
getVary() allowed a backward sync chain.
- Added a "equiv" method in MimeType to
check for text/xml - application/xml rough equivalence on PUT
- Added Long support in HttpBuffer and
HttpParser
- Fixed lock ordering in NewStoreEntry to
avoid a deadlock
- Verification of connection availability
on POST changed (need to have a fd_err + select to do it in a better
way)
- Fixed deadlock when a file resource
mark its parent as modified (backward locking, again)
- CvsRunner now uses File.createTempFile
instead of hardcoded /tmp (was problematic
on windows platform)
- Fixed deadlock in FileResource
(backward locking)
- Fixed CgiFrame to accept more output
from Cgis (triggered my perl cgi library)
- Added TeraBytes support for statistics
frame
- Fixed notifyUnload in ForwardFrame to
avoid nullpointer exception (patch
from Brian Laird)
- Fixed getParameterMap of ServlerRequest
to map servlet2.3 spec
- CacheFilter now normalize the URL
before any processing to avoid duplication on capitalization
- Fixed test for socket close in jdk1.4
specific part, added a property to allow retries on two-steps request, in
the case of error on headers (thx to Phil Blake from IBM pointing me this
one)
- Writers for resource serialization,
both in admin server and ResourceStoreManager now force UTF-8 encoding
(as XML is declared to be UTF-8)
- Error recovery on parsing errors of
serialized resources, allowing stores to continue loading
- Cleaned stat generation and added
hits/sec
- HtmlGenerator now uses HTML4.01 and
adds the charset parameter if it is known
- Added finer grain statistics by
separating dynamic from static generated replies
- Fixed replaying of 1xx replies back to
the client
- Fixed HttpCacheControl to add new
values for a directive that appears several times
- Re-fixed validators for If-Match
- dupRequest in proxy now removes
Proxy-Authorization, thx to Thomas Kriegelstein
- Client now send back a BAD_REQUEST when
the http request parser in strict mode throw an exception
- Fixed header name+":" parsing to
include implied LWS
- proxy now serves GATEWAY_TIMEOUT and
BAD_GATEWAY as it should
- Kludge for Age and maxValue -> must
use Long instead of integers
- Fixed sharing default for the cache to
match the one of CacheProp (true)
- Strict HTTP header parsing mode made
more valid wrt quoted strings
- More error handling in strict mode to
generate BAD_REQUEST replies
- A server-side "lenient" HTTP parsing
property has been added, decoupled from the client-side one, settable via
GeneralProperties in JigAdmin
- Parsing of field-value now has a
strict/lenient mode
- Revalidation on HEAD now invalidates on
new values
- Fixed handling of errors during HTTP
headers parsing in the proxy, now returns a BAD_GATEWAY
- Parsing of HttpInteger now generates an
exception on overflow
- Accept header is no longer
automatically added by the proxy when the client request do not have
it.
- Fixed deadlock in ServletWrapper wrt
lock ordering of timeout manager, when different instances of the servlet
are created while some are timeouting
- Handling of HTTP exception in the
ForwardFrame is changed, direct HTTP exception now generates a 502 Bad
Gateway instead of a 504
- Precondition failed in the cache now
generate an exception with a complete reply (ie: not reusing "wrong"
informations from the cached resource)
- HttpCacheControl raw bytes shouldn't be
unquoted before parsing
- Replies from a shared cache now remove
the header list protected by a private cache-control
- Headers protected by a no-cache
directive are no longer stored
- Cache-Control now parses extensions
instead of throwing an exception
- Host header normalization now uses case
insensitive URI scheme comparison
- Proxy now forwards back the 100
Continue reply from the upstream server
- Multiple 100 results now in multiple
ContinueEvents
- Validators (If-None-Match...) in the
EntityCacheResource are now matching the one in HTTPFrame
- Default freshness lifetime for cgi with
no header info is now 0.
- Cache is not used when a no-store
directive is present in the request
- Overflow in Max-Forward leads to an
exception and a 5xx reply now, instead of forwarding a wrong value
- Added consistency checks in the cache
for revalidated resources
- Fixed ForwardFrame to check
chuked/Content-Length mismatch by reusing the duplicated request/reply
that actually has the right information
- Fixed CacheFilter to do stricter
host:port check before invalidating resources on PUT/POST/DELETE
- Invalidation of Content-Location now
uses relative URIs (was partly done, a typo was in the way)
- Fixed CacheStore to avoid calls on
LRUNodes, as synchronization is missing on the SyncLRUList in this
case.
- CacheGeneration uses a more stricter
way of crawling the LRUlist of files to delete
- Fixed parsing of Content-Range (support
for unknown length)
- Fixed XMP parsing in JpegHeaders
- Fixed servlet flush notification to
avoid race condition problems with sendError/sendRedirect and such.
- Fixed http Client to avoid aborting on
strange servlet related IOExceptions (see org.w3c.jigsaw.http.Client
rev1.71 log for in depth explanations)
- CgiFrame now display in the server
console stderr of forked Cgis (prevent some cgi lockups on Win
platform)
- Added a way to restransmit some buggy
but not defined in rfc2616 headers (cookies, not to name it)
- Invalidation of Location and
Content-Location was wrongly assuming that resource were live in the
cache, leading to errors for valid requests
- Fixed If-Match if the resource ETag is
weak (currently, it can happen only in the cache)
- Fixed JpegHeaders to deliver XMP at the
beginning of the XML and not at the beginning of the chunk
- Fixed JpegComFrame, the parameter was
unescaped twice, problematic with application/???+xml mime types
- Added JpegXmpFrame, to extract
automatically XMP from Jpeg images
- Fixed revalidation in HTTPFrame when
both If-None-Match and If-Modified-Since are present
- Implemented Vary support and
revalidation of negotiated resources in the client-side HTTP cache
- Implemented 410 Gone permanent support
via the new "shrinkable" flag of DirectoryResource (similar to
"extensible" for for deletions)
- Cached resources were incorrectly
asking for revalidation every time once marked invalid.
- Cache now serve HEAD from the cache
- Cache now invalidate resource in
Location or Content-Location for POST, PUT and DELETE, if host matches
the requested URL
- Added \CHAR escaping in quoted string
of a header parameter
- Client stack will retry requests only
if it is a known idempotent resource
- Fixed TRACE to allow it again to be
proxied
- Fixed bug in Expectation check in the
proxy, and in the general case.
- Fixed bug in continuation with empty
lines
- Fixed bug in header continuation
parsing
- GZIPFilter was incorrectly setting
Transfer-Encoding instead of Content-Encoding
Improvements
Jigsaw 2.2.2
A public release, made on January 8th, 2003.
This version is a bugfix and optimized version of 2.2.1.
It also includes Jigedit with WebDAV support, a package with
a specific WebDAV configuration will follow, and a tutorial to do the
WebDAV setup is already online.
New Features
Bug Fixes
- Fixed ForwardFrame to forbid forward of
Content-Location when reply is chunked
- Fixed ForwardFrame to remove received
Trailer header
- Fixed HTTP stack's Reply to allow body
on OPTIONS per rfc2616
- Fixed lock ordering in HTTPFrame
regarding methods on Container (deadlock reported 5/12/2002)
- Fixed deadlock in Resource.getParent(),
when both child and parent try to lock each other.
- Deadlock fixes in the HTTP client
stack
- Removed potential conflicting
Connection: header values in the HTTP client stack during discovery
of HTTP capabilities
- Fixed RedirectedFrame to avoid
ipv6-like hosts when it is a ipv4 one.
- Added a way to optimize by not
unloading big stores, depending on a tunable limit.
- Ensure that keys in the
ResourceStoreManager are not used twice when generated
- Fixed the default encoding used in
JigsawHttpServletResponse per servlet 2.3 API
- Solved the deadlock problem with
negotiated frame, directory listing, and everything that needs
backward traversal of the resource tree.
- Fixed JigsawHttpServletResponse, it now
checks that the stream has been commited
before screaming
- Fixed Base64Decoder based on Jeffery
Collins <jcollins@boulder.net> original patch
- Fixed JigsawHttpServletRequest
getCharacterEncoding to return null when undefined instead of the
iso-8859-1 default.
- Fixed ContentLengthInputStream, it now
send an IOException when the stream is cut too early in read()
- Fixed HttpURLConnection getContentType
was raising an exception rather than returning null
- Various updates in the HTTP stack, to
consume less memory and use non-deprecated Date API.
- Integrated cookie parsing patch
contributed by Julien Mudry <jmu@elca.ch>
- URL in jdk1.4 can have an empty file
element, it is now translated to '/' for all methods but
OPTIONS, where it is '*'
- Special files "aux", "con", etc. can no
longer be created by the indexer on Windows platform
(still possible on other platforms as those files are not special
there).
- Fixed servlet wrapper to close the
input stream when needed, also when a relocate or an error is
triggered from the servlet, an exception is raised if the client
already got (part of) the reply.
- ServletWrapper now take the feeding
thread from a thread cache (avoid keeping too many open threads)
- Fixed reuse of connection in the HTTP
Client stack, by using jdk1.4 method on socket (uses reflection to
keep the code backward compatible)
- Fixed HTTP compliance of chunked
request, and proxy of request without body
- Redid the InetAddress dump in the
logger as well as the status code dump
- Memory and performance upgrade of the
infamous CommonLogger and ExtendedCommonLogger, who were the primary
culprits in the memory usage once the stores are loaded.
- Started to find and elimnate all
unnecessary memory allocated
- Fixed directory index of
ZipDirectoryResource, to delete and get size information the right
way
- Fixed ZipFrame to allow automagic
destruction of stale entries in the underlying zip
- Error reported when an error occur in
the file system does not display the PATH any longer to avoid
disclosing
- Fixed a potential leak (never emptied
hashtable) in HttpManager
- Fixed RelocateFrame to accomodate
new ipv6 scan of host in URL
Improvements
- Memory usage reduction
- CPU usage reduction (mostly the loggers that are the hotspots)
Jigsaw 2.2.1
A public release, made on April 8th, 2002.
This version fixes bugs, especially a security bug of version 2.2.0
It also includes Jigedit with WebDAV support, a package with
a specific WebDAV configuration will follow, and a tutorial to do the
WebDAV setup is already online.
It is also the first release Carine
Bournez worked on.
New Features
- JigShell, a small utility
- WebDAV enabled JigEdit
- Implementation of Apache
mod_asis.
- PushCache package, contributed by
Paul Henshaw from
The Fantastic Corporation.
- TidyPutFilter, a filter to validate automatically the
XHTML or
HTML sent via the
PUT method, using
JTidy.
Bug Fixes
- Previously uncaught error (ie: non Protocol ones) during lookup
are now resoved by sending a 400 Bad
Request
- Fixed the way exception filters are called in httpd. Side
effect, ErrorFilter works again
- Fixed a bug in TE Filter that was compressiong twice the stream
(need to figure out why it was called
twice though)
- Fixed semantic of ; in the URI, with the right info given
during lookup
- SECURITY FIX: Fixed security bug regarding URI parsing
- Added a flag to remove the URI from default error pages as well
as the proxy module (SECURITY FIX: avoiding cross
scripting attacks)
- Fixed ServletMapper to do redirect the right way (host parsing).
It was interacting with new jdk1.4
ipv6 scan
- Merged patches from
Thomas Kopp
concerning servlets:
servlet loading, behaviour of
SingleThreadModel
- Reverted 1.3 API calls to 1.2, or used reflection to use
jdk1.3 only methods in the push package
- Added a specific frame to handle MKCOL and other
collection-related WebDAV methods in Jigedit
- Fixed WebDAV implementation, it now sends all the requested
properties in a PROPFIND, with the
right statuds for the undefined ones.
- Modified AclFilter to take benefit of skipBody
- Added skipBody in Request, it allows a filter to skip an eventual
body in a better way than error
recovery.
- Fixed bug when Content-Type was not set (it was set but the value
of the HttpMimeType was null,
defeating the usual check)
- Fixed If-None-Match during the creation of a FileResource
- Fixed trailing / for negotiated resources, it was ignored,
resulting in bad relative links
- Fixed If-None-Match in HTTPFrame, it now handles *
- ResourceStoreManager will issue a warning when a store raise an
exception during save, the general
save will continue (it was not the case before)
- In CvsFileFrame, cvs update is performed also prior to a PUT.
- Added stronger synchronization for log rotation.
- Fixed indexer so that fake file resource can be created, as it
may be dangerous for directories, it is still
forbidden on those.
- Fixed deadlock in DirectoryListerFrame, a lock was not done
resulting in locks done in the wrong order
in concurrent access
- Fix NewStoreEntry, hashtable of loaded ResourceReference is now
cleared when the store is
unloaded.
- Fix in EditableSlider, now a textfield can resize the boundaries
of the slider, a non-extensible mode is
also available
- Fixed RedirectedFrame to add Content-Location after the internal
redirect, and Referer is kept.
- Fixed NegotiatedFrame to gather filters from the selected
resource, collected during the lookup,
instead of the perform. However perform may select the resource if
the state is lost because of another filter.
- Fixed error replies for JigEdit on a 412
- Added synchronization fo class loading in servlet's class
loader
Improvements
- Resurrected -port as an undocumented deprecated feature.
- Added CountInputStream, to get the actual number of bytes
read.
- ByteArrayOutputStream now accept also InputStream
- Implemented jdk1.2 API getErrorStream of HttpURLConnection
- Implemented ETag override to match Apache FileETag directive in
JigEdit
Jigsaw 2.2.0
A public release, made on March 13th, 2001.
This release is the first stabilized version of the 2.1 series, now
renumbered as 2.2. It also includes WebDAV support, a package with
a specific WebDAV configuration will follow, and a tutorial to do the
WebDAV setup is already online.
New Features
- WebDAV implementation
- org.w3c.util.DateParser: a parser for date in ISO 8601 format.
Bug Fixes
- Fixed Allow: header depending on the frame configuration.
- StringAttribute now accept null as a valid value.
- Fixed jigadmin to allow removing some attributes.
- Fixed VirtualHost lookup to use the host part of the resolved URI
instead of only the Host header
- Fixed Host: header checking for HTTP/1.1 requests
- Bug fixed in ServletProperties Reader (InitArgs separator)
- RuntimeException throwned when the servlet container has no
ServletDirectory.
- Fixed VirtualHostFrame for fully qualified request in the URI on
not default ports.
- Fixed / -> %2F for the URI trick for rdf metadata
- Fixed caching for authenticated resources
- Fixed logname for october (10)
- Fixed Content-Length to 0 for a 201 Created without a body
- Compliancy fix in the cache, entity headers removed from a Not
Modified reply
- Fixed slider in JigAdmin to auto expand near the limits
- Fixed NullPointerException in ETag-based PUT on Negotiated
Resource.
- Fixed Chunking when 0 bytes were received, the stream was wrongly
closed.
- Servlet errors are now propagated the right way, and the monitor
always released.
- Chunking is allowed on Connection: close
- Connection: close requests now adds the header automatically in
the reply
- Logger can now log the original URL during an internal redirect
- Fixed Digest Auth bug (well update of the spec) regarding unquoted
parameters in the credential
- Fixed TRACE method, now done directly at the server level, as it
is only used as an echo.
- Robustness fix, servlet are now killed after the right timeout
- Fix problem with servlet timeouts and errors/redirects.
- Various fixes for persistent jdbc connections
- Fixed bug in HttpBasicServer, when the number of IP for a host was
updated with less IPs
- Fixed compliancy bug for OPTIONS * (Content-Length is now
explicitly 0)
- Fixed log time when the server ran into daylight saving changes.
- And several other ones...
Improvements
- HTTP Compliancy improved
- Servlet now reuse Jigsaw filtering system even on the way back
- Added support for mirroring from a non-root resource (providing
all the underneath links are relatives)
- Creation of NegotiatedResources in DirectoryResource is now
incremental.
- Added more statistics about resource store usage
Jigsaw 2.1.2
A public release, made on August 9th, 2000.
This release is the updated and enhanced version of the 2.1.1 release
it includes all the new features found in 2.0.5 and stability has been
vastly improved since 2.1.1, for both server and client side, also
servlet and jsp support has been improved.
New Features
- CC/PP implementation.
- Persistent Jdbc connection handler.
- HTTP/0.9 support in client side API (*sigh*)
Bug Fixes
- Many fixes for JSP support
- Fixed init of log rotation and log format
- Fixed several deadlocks in during indexing+save+event processing
- Fixed HTML4.0 compliancy of container listings
- Fixed requestDispatcher for VirtualHosts
- Fixed problem with getServerName and Host with no port number.
- Connections count and overall stability in SocketClientFactory
- ETag generation fixed when a non-file resource is involved.
- Fixed XMLResourceWriter, child list for jigadmin was not encoded.
- Fixed CommonLogger, some entries were missing when the buffer
length was reached.
- Fixed a bug in HTTPFrame leading to modification of the stores
for every load of a store.
- Fixed AclRealm so that AuthUser state is added to the request
- Fixed JpegHeaders to release the file decriptors on the file
- Fixed JigAdmin to correct URI not ended with '/'
(leading to an error when using jdk1.3)
- Fixed Slider in Jigadmin so that it checks the bound to avoid
problems
- Fixed a bug in ServletMappefFrame (pathinfo not corectly set)
- Fixed a bug in ServletResponse.sendRedirect()
- Fixed HTTP/1.0 request in client side when a body is there and
an error is replied
- Fixed FowardFrame to close connection when amgibuity can be raised
by the client-side reply concerning Content-Length.
Improvements
- Added a lenient HTTP headers parsing mode to be kind to
ill-configured servers
- -host option resurrected
- CgiFrame can reuse the frame config
- JpegHeaders can extract metadata from digital cameras
- NegotiableFrame now uses ordering for Accept:
- Better Statistics Frame
- HttpAccept can have a quality factor
- Jigadmin can do a local reindex (that's what people usually want)
- Relocate and Redirect redone to be more flexible.
- MimeType can now be cloned
- Charset support, independant of the Mime Type
- Added get/setSMaxAge to be nice for caches
- Automatic log rotation in CommonLogger and ExtendedCommonLogger
- Statistics frames are now giving more informations
- HTTPFrame can have multiple indexes
- HTTPFrame generate index for generic containers
- ThreadCache is now using a FIFO for the free threads, to deal
with some broken jdk.
Jigsaw 2.0.5
A public release, made on July 5th, 2000.
This release is the updated and enhanced version of the 2.0.4 release
it includes all the new features available in 2.1.1, like servlet 2.2
support and JSP support. Also many bug fixes for improved stability
and HTTP/1.1 compliance.
New Features
- Servlet 2.2 support (except for .war as it is too
"file" oriented).
- Charset support
- NoCache filter to deal with broken browsers.
- Shutdown hook, to save the configuration in case of emergency
(requires jdk1.3 to work, but jdk1.3 is NOT required to run Jigsaw)
- Automatic log rotation.
Bug Fixes
- Fixed loggers to have a good date for HTTP/0.9 requests on
dateless replies
- Fixed JigAdmin to correct URI not ended with '/'
(leading to an error when using jdk1.3)
- Fixed a bug in HTTPFrame leading to modification of the stores
for every load of a store.
- Fixed AclRealm so that AuthUser state is added to the request
- Fixed JpegHeaders to release the file decriptors on the file
- Fixed ETag generation when a non-file resource is there.
- Loggers fixed, some entries were dropped when buffer was full
- Some servlet parameters were lost in servlet call.
- Fixed SocketClientFactory for more stability and better idle
connection removal.
- Fixed problem with getServerName() when port is 80
- Fixed return code when servlet is not available
- Fixed HttpBasicConnection to avoid caching IP forever.
- Fixed RequestDispatcher with VirtualHost
- Various fixes for JSP support.
- Fixed ServletPropertyReader for servlet preload.
- Fixed default port recognition in the lookup phase of the proxy
- Fixed synchronized call in HttpBasicServer to avoid deadlock
- bug fixed that was preventing binding on a specific IP
Improvements
- Added a lenient HTTP headers parsing mode to be kind to
ill-configured servers
- -host option resurrected
- CgiFrame can reuse the frame config
- JpegHeaders can extract metadata from digital cameras
- NegotiableFrame now uses ordering for Accept:
- Better Statistics Frame
- HttpAccept can have a quality factor
- Jigadmin can do a local reindex (that's what people usually want)
- Relocate and Redirect redone to be more flexible.
- MimeType can now be cloned
- Charset support, independant of the Mime Type
- Added get/setSMaxAge to be nice for caches
- Automatic log rotation in CommonLogger and ExtendedCommonLogger
- Statistics frames are now giving more informations
- HTTPFrame can have multiple indexes
- HTTPFrame generate index for generic containers
Jigsaw 2.1.1
A public release, made on March 6th, 2000.
This release is the updated and enhanced version of the 2.1.0 release
it includes all the new features available in 2.0.4, as well as new
ones, like servlet 2.2 support.
New Features
- Image metadata
extraction
- Servlet 2.2 support (except for .war as it is too
"file" oriented).
- Charset support
- new rfc2616 compliant cache (almost finished)
- NoCache filter to deal with broken browsers.
- Shutdown hook, to save the configuration in case of emergency
(not yet functional, it will work with java2 1.3 and up)
- Automatic log rotation.
Bug Fixes
- Bug fixed in RealmCatalog and AuthRealm
- internal lookup bug in ProxyFrame
- Fixed bug in the creation of frame arrays
- Fixed an unload notification that was not passed to frames
- Fixed a deadlock in the ResourceStoreManager
- Fixed an extra Content-Type sent in the admin protocol.
- ChunkedInputStream now notifies an EOF if it happens while you
ask to read for more bytes than available (was potentially waiting
forever before that!)
- Fixed HttpBasicServer, when the client part has to do a two stage
HTTP/1.1 request on behalf of a 1.0 client (proxy)
- Fixed ChunkedOutputStream, it is now more optimized and a
potential char to byte convertion problem has been removed. Also,
the closing of the stream has been fixed.
- Fixed Base64 encoder and decoder, to avoid a potential char to
byte conversion error
- modified the attribute name for last modified, as it was
interacting badly with revalidations
- Fixed MimeType matching
- Fixed bug in HttpMessage, The proxy stopped to forward the
SetCookie header
- Invalid XML characters are now encoded
- FileAttribute now pickles a String, mandatory for remote admin
- Resource store upgrader redone so that it works for jdk1.2.2
- Fixed bug preventing binding on a specific IP
- Redone Relocate and Redirect frames so that virtual hosts and
proxies are now supported.
- Fixed static declaration of inner classes in XMLProperties
- fixed HttpAccept to use quality factor as it should
- Fixed LookupState to use ; in the URI during lookup.
- Fixed init code of AttributeHolder
- Fixed race condition in resource store loading
- Fixed getRealPath in ServletContext
Improvements
- Added a more clever (and expensive) loop check in the Proxy,
it check for the IP and not for the host only
- Relocate and Redirect redone to be more flexible.
- MimeType can now be cloned
- Charset support, independant of the Mime Type
- Added get/setSMaxAge to be nice for caches
- Automatic log rotation in CommonLogger and ExtendedCommonLogger
- Statistics frames are now giving more informations
- HTTPFrame can have multiple indexes
- HTTPFrame generate index for generic containers
Jigsaw 2.0.4
A public release, made on January the 21th, 2000.
This release is a backport of all enhancements that does not deal
with XML serialization and also a bufix release.
New Features
- Image metadata extraction
- Servlet.properties parsed at startup
- Charset support
- NoCache filter to deal with broken browsers.
Bug Fixes
- Bug fixed in RealmCatalog and AuthRealm
- internal lookup bug in ProxyFrame
- Fixed bug in the creation of frame arrays
- Fixed an unload notification that was not passed to frames
- Fixed a deadlock in the ResourceStoreManager
- Fixed an extra Content-Type sent in the admin protocol.
- ChunkedInputStream now notifies an EOF if it happens while you
ask to read for more bytes than available (was potentially waiting
forever before that!)
- Fixed HttpBasicServer, when the client part has to do a two stage
HTTP/1.1 request on behalf of a 1.0 client (proxy)
- Fixed ChunkedOutputStream, it is now more optimized and a
potential char to byte convertion problem has been removed. Also,
the closing of the stream has been fixed.
- Fixed Base64 encoder and decoder, to avoid a potential char to
byte conversion error
- Fixed cached entry invalidation, it now marks the entry to be
revalidated next time rather than removing it directly from the
cache (helps disconnected operation).
- Fixed header update during revalidation not matching 200 or 304
(ex: auth failed)
- modified the attribute name for last modified, as it was
interacting badly with revalidations
- JigsawRequestDispatcher in servlet is now cloning the request
before an include or a forward
- Fixed MimeType matching
- CacheFilter no longer caches replies with Set-Cookies
- Fixed bug in HttpMessage, The proxy stopped to forward the
SetCookie header
Improvements
- Added a more clever (and expensive) loop check in the Proxy,
it check for the IP and not for the host only
- Better servlet 2.1 support
- Better caching algorithms, (completely redone for 2.1.>0).
Jigsaw 2.1.0
A public release, made on September the 9th, 1999.
This release is the first release using the new serialization scheme.
It allows you to change the way the serialization is done.
As an exemple, and to provide an easier access to the configuration.
New Features
- New serialization scheme, the current version uses XML, see
the JXML format for more
information on how to read the serialized files.
- New admin exchange format, using
JXML, it allows you to
create administration scripts.
- A new upgrader will convert automatically the old Jigsaw stores
to the new format, the old stores are kept in a backup directory.
Bug Fixes
- more HttpRange can now be created: "-500","500-", by using -1 as
the default value
- The request parser now skip the body if sent directly by the client
when an error occured.
- Servlet are destroyed only if all the connections are closed
- Lister in Jigedit now defines the ACTION in the FORM
- Servlet bug fixed in getResource(), thanks to James Clark.
Improvements
- Directory listing now ends the URI of the containers with a "/",
preventing an extra redirect
- Logger now has a property to define the logging directory
Limitations
- The jdbmResourceStore has not yet been ported, a consequence is
the lack of CacheFilter in the proxy, but it will be replaced soon
by a completely new cache.
Jigsaw 2.0.3
A public release, made on July the 27th, 1999.
This release is a bugfix version of the 2.0.2, while 2.1.0 will add
new feature and will completely change the way the resources are
serialized).
Meanwhile, there are new functionalities, like the new Acl api, which
replaces the old auth schemes.
New Features
- new Acl API, more flexible than the previous auth scheme.
- Redirecter Frame now handles PATH_INFO.
- Charset and language dialects negotiation.
- Added MimeTypeArray and other basic attributes arrays.
Bug Fixes
- Bad request handling is better, previously, HTTP/1.1 without a
Host: header or a full URI was just closing the connection.
- Servlet indexer can now index servlets with full package name
- Bad permission on a file now fires an exception, rather than
(possibly) hanging.
- MimeAttribute null balue is now handled in jigadm
- Cache is now sending the right size for null documents
- Servlet's getReader now takes care of the encoding.
- ServletRequest now merges URI parameters and body parameters.
- Fixed ResourceEvent bug (unloaded resources are no longer receiving
events)
- Cache is no longer blocking for non-sized multipart documents.
- Fixed loop in proxy when the proxy was on port 80 (fixed also if
it is the default https port)
- Fixed timestamp problem when a file has been modified in the past
(clock skew is a pain)
- Fixed max-connection and notification of waiting threads during the
deletion of an old kept-alive connection
- Cached VaryResource are now checking ETag the right way, no more
304 replies when it was just a cache revalidation.
- Multiple cookies are now sent using multiple headers (ugly but
cookies ARE ugly).
- Fixed ResourceStoreManager initialization, when another root
resource was set, it may end up in resource duplication and
problems while attaching frames/filters, also it was causing
deletion loops. WARNING! You may have to redo your configuration if
you changed the root resource!
- Fixed servlet timeout unit
- SSI Frame and servlet interaction fixed (no more chunking in that
case)
- Logger and port can be changed while the server is running.
- The "No logger" warning is more explicit
Improvements
- Servlet timeout can be disabled
- Servlet cookie maxage can now be -1 (unlimited)
- Language negotiation has been redone, it now check dialects
also
- Content negotiation now takes the order into account
- Realms now have a real feeder (administration tool)
- Added bind address so that multiple interfaces can be bound.
- Client garbage collection scheme has been redone, allowing smoother
handling of clients when load goes up (it means also better
performances)
- MirrorFrame now tweaks also temporary redirects
- Md5 constructor now allows an encoding string.
A public release, made on March the 31th, 1999.
This release includes the first version of the new administration tool
(jigadmin, v2). Along with that, numerous improvement over the old
version, like servlet API 2.1 support.
New Features
- Digest Authentication
- Http Extension Framework (HttpExtFrame)
- New JigAdmin. This one should be more intuitive than the other, but
still, you probably need to understand the design to take best out of
it.
- JSDK2.1 (Servlet API) support.
- Per servlet timeout is possible
- JNI port of LibUnix, thanks to Roland Mainz
- New logger ExtendedCommonLogger, doing log rotation and using ECLF
format
- *forbid* can be used as a Container index
- Log file resolver, to do DNS resolution offline
- ServletMapperFrame, used to map a file to a servlet (see the FAQ
entry about JSP)
Bug Fixes
- HttpChallenge fix, the byte buffer is now recomputed when it
changes.
- Redirect fix for virtual hosts
- Relocate fix for virtual hosts
- Frame identifier now used in FrameReference as you may have
multiple instances of the same class attached to a resource
- ContentLengthInputStream and ChunkedInputStream now throws an
IOException when an error occurs
- 201 Created now generates the right response
- FileAttribute is now sent as a String in the admin protocol to
avoid automatic conversion of jdk1.2
- When indexing a file with multiple extensions, frames attirbutes
are now aggregated. It requires the use of the new default
indexer provided in the distribution, as the Content-Type
for modifiers (like .fr) is now
set to *none*
- VirtualHost now remove automatically the ":80" added by some
robots.
- Extension matching process now does "perfect" match, then case
insensitive match if desired.
- CgiFrame has now PATH_TRANSLATED defined
- RedirecterFrame now forward the query string as expected.
Improvements
- index resolution for containers now add Content-Location
- PUT on negotiated resources is handled using ETags
- Users can add environment variable in the CgiFrame
configuration
- ETag generation is done in one place, so you can overload it.
- URLDecoder updated to use InputStream AND Readers
- ContentTypeIndexer can now use wildcards (well only *) in its mime
type definitions.
- ThreadCache behaviour near the limit is now the right one, also
there is a feature to wait for all the thread of the cache.
- PassDirectory can now act as a normal DirectoryResource is the
pass-target is not set
Jigsaw 2.0.1
A public release, made on January the 18th, 1999.
This release has been done to allow people to use the admin tool
despite a JDK1.2 bug. So the fixed bug list is quite short!
Bug Fixes
- Nasty kludge (creation of an useless object) to prevent bug in
JDK1.2 classloader
- Garbage collection of old client connection redone.
Jigsaw 2.0.0
A public release, made on December the 24th, 1998.
This is the final version of the 2.0 version of Jigsaw.
This is a bugfix release of the 2.0beta3.
New Features
- DELETE method implemented both on normal resources and on CVS
resources. By default DELETE is not enabled
- New version of JigEdit (documentation pending)
- JDK1.2 fixes, it now compile gracefully with JDK1.2, which means
that the usual warnings are thrown.
Bug Fixes
- HttpCacheControl bug on "no-cache"
- Event model for ResourceFrame fixed
- Deleted variants of a Negotiated Frame are now removed from the
list of variants
- PageCompile fix for \ under Windows and possible clash on class
name.
- getCookies method for Servlets
- NegotiatedFrame throw a 404 if no variant are present (after a
delete)
- Servlets called from SSI don't close the stream any longer.
- AdminReader and PlainRemoteResource are now URLEncoding the URIs
.
- File system sensitivity check is now working during the lookup.
- First access on some resources may return an error as the parent
was not created, now fixed.
- File Descriptor leak fixed on ugly configurations.
Enhancements
Documentation is still evolving, and, as always, feedback welcome!
Jigsaw 2.0beta3
A public release, made on October the 2nd, 1998.
This is a bug fix release of the previous 2.0beta2.
New Features
- PageCompilation, allow you to do fancy server side includes
- The ZipIndexer allow you to serve files contained in a zip.
- Port of the LabelBureau
- ServletIndexer allow you to index servlet and remove the .class
automatically
- ProxyDispatcher rules editor, and re-parsing of the rules.
Bug Fixes
- Various bug fixes on servlets
- Properties editable directly in JigAdmin (mICP, proxy dispatcher,
servlet)
- servlet classloader revamped.
- ProxyFrame lookup bug (inifnite redirect on itself) fixed
- Observable properties now works better.
- Jigadm gives now more feedback during save and such.
- Jigadm crash on latest JDK fixed.
- HTTP/1.1 fixes according to the latest
draft-ietf-http-v11-spec-rev-05
- Jigsaw client now reuses connections the right way
- Tons of deadlocks and error recovery added in the internal
handling of the cache of the proxy
- getRequestURI now works according to JSDK's api.
- fixes in the ZipDirectory
Enhancements
- The documentation is evolving, but still, constructive comments are
welcome!
- JigAdmin GUI gives more feedback. Designers, feel free to work
on the GUI!
Jigsaw 2.0beta2
A public release, made on July the 10th, 1998.
This is a bug fix release of the previous 2.0beta1.
New Features
- Complete JSDK/2.0 servlet API support. It even includes session
tracking.
- Some filters to demonstrate HTTP/1.1 interoperability like the
UseProxyFilter.
- HourLimiterFilter, to restrict access during some time.
- Content-Type indexers to use all the Content-Type information given in a
PUT.
Bug Fixes
- Broken resources can now be deleted
- Many HTTP/1.1 fixes according to the
draft-ietf-http-v11-spec-rev-03.
- Partial Content fixed (it was sending one byte too much)
- Missing Content-Length
- Content-MD5 to ensure end-to-end message integrity check.
- Events within frames and resources now fixed.
- Bug in SSI frame (event related).
- Many Cookies fixes, it is now implementing more things than before.
- Tracking of the "real" root resource.
- some more timeouts to solve the problem of blocked threads
- Fixes in jdbm, to fix the way the buckets were splitted in the
cache.
- Virtual Hosting was broken when issuing redirects, now fixed with the
creation of a specific resource: VitrualHostResouce.
- Range requests from cached resources now have the real value.
Enhancements
- The documentation! It is not perfect yet, and comments are welcome to
improve it.
Jigsaw 2.0beta1
A public release, made on April the 8th, 1998.
This is the first complete release of the new Jigsaw, with the new internal design.
Bug Fixes
There was almost no bug fix in the new resource model of Jigsaw, but there
was some modification of the HTTP stack, mainly about the handling of the PUT
method.
New Features
All the resources of the 1.0beta2 has been ported to the new 2.0 version.
This includes:
The new documentation is also more complete.
Incompatible changes
To avoid the name length limit on the Mac, the resource files used by
JigAdmin are now stored in a zip, the old version of JigAdmin
will not work with this new version, you then need to upgrade both the server
and the client to do administration.
Jigsaw 2.0alpha1
A public release, made on January the 31th, 1998.
This 2.0 release is the first release of the new internal design of Jigsaw.
Bug Fixes
This version as all the bug fixes of the 1.0beta2 about protocol issues.
Other bug fixes have no meaning here as the internals of Jigsaw have been
reworked.
Incompatibles changes
- The name of the classes are now org.w3c... instead of
w3c...
- The resources are no longer linked with the protocol, protocole frames
are added to the raw resources
- The resources are limited, DirectoryResource, FileResource,
PassDirectory, FramedResource, ContainerResource and
ExternalContainer.
- The new frames are:
- The filters are no longer placed on the resource, but on the protocol
frame.
- The admin server has been reworked to support framed frames.
- Support for active Resources through listeners. (bean-like event
model).
- Modification of the JigAdmin configuration tool to support
protocol frames and framed frames.
- The root store of the distribution is no longer needed to start a new
server, it creates its own store if none are present.
- The ResourceStoreManager has been completely modified, so the old
configurations for the 1.0beta serie will no longer work. You will have to
reconfigure your server entirely!
- The form-based configuration is invalid now and has been removed. You
MUST use the administration server to configure Jigsaw
New Features
- True reindexing now exists (This is real reindexing rather than deleting
the resource).
- Jigsaw will create the root store if not present.
- Installation program that modifies the property files of the servers
according to your configuration.
- Partial draft of the new documentation, the next
release will have a completely new documentation.
Jigsaw 1.0beta2
A public release, made on January the 31th, 1998.
This is a bug fix release of the previous beta release. The purpose of the
"beta track" is to improve the stability of Jigsaw. For further developments,
see the 2.0 track.
Bug Fixes
- Fixed revalidation mechanism with a no-cache directive.
- The update of a cached resource in case of a revalidation is now
correct.
- The Max-Forwards header is now well handled.
- The PUT and POST methods are now working well on
HTTP/1.1 servers.
- Fixed a bug in the Via header of proxied resources.
- Fixed default adds of HTTP headers that were wrong.
- debug of the classloader for servlets
- Bug fix in the jdbm enumerator.
Enhancements
- The indexers can now create "ghost" resources to allow more fancy uses
of Jigsaw, like shadow icon directories.
- Added the TRACE method of HTTP/1.1
- Added the possibility of templates in the indexers
- the GrepPutFilter forbid a PUT of a document containing a specified
string. Very useful when you edit your website from one server and you
doesn'y want to allow links to this server.
- Added a DateThread, if you want to speed up Jigsaw a bit (~10% by
switching loggers).
Jigsaw 1.0beta1
A public release, made on September the 1st, 1997.
This is just a bug fix release of the latest member beta release.
Bug Fixes
- Fixed a bug in Content-Length in case of Chunked encoding.
- Added more feedback when a configuration error occurs while using
JigAdmin.
- Fixed bug in the CacheFilter
Enhancements
- Added a new Resource, DirectoryLister, acting like when you access to a
directory, useful to make a small index.
Jigsaw 1.0beta
A member specific release, made on August the 1st, 1997.
Bug Fixes
- FileResource now supports the HTTP/1.1 If-Range header, and a
slight bug was fixed in the emitted Content-Range header
- The HTTP client side cache filter has been fixed (jdbmResourceStore
enumration was buggy)
- The Caught Exception trace in errlog has been removed (The trace was
the bug - tm)
- Fixed a bug in ICP message parsing (will now correctly handle message of
length exceeding 255 bytes)
- If it manages a shared cache, the CacheFilter will no longer cache
documents retreive through a request that has an Authorization
header.
- Fixed a bug in HTTP Date parsing (one of the three date format wasn't
parsed properly)
- Fixed a bug in ContentLengthInputStream (wrong size after an error on a
read)
- Fixed a bug in ActiveStream which was the source of empty documents
feeded by the proxy.
Enhancements
- Added a property in the ICPFilter
to disable caching of documents retreived through ICP
- JSDK/1.0 FCS servlet API support
- Powerful JDBC access through server side include.
This new feature allow you to querty any JDBC compliant database and embed
the result within your HTML page. Check the SSIResource api.
- PICS & JDBC.
A new LabelBureau implementation is available. It relies on any JDBC
compliant database as the storage mechanism for PICS labels, which makes
it more scaleable than the previous filesystem based approach.
- Servlet support has been upgraded to 1.0FCS; Support for automatic
servlet reloading has also been implemented (Jigsaw will detect that the
servlet class files have changed and will reload them automatically).
New Features
- Added a companion server to do the remote configuration.
The protocol used to communicate with the Admin servlet hasn't been
specified yet, and will probably change in the next releases of Jigsaw.
The client part of the API (w3c.jigsaw.jigadm.RemoteResource)
is unlikely to change though.
- A new graphical tool is available to do the configuration of Jigsaw.
Currently, this allows you to do everything the form based editor could
do.
- Support for the SAP
protocol has been included, as the starting point for multicast
proxy-to-proxy support. SAP is the Session Announcement Protocol (an
Internet draft)
- The ProxyDirectory
resource now supports ftp tunneling (it won't do caching until someone
tells me how ftp results can be cached)
- Support for a light multicasted version of ICP now available in the
proxy, turn your hundreds of useless 5Mo caches into a usefull 50Mo
collaborative proxy: the net is the computer ! Check the MICPFilter
client side filter.
- Resource can now be extended through the use of ResourceFrame;
The notion of HTTP filters has proven usefull enough to be extended for
non HTTP resources. You can now attach frames to resources that
describe users for example (such as the w3c.jigsaw.auth.AuthUser).
Incompatible API changes
Incompatible Configuration Changes
- Filters pickling as attributes
Filters pickling has changed: filters are now just a special resource
attribute, and follow the general pickling format. They used to be
special, and that caused lots of troubles.
Don't redefine the pickle method !!
- Cache directory hierarchy
The cache directory hierarchy has been made multi-directory: cached
entries are stored in a tree of directories instead of within a single
directory (lessen the load on the file system by decreasing the acche
directory size)
Jigsaw 1.0alpha5
A public release made on February the 13th, 1997.
Incompatible changes
- The AttributeHolder
unpickle
and unpickleInstance
methods, now take a third boolean parameter, that indicates if the
resource is to be initialized after unpickling. Warning if you have
written an 1.0alpha3 resource that redefines this method, you should make
sure to define the new format for this method (since it's the one that
gets called by the unpickling engine)
- The HttpReplyMessage setLocation
method now takes an URL, to reflect the fact that HTTP/1.1 specification
requires an absolute URL here.
- The getURL method of HTTPResource
has now been splitted into two diferent methods:
- String getURLPath()
- Returns the path of the URL of the resource (as a String)
- URL getURL(request)
- Retuns the full URL of the resource. With virtual hosting support,
it may happen that a resource has differnt URLs according to the
incomming requests, that's one of the reason for that split.
- AttributeHolderAttribute
semantics has slightly changed: it is up to resources using that kind of
attribute to initialize the value (if any) of that attribute, by calling
their initialize
method with appropriate default values.
- Resources can now refuse unloading, through the new acceptUnload
method. This allows to lock a resource in memory, whatever happens.
This should be use only with great care.
- The ResourceStoreHolder
interface has changed in the following ways:
- notifyStoreUnload
- Has been renamed to acceptStoreUnload,
and returns a boolean that indicates wether the store holder is
willing to get rid of any of its references to the store. If any of
that store holders return false the store will not ne
unloaded.
- notifyStoreShutdown
and notifyStoreStabilize
- Semantics has been slightly changed: it is nolonger up to the
store holder to perform the job. The first method is the one in
which the holder should get rid of all its references to the store
(by nullifying them), and the second one is just a
notification.
- The ContainerResource
lookupStore
method now throws an InvalidResourceException
if the resource exists in its store but cannot be restored. In such a
case, the DirectoryResource
will emit an appropriate error message.
- The ServerHandler
interface initialize
and clone
methods now provide a pointer to the ServerHandlerManager
as a first parameter.
- The resource and resource store APIs have been moved outside of
Jigsaw. After a year of experimentation, this code has proven
usefull outside the scope of the server itself, that's why we decided to
move it to a newly created package w3c.tools.store. If you
have written some resources, the only change for you will be to import
that new package in your class files. The precise list of classes that has
moved is:
- Attribute.java
- AttributeHolder.java
- AttributeHolderAttribute.java
- AttributeRegistry.java
- BooleanAttribute.java
- ClassAttribute.java
- DateAttribute.java
- DoubleAttribute.java
- FileAttribute.java
- FilenameAttribute.java
- HolderInitException.java
- IllegalAttributeAccess.java
- IntegerArrayAttribute.java
- IntegerAttribute.java
- InvalidResourceAttribute.java
- LongAttribute.java
- ObjectAttribute.java
- PropertiesAttribute.java
- Resource.java
- ResourceLocker.java
- ResourceShadower.java
- ResourceStore.java
- ResourceStoreHolder.java
- ResourceStoreManager.java
- SimpleResourceStore.java
- StringArrayAttribute.java
- StringAttribute.java
- UnknownResourceException.java
- The ResourceStoreManager
unpickleProlog
method no longer returns a boolean. Instead it throws one of:
- NotAStoreException
- If the file preambule doesn't match the store cookie.
- InvalidStoreClassException
- If the class willing to load that repository doesn't match the
class that saved it.
- InvalidStoreVersionException
- If the repository version doesn't match the loading class
version.
Compatible changes
- HTTPResource defines a new verify
method, that might be called by a resource store salvager to check the
consistency of the resource.For example, file system based resources will
use that method to check that the file or directory they wrap still exist,
and delete themselves if not.
- DirectoryResource
listing now emits HTML3.2 compliant documents, along with a link to the
container (when possible)
- The realms catalog no longer uses absolute pathes, it will not however
upgrade all realms catalog to not using absolute path. Relative path are
relative to the server's auth directory (typically
config/auth)
- The w3c.jigsaw.space property is no longer settable through the
Admin properties editor. This was an oversight. The only way to set the
space for a server, is through the -space commandline
toggle (check the command line
page for more details)
New features
- A new SalvagerResource
has been written. This resource will walk through the entire resource
space, to check for:
- Cycles in resource stores (due to Jigsaw bugs)
- Unused resource stores (it garbage collects the stores)
- Synchronize resources with the file system, by calling the verify
method of all resources.
- A new ResourceWalker
interface is available, along with a WalkerEngine. These
two classes provide respectively an interface to handle the walk, and an
engine that will trigger call to implementors of previous interface
while walking through a resource space.
Bug fixes
Numerous bug fixes have been omitted from the list, that list only the main
ones:
- The ResourceStoreManager
had numerous bugs, most of them should now be fixed.
- The ICPFilter
HTTP client side filter that implements the Internet Cache Protocol should
now be compatible with Squid implementations
- CVS has been fixed in numerous ways; the PutList resource should now be
usable.
- The basic class AuthFilter now
performs authentication during lookup, rather then at
ingoingFilter's time.
Jigsaw 1.0alpha4
A member specific release, made on January the 13th, 1997.
Incompatible changes
- Properties are no longer saved in a single file, each ServerHandler has
to manage its own property file. The file is designated through the server
identifier. This means that older httpd.props file should
be changed by:
- Renaming them to http-server.props (the default server
identifier)
- All properties prefix should be removed (ie all http-server
prefixes)
- The AttributeHolder pickling format has changed:
- The FilteredResource pickling method had a bug (it didn't conform to
the general format)
- Before being dumped, attribute values are prefixed by theire pickled
length. This allows the unpickleInstance method to skip unknown (ie
deleted) attributes.
- The DaemonProperty
class is now only used as a property loader. It implements a catalog of
property sets; each ServerHandler
instance is responsible for managing its own ObservableProperties
instance.
- The getURL
method of User HTTPResource
instances now return the full path of the resource within any of the
server contexts (it used to return the full URL).
- The abstract Attribute class
now defines a new getPickleLength
abstract method (that has to be defined by sub-classes). This method is
used for the new pickling format of resources, to allow the unpickle
method to skip unknown attribute values.
- The ResourceStore
API has changed (for ResourceStore implementers only). The getVersion
method has been added, and must return the version of the class that
implements the store.
The initialize
method has a new opaque token parameter, to be used by the store
when calling back the resource store manager (eg when calling the
markModified method). The token can be thought of as the identity,
for the resource store manager, of the store.
- The HttpManager can
now be instantiated several times within the same process. This allows for
different context for the HTTP client side API. More precisely, the new
method getManager(Properties
props) will create a new manager if no other manager has been created
with that exact property set.
Bug fixes
- The CommonLogger now
initializes its buffer size properly from properties.
- Several fixes in the CacheFilter
(protocol implementation errors)
- Bug fixes in the server-side Request object, wouldn't
allow for non persistent connections.
- The new SocketClientFactory
now properly deletes old clients if needed (old clients would otherwise
tend to be priviledged wr to newer ones).
New features
Compatible API Changes
Jigsaw 1.0alpha3
A public release, made on October 7th, 1996.
This release is mainly a bug fix release with regard to the 1.0alpha2 release.
Bug fixes
Main bug fixes are:
- The HTTP client side code has been reworked. This shouldn't affect users
of that package, since it is mainly a rewritting of the internals of the
HttpManager. The main problem was the managing of persistent connections,
which is now much enhanced. The code was also cleaned up in that
process.
- The cache garbage collector really works now ! The 1.0alpha2 cache
garbage collector was just a proof of concept. The new garbage collector
works by chunking the flow of data being cache through generation
numbers, which allows for a much more precise garbage collections.
New features
A small set of enhancements has been made too:
- Virtual hosts capabilities have been added, this feature supports only
the Host based version of that feature (which doesn't consume IP
addresses). More documentation is available here.
- The ContainerResource
is now an abstract class, much more suitable for sub-classing then the DirectoryResource.
- The ProxyDirectory
now has a disconnected mode, which allows you to connect your
laptop from the net, get any numbers of document, disconnect from the net
to later browse while on a trip. Check it !
- A new MirrorDirectory
resource has been added, that allows you to mirror any web site.
This resources is a nifty subclass of the newly created ForwardDirectory
resource.
Jigsaw 1.0alpha2
A member specific release, made on September 7th, 1996.
This member release of Jigsaw, version 1.0a2 is a snapshot of
what will be Jigsaw 1.0a3, the next public release. It has lots of
improvements, and lots of new features that you should check out:
- HTTP/1.1
- The server is now fully HTTP/1.1 compliant, it will still be
compatible with older, HTTP/1.0 clients.
- Caching proxy
- This new release includes a caching proxy module, also fully HTTP/1.1
compliant. The HTTP client side API that is used by this proxy can be
used as a replacement for the default HTTP Java handler. See the FAQ for
more infos.
- New resources
- A set of new resources and filters have been added to the core
distibution:
- SSIResource
- The server side include resource will handle standard server
side include commands. It is easily extensible in Java (make sure
you check our tutorial on how to extend it). This resource is
extremely powerfull and flexible and also impresively efficient,
we urge you to have a look at it !
- Image maps
- A new image map resource has been included in the release. This
adds image map support within the server in a very efficient
way.
- ErrorFilter
- Allows you to redefine all the error messages leaving the
server, by using internal redirection.
- Enhancements
- A lots of enhancements has been made to Jigsaw since release
1.0a1. Among which:
- Performance tuning
- Although not fully tuned yet, this release deal with some of the
bottlenecks found in older release. Inparticular, the new client
pool class allows Jigsaw to handle gracefully an increased
number of simultaneous connections.
- Configuration
- Has been enhanced in several ways. Check the /Admin directory to
see them !
- CgiResource
- The new support for CGI scripts is much more easy to configure
and use. It also has imrpoved a lot in terms of robustness. It has
been tested on both UNIX and Windows.
- PICS support
- The PICS module of Jigsaw has been updated to reflect the
PICS 1.1 specification.
Jigsaw 1.0alpha1
The first member and public release, made on May, 1st 1996 and June
This was the first available Jigsaw release.