Release notes for xmlBlaster @version@ (http://www.xmlBlaster.org)

Changes for 0.903 [2004-05-13]
==============================

 o Fixed telnet access bug which was introduced in 0.902

 o C client library
   - Bugfix: hostname copy from command line
   - Added property dump

 o C++ client library
   - Bugfix: Client side Address was hold twice (in ConnectQos and in ClientQueueProperty)
     and was not dumped with toXml()

Changes for 0.902 [2004-05-11]
==============================

 o RunlevelManager: Fixed PRE/POST event traversal

 o SOCKET protocol: Fixed memory leak on timeout exception, added marker for serverSide exception

 o Ping is now returning AvailabilityChecker information to support
   an application level ping for different run levels.
   Extended Java client library to react accordingly.

 o Changed the admin interface to take a key and a qos (this affects only get)

 o C++ client library got support for a client side persistent queue, see
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.cpp.queue.html

 o C++ client library
   - Introduced abstract queue interface (I_Queue) and queue factory
     to be able to add arbitrary queue implementations as plugins.
   - Bugfix for default logging: loglevel settings inherited from I_Log
   - Bugfix reading of xmlBlaster.properties: Line extensions are now recognized
   - Extended Property class to preset ${user.home}, ${user.name},
     ${file.separator} and ${path.separator} to support replacement in xmlBlaster.properties
   - Bugfix of failsafe mode when a publish noticed connection loss before ping thread
   - Changed to activate failsafe mode even without a connectionProblem listener
     if -dispatch/connection/delay is > 0

Changes for 0.901 [2004-04-27]
==============================

 o Added persistent session and persistent subscriptions for
   revovery after server crash or server restart:
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.persistence.session.html
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.persistence.subscription.html

 o Changed synchronization of disconnecting a client which could be
   a portential dead lock if a shutdown and a client disconnect comes
   simultaneously

 o Added an 'AvailabilityChecker' to protect xmlBlaster in the different run levels.
   This is another step for enhanced maintenance modes.

 o Changed delivered Postgres SQL driver from jdbc7.2dev-1.2.jar to pg74.213.jdbc2.jar
   (renamed to postgresql.jar) wich supports PostgreSQL 7.4

 o Changed jacorb to ver. 2.1. This to eliminate a nasty bug causing an implicit redelivery of 
   messages. Moved jacorb jar files to xmlBlaster/lib/jacorb
   NOTE: You need to use the ajusted xmlBlaster/config/jacorb.properties.template
         (which is copied into xmlBlaster.jar) if you use your own jacorb.jar.
   NOTE: The name of the property jacorb.verbosity has changed to jacorb.log.default.verbosity

 o Fixed release generation to remove build.tmp and
   keep the 'build' script.

 o Bugfix in PersistentCachePlugin (I_Map, msgUnitStore)
   - swapping with ascending messages sizes could fail
     (Thanks to Dimitri.Devriendt@ses-astra.com)
   - synchronized setProperties()
     (Thanks to Dimitri.Devriendt@ses-astra.com)
   - numOfBytes calculation was buggy if swapping

 o Bugfix in JDBC service module to handle NULL db entries
   Thanks to zzwzyz@hotmail.com

 o Added two new requirements:
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/security.ldap.html
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/security.htpasswd.html

 o Fixed htpasswd plugin to trim CR/LF
   Thanks to zzwzyz@hotmail.com

 o Added support for C and C++ based persistent queue based on http://www.sqlite.org
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.c.queue.html

 o Added possibility to activate/inhibit dispatch of callback entries (SessionInfo.activateDispatcher)

 o Added support for primitive and buildin types such as Boolean, Short, Integer, Float and Double
   in admin messages

 o Added new QoS 'newestFirst' to control the deliver ordering of messages
   when querying the history queue with 'get()' or 'subscribe()'

 o C++ client library:
   - Fixed passing callback settings from command line
   - Extended Property.cpp to replace ${...} variables from xmlBlaster.properties
   - Fixed duplicate holding of CallbackAddress
   - Fixed SAX parsing of literal priority in QoS
   - Fixed wrong value when overwriting in Property.setProperty()
   - Fixed memory leak of 8 bytes in SocketDriver wrapper class
   - Fixed string bug in lexical_cast.h
   - Fixed setting of 'if (log_.trace) ...' check for log4cpp embedding
   - Fixed in SocketDriver plugin that all properties are passed to the
     C SOCKET library instead of only the command line arguments

 o Fixed rare possible dead lock for PtP messages auto-creating subjectInfo
   and simultaneous login of this subject

 o Changed xmlBlaster dump to contain only legal tag names conforming
   to xml 1.0 spec (changed Property in jutils.jar).
 
 o changed ant to 1.6.1
 
 o Tested on IBM s390: Linux 2.4.19-4 SMP s390
   Java client/server, C++ and C compiles (g++ 3.2.2) and runs fine

 o AppletServlet is now processing binary data too (client class sends it 
   in the body of the request)

 o Added properties to limit the burst mode size of callback invocations:
   -dispatch/callback/burstMode/maxEntries
               The maximum bulk size of a callback invocation [-1]
               -1 takes all entries available in the callback RAM queue
               possibly limited by maxBytes
   -dispatch/callback/burstMode/maxBytes
               The maximum bulk size of a callback invocation [-1]
               -1L takes all entries available in the callback RAM queue
               possibly limited by maxEntries

 o Bugfix: C SOCKET client library, fixed uninitialized memory read in memmove call
 
 o changed the JdbcConnectionPool to be handled by Doug Lea's classes
 
 o Added Thread Name to Logs 

 o Added a demo applet with XML script access to xmlBlaster.
   Location: xmlBlaster/demo/http/applet/XmlScript.java
   Compile:  build deploy_war   (and start tomcat + xmlBlaster server)
   Load:     http://localhost:8080/xmlBlaster/XmlScript.html (in mozilla, konqueror, appletviewer, explorer)

 o Bugfix for JXPath generation of ClientProperty in QoS (impact on tiny applet example only)

 o Updated utils.jar to CVS version from  2004-03-19, contains Property bug fix for ArrayOutOfBoundsException

 o JDBC configuration: Added column name prefix, used for MS-SQLServer to
   prefix reserved DB names 'byteSize' and 'dataId', see
      colNamePrefix=XB_
   in xmlBlaster.properties.template (the prefix is internally converted to uppercase)

 o modified http.applet protocol to allow invocations from standalone apps and from j2me

 o Renamed admin access to subjectInfo getCbQueueNumMsgs to getSubjectQueueNumMsgs

 o Added ActiveX (Windows) control to support access from C# and VisualBasic.net
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.activex.html

 o Fixed to rethrow XmlBLasterException from inside SAX parsing

 o Fixed build.xml to not need -DJVM.target=1.4 for JDK 1.5

Changes for 0.9 [2004-02-23]
============================

 o Ported java code to JDK 1.5
   - As 'enum' is now (Jdk1.5) a reserved keyword we renamed our package 'enum' to 'def'
     by replacing the token '.enum.' to '.def.' in the complete source tree.
   - Compiling: build -DJVM.target=1.4 delete all

 o SOCKET protocol on Java client side:
   - Fixed exception handling from update() calls
   - Added 'virtual' callback server shutdown
   - Fixed MsgUnit[] return from get() call to be of length=0 if no message is returned
     Before the array contained one entry with empty key/qos

 o The msgStore cache implementation supports now LRU (last recently used) lookup

 o Added setter and getter for subject queue property in ConnectQos

 o Added a shuffler thread to forward entries from SubjectQueue to
   SessionQueue (to achieve Thread safety).

 o Added I_QueueSizeListener to listen to changes in size of a queue

 o Bugfix: Reconfiguration of client reconnect (same pubSessionId)
   supports now queue properties and sync/async reconfiguration
   (with or without a client side callback server)

 o Extended forceQueuing=true support for PtP messages sent to a
   specific session which does not yet exist.
   This will automatically establish a callback session queue for
   the destination

 o Added support for a sync connected client to reconnect
   in async mode (by providing a callback address).
   Sync connected clients may receive PtP messages which are
   stored in their session queue until the client reconnects
   with a callback address and the queued messages are delivered.
   Switching an async client on the fly to sync mode 
   (by reconnecting without a callback address) is currently not supported.
 
 o XmlScriptInterpreter now uses a Reader (InputStream was starting
   processing AFTER reading whole stream).
  
 o Added persistent session+subscription support in C++

 o Global.detachJdbcManagerCommonTable() removed (was obsolete)

 o The EntryFactories are now threadsafe and the Global.getEntryFactory now
   does not take any name and the factory is a singleton. EntryFactory.getName
   does not exist anymore. I_StoragePlugin.getType can be used instead
 
 o Added XmlScriptInterpreter which can execute xmlBlaster commands from an
   xml file (in a way similar to ant, maven and jelly)

 o Nested key tags are now allowed inside key
 
 o Added a new class EncodableData (ClientProperty now extends from it)
  
 o Eliminated MsgTopicErrorHandler since used nowhere

 o Changed build.xml for C and C++ compilation
   Now the source files are copied to a separate destination
   To build C or C++ do a cleanup first (before you checkout the new code):
     build c-delete
     build cpp-delete
   or remove the outdated msgUtil_CopyByAnt.c and Global_CopyByAnt.cpp files manually

 o C++ client library (Incompatible API change):
   - The update() method argument 'content' has changed from
     'void *' to 'const unsigned char *'
   - The global.getLog() method now returns the interface I_Log (an abstract class)
     to the logging framework instead of the Log.cpp implementation itself.
     This allows to plug in your own logging framework

 o C++ client library:
   - xmlBlaster.properties is read (-propertyFile ... or in $HOME or in $XMLBLASTER_HOME)
   - Added native SOCKET protocol plugin based on the C-client library
   - Added logging abstraction interface to support different logging implementations
   - Added log4cplus 1.0.1 logging library to xmlBlaster distribution
     see http://log4cplus.sourceforge.net (Apache license)
   - Fixed command line usage, try 'HelloWorld2 -help'
   - Fixed memory leak for some XmlBlasterExceptions thrown
   - Logging cleanup (switchable xterm colors)
   - Added Global::getCompiler()
   - Fixed LifeTimeManager to have destruction sequence reversed to creation sequence
   - Added map to LifeTimeManager to support registered object lookup by key
   - Bugfix for lexical_cast<double> and lexical_cast<long double>
     which rounded to only 6 digits
   - Added Base64 support for ClientProperty
   - Bugfix: SAX parsers are now thread safe
   - Renamed msgQosData.getForceDestroy() to isForceDestroy()
   - Other minor changes

 o C-client library:
   Fixed to return secretSessionId in update() method
   Fixed to return isOneway in update() method
   Fixed get() return without a match
   Renamed xmlBlasterAccess->userData to userObject to avoid ambiguity

 o C-client library (Incompatible API change):
   - Fixed unSubscribe() and erase() to return now 'QosArr *' instead
     of 'char *'.
   - ping() now wants a third argument 'xmlBlasterException*'
   - Added user specific object to be returned to the logging callback (logUserP)
   See xmlBlaster/demo/c/socket/HelloWorld3.c for a usage example.

 o Renamed build.sh to build. Now on UNIX and Windows the build command is the same,
   for example 'build all', note that you have to manually delete the old 'build'
   directory

 o Fixed dead messages "__sys__deadMessage" to contain the complete key and qos
   of its embedded message.
   The clientProperty keys are "__key", "__qos", "__oid" and "__rcvTimestamp".
   The latter two are added for convenience reasons only.

 o Extended ClientProperties to transfer blob data, introduced base64
   encoding if illegal characters are transferred
   see http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.clientProperty.html

 o Added protection for publisher thread to never do cleanup of callbacks
   (avoid dead locks)

 o manifest.xmlBlaster: Added missing jhotdraw.jar, demo.jar and testsuite.jar

 o C-client: changed include in pthread.h for simpler compilation

 o Corrected spelling from <subscribeable> to <subscribable>

 o Fixed update problem when content is empty

 o Fixed dead letter handling on callback queue overflow

 o C-client library: Fixed bug in trim() which lead on stress tests
   to corrupted messages.
   Thanks to FdGiglio@naples.sema.slb.com

 o JDK 1.2 runtime support: The current jacorb.jar does NOT run with JDK 1.2
   To run xmlBlaster with JDK 1.2 you have these options:
   - Download an older jacorb.jar and throw it into xmlBlaster/lib
   or
   - Switch off the corba plugin in xmlBlasterPlugins.xml, now the
     server runs fine. For java clients use the SOCKET
     protocol with the option '-protocol SOCKET' (RMI and XML-RPC are fine too).
   
   NOTE: You can compile xmlBlaster with JDK 1.3 (or 1.4) and still
   run it with JDK 1.2. If you need to compile xmlBlaster with JDK 1.2
   please exclude the JMX stuff in build.xml (uncomment those):
      <patternset id="jdk12.notcompatible.sources">
         <exclude name="**/jmx/**"/>
         <exclude name="**/jmxgui/**"/>
         <exclude name="**/memoryleak/**"/>
      </patternset>
   build.sh delete; build.sh xmlBlaster
   (Parts of the testsuite won't compile with JDK 1.2)

 o Fixed hsqldb.jar to compile/run with JDK 1.3 and 1.2 again.

 o Fixed dead message loop if a dead message subscriber subscribed
   on other messages as well and than crashed.

 o Fixed synchronization gap on client login,
   SubjectInfo registered before it was fully initialized
   Thanks to Dimitri Devriendt his detailed report.

 o C++ client library:
   Created an abstract xml layer to allow to easily implement other xml parsers than xerces

 o Changed the Subscribeable flag to Subscribable

 o Updated LDAP authentication demo, see
     xmlBlaster/demo/ldap/README

 o ConnectQos: 
   - Renamed setSecurityPluginData() to loadClientPlugin()
   - Renamed I_ClientPlugin.getSecurityQos() to createSecurityQos()
   - Removed setSecurityInterceptor() and getSecurityInterceptor()
   - Removed getSecurityPluginType() and getSecurityPluginVersion() and setSecurityQos()

 o C++ client: Ported to multi threaded Corba mico 2.3.11

 o Added a new ant task 'javadocs-client' which only creates the Java client
   side API documentation.

 o Added tiny Applet which supports asynchronous callbacks using
   a persistent http connection, see
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.java.applet.html
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.browser.html

 o Moved HelloWorld*.java examples to directory xmlBlaster/demo to
   avoid package name problems

 o QosData: embedded each client property with CDATA (java and c++)

 o Fixed mouse sensitive area in chessRhino.svg


Changes for 0.85e (beta) [2003-10-31]
=====================================

 o Ported C client library to OSF1 V5.1 1885 alpha
   Thanks to FdGiglio@naples.sema.slb.com

 o Cluster: Fixed that protocol settings for embeded cluster clients are respected
   (The setting CREATED_BY_SETTER is now enforced to be stronger than env settings)

 o XmlBlaster cluster now support unSubscribe() routing

 o Changed subscription ID to be cluster wide unique

 o Bugfix cluster setup: Catching forever looping PtP messages
   in a clustered environment

 o Bugfix for corrupted PublishQos, occurring
   since 0.85c

 o Added publish QoS sender name check (authentication) to avoid spoofing

 o C-client: Fixed gcc warnings on IBM s390 (with Linux)
   for printf() and sscanf() with %u and size_t

 o Fixed NPE in graphical chat demo

 o Fixed NPE for ctor with null argument: client.PublishQos(null)

 o Removed the nowhere documented "message.lifeTime" property

 o added I_MsgDistributor plugin (acts in TopicHandler)

 o Changed signature for I_AccessPlugin.check(...) by removing the publisherSessionInfo

 o added multiple ConnectionStatusListeners to DispatchManager

 o changed nomenclature from 'Delivery' to 'Dispatch' to avoid confusion.
   Need to take the new xmlBlaster.properties
 
Changes for 0.85d (beta) [2003-10-12]
=====================================

 o Bugfix which randomly threw IllegalStateException, occurring
   since 0.85c

 o Fixed C client library bugs (memmove, zero msg payload and
   possible thread lock gap) see
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.c.socket.html

 o Added type to client properties in qos
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.publish.html

 o Some more work is done on the JMS Java client library, see
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/jms.html


Changes for 0.85c (beta) [2003-10-05]
=====================================

 o Bugfix for queueing PtP messages when there are session which have
   set isPtpAllowed==false

 o Fixed to not put none subscribable PtP messages to the history queue

 o Added limited support to reconfigure a subject queue
   from CACHE to RAM during operation.

 o Fixed internal error dump when expired history entry
   is subscribed.

 o XmlBlasterException now dumps an online URL with
   detailed informations.
   Please use new xmlBlaster.properties.template

 o Protected core authentication against unwanted access by
   plugin developers and native client developers, see
   AuthenticateProtector.java, SubjectInfoProtector.java, SessionInfoProtector.java

 o Bugfix for queue plugin configuration transport in QoS, e.g.
     -queue/connection/defaultPlugin RAM,1.0

 o Fixed client side thread demand by implementing
   lazy instantiation. This for example reduces the 
   number of xmlBlaster specific threads from 5 to 1 for
   a Java SOCKET connection.

 o Fixed possible thread leak in java client library
   when using many client connections and Global is not
   garbage collected frequently enough by the JVM

 o Updated Perl support, see
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.perl.html

 o Bugfix for topics with a destroy delay of 0 msec.
   Reported by Dominique Petitpierre


Changes for 0.85beta [2003-09-24]
=================================

 o Changed all getBytes to getBinaryStream in JdbcManagerCommonTable and changed
   signature of I_EntryFactory.createEntry
   to take an input stream (due to problems with Oracle 9i and BLOB)

 o Changed default type for Oracle to BLOB (since RAW LONG is deprecated in 9i).
   Max Blob size is 4GB

 o Added a Key and Qos cache for publish (the literal is the key and the Data is the value)
   -> 15 % better performance

 o Added clientProperty tag to most of the qos (only StatusQos don't have it)

 o Added support to set and lookup the engine.Global (via GlobalUtil) for the j2ee components.

 o Finished the LOCAL protocol.

 o Added flag enableBatchMode in the jdbc queue plugins

 o added storage of blob in DummyEntry (before it was a fictive size,
   now its complete size is stored/retrieved from the DB).

 o Moved to JacORB 2.0 beta 2 + (cvs) from 2003-09-14 15:00
   You can check out this version with:
    cvs -d :pserver:anonymous@www.jacorb.org/cvsroot/jacorb checkout -D '2003-09-14 15:00' JacORB
   idl.jar is patched to contain JacORB/lib/logkit.jar

 o Updated XPathFilter to support Jaxen XPath extension functions,
   also added the functions RecursiveTextFunction and ContainsIgnoreCaseFunction.

 o Updated j2ee components to the latest API changes.
   Also fixed property handling so that xmlBlaster.properties is not loaded by default.
   xmlBlaster.properties and xmlBlasterPlugins.xml is removed from the xmlBlaster.jar
   to not upset the propertyloading.

 o Changed ClassLoaderFactory to be interface based, now pluggable with property classLoaderFactory.
   Moved implementing ClassLoaderFactory to StandaloneClassLoaderFactory and
   added a ContextClassLoaderFactory to be used in certain embedded environments.

 o Bugfix in Timeout.java
   - userData is now correctly passed
   - addOrRefreshTimeoutListener() acts now correctly on all situations
   Reported by Xavier Roques, xRoques@infovista.com

 o Ported chess demo to batik 1.5, cleanup of event queue

 o Moved getJdbcQueueManagerCommonTable from util.Global to JdbcQueueCommonTablePlugin so that the 
   manager is not referenced outside the plugin it serves. Moved also wipeOutDB from Global to the
   queue plugin).

 o Property loading cleanup in Global.java 
   Thanks to Peter Antman for the discussion

 o Fixed build.xml 'dist' task to include HSQLDB

 o Bugfix in persistence layer for huge messages.
   Reported by pikaiyuan

 o The jmxgui now uses only one XmlBlasterAccess to communicate with xmlBlaster

 o fix in JdbcQueueManager to avoid batch mode invocations if the DB does not 
   support this feature (particularly for hsqldb)

 o The SVG Javascript chess example is updated to this
   new release with some bugfixes, see
     http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.javascript.rhino.html

 o BUGFIX Java client library:
   In fail safe mode on client reconnect the subscribe
   specific callback redirect got lost and updates where
   delivered to the default callback handle.
   (The bug was introduced in 0.849 when fixing a memory leak).

 o Removed deprecated classes from package org.xmlBlaster.client:
      EraseKeyWrapper.java
      EraseQosWrapper.java
      GetKeyWrapper.java
      GetQosWrapper.java
      PublishKeyWrapper.java
      PublishQosWrapper.java
      SubscribeKeyWrapper.java
      SubscribeQosWrapper.java
      UnSubscribeKeyWrapper.java
      UnSubscribeQosWrapper.java
      EraseRetQos.java
      I_RetQos.java
      PublishRetQos.java
      SubscribeRetQos.java
      UpdateKey.java
      UpdateQos.java
      GetQos.java
   Please use the packages org.xmlBlaster.client.key and
   org.xmlBlaster.client.qos instead
   
 o Fixed build.bat to take more command line parameters

 o Added new connect QoS setting 'reconnectSameClientOnly' which
   allows us to enforce a client singleton - if you need to assure
   that a client can only connect exactly once, see
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.connect.html
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.configuration.html

 o Exhaust of maxSessions throws now ErrorCode.USER_CONFIGURATION_MAXSESSION

 o JAVA client: Calling xmlBlasterAccess.connect() multiple times without disconnect()
   throws now ErrorCode.USER_CONNECT_MULTIPLE

 o Removed deprecated 
    org.xmlBlaster.util.ConnectQos
    org.xmlBlaster.util.ConnectReturnQos
    org.xmlBlaster.util.DisconnectQos
   please use siblings from package org.xmlBlaster.client.qos

Changes for 0.849 [2003-07-15]
==============================

 o BUGFIX Java client library: Fixed memory leak for reconnecting clients with
  subscribes using specific callbacks. 

 o Changed behavior that '-version' and '-type' is not read from env anymore,
   only the more qualified variants like '-queue/connection/version'

 o Fixed HSQLDB plugin to create a seperate DB instance for each
   client or server instance in directory ${user.home}/tmp

 o Added Property replacement variant $_{XYZ} which does NOT throw an
   exception if XYZ is not found

 o C++: Added first code to embedd C SOCKET lib as a C++ protocol plugin,
   see COMPILE_SOCKET_PLUGIN and COMPILE_CORBA_PLUGIN switches in build.xml

 o C++: Removed ALl 'using namespace' declarations from C++ header files.

 o Implemented hsqldb as the embedded database. Persistence is now supported per
   default
 
 o Added C wrapper to embedd C tests into JUnit testing, try
     build.sh total
     build.sh runTestsAndReport
   which creates a report:
     http://www.xmlblaster.org/xmlBlaster/doc/test/report/html/index.html

 o Removed a2Blaster (for authentication/authorization).
   The a2Blaster project is developed further commercially and like
   this of no use for us.

 o Removed complete Xindice support as the persistence layer changed.
   To add Xindice again it needs to implement the persistent queue framework, see
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/queue.html

 o Removed outdated and UNIX only jacorb.sh java_orbacus.sh  mico.sh orbacus.sh
   They where mainly used for Makefiles

 o Removed all Makefiles, please use now 'ant' and 'build.xml'
   NOTE: xmlBlaster/config/xmlBlaster-autoconf.tar.gz still exists
         but probably needs a face lift.

 o BUGFIX in cluster configuration, switch off naming service and
   setting other address parameters is now possible from configuration file.
   Reported by Michael Atighetchi.

 o BUGFIX clustering for get() by Michael Atighetchi.
   A node X was only forwarding get requests to other nodes if a subscription
   has been established to X and a message had been successfully served to that
   subscription. Now, get() requests are always forwarded to the right other nodes.

 o Added MethodName argument to exportMessage in security message interceptor

 o Zhang Zhi Wei added a Microsoft SQL Server port for our persistence layer
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/queue.jdbc.sqlserver.html

 o Completed ANSI-C client library for sync and async xmlBlaster access:
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.c.socket.html

 o Added support for OmniORB 4.0.1 (C++ client library)

 o BUGFIX C++ object cleanup by Martin Johnson

 o Removed deprecated property scanning precedence, see PropEnv.java

 o BUGFIX to report nicer wrong configuration setting

 o BUGFIX  '-pluginsFile /yourdirectory/yourfile.xml' works now
   as expected


Changes for 0.848 [23, May 2003]
================================
 o Fix in XmlBlasterException for MakeFormat with index > {9}
   IBM JDK 1.3.1 can't handle it (i believe 1.4 handles it now).

 o Changed protocol plugin loading behavior.
   Now we throw an exception if the protocol plugin is not found
   instead of choosing the default protocol as fallback.
 
 o Updated requirements

 o Incompatible changes (update xmlBlaster.properties and xmlBlasterPlugins.xml):

   1. Removed XmlBlasterConnection.java, please use XmlBlasterAccess.java
      Removed I_ConnectionProblems.java, please use I_ConnectionStateListener.java

   2. XmlBlasterAccess.initCbServer(String loginName, String type, String version) -> initCbServer(String loginName, CallbackAddress cbAddress)

   3. Protocol "XML-RPC" renamed to "XMLRPC"
      -> client server communication will not work between this
         and the previous release.

   4. The protocol address is now configurable with Address.java/CallbackAddress.java
      with the method 
         public void setPluginProperty(String key, String value);
      or the old way with glob.setProperty()
      AddressBase.java is redesigned, please check the javadoc.
      Further you can hardcode a destination host directly with e.g.
        address.setType("XMLRPC");
        address.setRawAddress("http://192.168.2.5:9955/");

   5. Renamed property to new schema, try
         java org.xmlBlaster.Main -help     (server side usage)
         java HelloWorld3 -help             (client side usage)
      These replacements where made:
      hostname                -> bootstrapHostname
      port                    -> bootstrapPort
      socket.port             -> dispatch/connection/plugin/socket/port
      socket.hostname         -> dispatch/connection/plugin/socket/hostname
      socket.cb.multiThreaded -> dispatch/callback/plugin/socket/multiThreaded
      socket.threadPrio       -> dispatch/callback/plugin/socket/threadPrio
      socket.responseTimeout  -> dispatch/callback/plugin/socket/responseTimeout
      socket.responseTimeout  -> plugin/socket/responseTimeout  (server)
      ns                      -> dispatch/connection/plugin/ior/useNameService
      ns                      -> plugin/ior/useNameService  (server)
      ior                     -> dispatch/callback/plugin/ior/iorString
      ior                     -> dispatch/connection/plugin/ior/iorString
      ior                     -> plugin/ior/iorString  (server)
      ior.file                -> dispatch/connection/plugin/ior/iorFile
      ior.portCB              -> dispatch/callback/plugin/ior/port
      ior.hostnameCB          -> dispatch/callback/plugin/ior/hostname
      ior.port                -> dispatch/connection/plugin/ior/port
      ior.port                -> plugin/ior/port  (server)
      ior.hostname            -> dispatch/connection/plugin/ior/hostname
      ior.hostname            -> plugin/ior/hostname (server)
      xmlrpc.port             -> dispatch/connection/plugin/xmlrpc/port
      xmlrpc.hostname         -> dispatch/connection/plugin/xmlrpc/hostname
      xmlrpc.portCB           -> dispatch/callback/plugin/xmlrpc/port
      xmlrpc.hostnameCB       -> dispatch/callback/plugin/xmlrpc/hostname
      iorHost                 -> hostname
      iorPort                 -> port           (3411)
      rmi.registryPortCB      -> dispatch/callback/plugin/rmi/registryPort
      rmi.registryPort        -> dispatch/connection/plugin/rmi/registryPort
      rmi.AuthServer.url      -> dispatch/connection/plugin/rmi/AuthServerUrl
   
   6. The ConnectQos xml markup changed from
        <address ... hostname='...' port='...'>
      to
        <address ... bootstrapHostname='...' bootstrapPort='...'>
   
   7. Please copy the new config/xmlBlaster.properties.template
         to $HOME/xmlBlaster.properties
      Please copy the new config/xmlBlasterPlugins.xml.template
         to $HOME/xmlBlasterPlugins.xml

 o BUGFIX: Server side command line usage was showing client side usage as well

 o BUGIFX: PropBoolean had wrong Boolean to boolean conversion

 o BUGFIX Perl: Outdated sessionId markup in ConnectQos,
   fixed by Dominique.Petitpierre@adm.unige.ch 

 o BUGFIX C-XmlRpc: Added missing ping(), reported by
   Dominique.Petitpierre@adm.unige.ch 

 o Added basic support to connect to xmlBlaster from
   simple C with SOCKET protocol, see
   xmlBlaster/src/c/README

 o Changed socket protocol parser to be more tolerant
   on partial messages (needed for C SOCKET client).
   This change is backward compatible.

 o Added MethodName argument to I_MsgSecurityInterceptor.importMessage
   to allow for creation of MsgUnit from MsgUnitRaw within security plugins

Changes for 0.847 [12, May 2003]
================================

 o Michele Laghi added a graphic chat demo using xmlBlaster.
   It can be used for example to discuss designs and the
   remote participants drawings are instantly copied to the other
   users. See xmlBlaster/demo/javaclients/graphical/README

 o Added Martin's managed objects in the c++ clients 

 o Java client library interface change, removed method
   boolean disconnect(DisconnectQos disconnectQos, boolean clearClientQueue, boolean shutdown, boolean shutdownCb) 
   Please configure the options in DisconnectQos and use disconnect(DisconnectQos)

 o BUGFIX in java client library. If the client side tail back queue contains
   persistent entries on disconnect they are kept and resent on new connection
   of the same client (same pubSessionId).
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.disconnect.html

 o Merged basic JMX support from branch jmx_gui

 o BUGFIX: PersistentStore and PersistentQueue have now separate pools. Avoids
   deadlocks when configured with only 1 connection AND msg store AND
   other queues are peeking objects from persistence (for example when both caching).

 o JdbcConnectionPool works now with wait/notify instead of sleep/interrupt

 o Better exception handling in JdbcManagerCommonTable to catch even 
   throwables

 o BUGFIX: Fixed subject id to be without public sessionId in all cases.
   Had severe impact on PtP messages as subject queue name was sometimes
   identical to session queue name.

 o Fixed memory leak in JDBC layer (clear SQLWarnings)
   Has impact on persistent messages only

Changes for 0.846 [26, Apr 2003]
================================

 o Enhanced Python support added by Peter <spex66@gmx.net>
   See xmlBlaster/src/python/README

 o The plugin overview:
   http://www.xmlblaster.org/MessageFlowPubSubOverview.html

 o BUGFIX: sync gap in SubjectInfo.java for PtP messages and offline clients

 o removed I_Queue.take methods
 
 o removed JdbcQueuePlugin. Now only JdbcQueueCommonTablePlugin available. This was
   necessary since maintenance of double code became prohibitive.

 o I_Queue.removeRandom now returns boolean[]

 o CacheQueueInterceptorPlugin synch is now less detailed but more simple
 
 o BUGFIX: deleteAllTransient does only delete own entries 
 
 o BUGFIX: inconsistency between cached numOfEntries and numOfBytes on jdbc fixed

 o http push example updated to be functional for this release

 o Fixed and updated cluster demo

 o BUGFIX: Setting ORB environment for different orb instances

 o BUGFIX: In CORBA NameService lookup

 o BUGFIX: Fixed two synchronize gaps which could lead to
   "The timeout handle is null, no timeout refresh done" exception

 o BUGFIX: Fixed TopicHandler.java synchronize bug which could lead
   to multiple initial XPATH subscriptions instead of one.

 o NEW FEATURE: A subscriber can supress to receive topic ERASE
   events on topics which are erased and on which he has subscribed,
   see SubscribeQos.setWantNotify(boolean)
  
 o BUGFIX for SOCKET and RMI protocol when on client startup the xmlBlaster server
   was missing. Reported by Xavier Roques <xRoques@infovista.com>

 o Changed REQ: The successful callback does not refresh a session, see:
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.login.session.html

 o BUGFIXES in CACHE and JDBC plugins when persistent storage failed

 o BUGIFX for passing EraseReturnQos in cluster environment back to client

 o Cleanup of testsuite to avoid memory leaks during tests

 o The client side synchronous access cache is ported and
   does now automatically remove outdated entries, see:
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.cache.html

 o Cleanup of client side protocol plugin interface

 o Incompatible change in java client library:
    reachedAlive(ConnectionStateEnum oldState, I_ConnectionHandler connection) -> 
    reachedAlive(ConnectionStateEnum oldState, I_XmlBlasterAccess connection)
    
    reachedPolling(ConnectionStateEnum oldState, I_ConnectionHandler connection) ->
    reachedPolling(ConnectionStateEnum oldState, I_XmlBlasterAccess connection)
    
    reachedDead(ConnectionStateEnum oldState, I_XmlBlasterAccess connection) ->
    reachedDead(ConnectionStateEnum oldState, I_XmlBlasterAccess connection)

Changes for 0.845 [Mar, 27 2003]
===============================

 o Redesigned, powerful runlevel manager which loads plugins as
   described in xmlBlasterPlugins.xml, see
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.runlevel.html

 o New client side configuration guide
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.configuration.html

 o Updated JacORB to 1.4.50, cvs from 2003-03-279
   to get fixed orb.shutdown().

 o Memory leak BUGFIX in corba protocol plugin.
   This occurred on shutdown of the corba plugin
   (e.g. if server is run embedded).

 o This release is not backward compatible.

 o One big step further to unify the command line properties, try
     java HelloWorld2 -help

 o Embedded queue framework into Java client library.
   Please port your code, typical changes you should make are:
      org.xmlBlaster.client.protocol.XmlBlasterConnection ->  org.xmlBlaster.client.I_XmlBlasterAccess
      XmlBlasterConnection.usage()   ->  System.out.println(glob.usage())
      new XmlBlasterConnection(glob) ->  glob.getXmlBlasterAccess()  
      XmlBlasterConnection           ->  I_XmlBlasterAccess
   If you use fail safe clients:
      import org.xmlBlaster.util.dispatch.ConnectionStateEnum;
      import org.xmlBlaster.client.I_ConnectionHandler;
      I_ConnectionProblems  ->  I_ConnectionStateListener
        reConnected()       ->    reachedAlive(ConnectionStateEnum oldState, I_XmlBlasterAccess connection)
        lostConnection()    ->    reachedPolling(ConnectionStateEnum oldState, I_XmlBlasterAccess connection)
                            ->    reachedDead(ConnectionStateEnum oldState, I_XmlBlasterAccess connection)
      con.initFailSave(...  ->  con.registerConnectionListener(...

   NOTE: If you use mutliple clients to connect to xmlBlaster
         you need a seperate util.Global instance for each of them (see HelloWorld5 example).
           Global globAnother = this.glob.getClone(null);
           globAnother.getXmlBlasterAccess()

   NOTE: Please copy the new config/xmlBlaster.properties.template
         to $HOME/xmlBlaster.properties

 o Fixed behavior and error handling of PtP messages, see
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.publish.destination.offline.html


Changes for 0.844 [Mar, 20 2003]
================================

 o Bugifx of deadlock in Timeout.java and Timeout.cpp
   Reported by Guy Donadio

 o Removed unused field from history and update queue entries
   in JDBC database.
   This change is NOT backwards compatible:
   Existing entries in DB from an old release can't be read with this
   new xmlBlaster release.

 o Added subscription informations to administration interface

 o Bugfix of cursor leak in jdbc persistence

 o Bugfix with missing ResultSet in return of JDBC service driver

 o Bugfix of deadlock in JDBC protocol driver which used
   the buggy org.jutils.time.Timeout
   Ported org.jutils.pool to org.xmlBlaster.util.pool
   Reported by Sebastian Sturm
 
 o Administrative access to subscriptions of clients, e.g. with telnet:
    get client/joe/-2/?subscribeList

 o multiSubscribe QoS support added, see
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.subscribe.multiSubscribe.html

 o Bugfix NPE in XmlBlasterException, reported by Zhang


Changes for 0.843 [Mar, 10 2003]
================================
 
 o Bugfix in client.key.GetKey.java constructor

 o Administrative interface: Renamed getMsgList() to getTopicList()

 o Bugfix for subscriber with initialUpdate==false and XPath subscription
   on new created topic: Received no initial update for post topics.
   Reported by Heinrich

 o QoS Bugfix: subscribing <local>false</local> was broken,
   the fix is checked with
    http://www.xmlblaster.org/xmlBlaster/testsuite/src/java/org/xmlBlaster/test/qos/TestSubNoLocal.java.html
   Reported by colin.madere@ieminc.com

 o Coded new requirement for CORBA NameService
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/protocol.corba.NameService.html

 o C++: Bugfix: returned pointer was freed before usage in to_string()

 o C++: Memory leaks fixed in CORBA plugin


Changes for 0.842 [Feb, 21 2003]
================================

 o Add support to reconnect to previous session again on reconnect
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.failsafe.html

 o C++: Added Global::getVersion() and Global::getBuildTimestamp() and rcsid.
   Try "ident libxmlBlasterClient.so" or "what libxmlBlasterClient.so"

 o Extended server dump information

 o Bugfix in Timeout.java: Closed synchronization gap -
   could cause a timeout event to be delayed until another fires

 o Bugfix for duplicate table names in postgres.

 o Bugfix in persistent layer for Oracle, blobs where limited to 2000 bytes,
   now they correctly process up to 2 GByte messages.

 o Finished C++ client library fow Windows/Linux with CORBA (TAO and MICO)
   Support for ORBIX on SunOS
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.cpp.html

 o Fixed bug for multiple PublishFilter plugins
   (Reported by Michael Atighetchi)

 o Deadlock bugfix for PtP messages reported by Xavier Roques

 o Bugfix: Connect/Disconnect/Connect synchronize bug fixed
   (Reported by Dimitri)

Changes for 0.841 [Jan, 23 2003]
================================

 o Bugfix: Java server returned wrong cluster node id under
   some circumstances

 o Bugfix: C++ testsuite runs now again

 o Other small changes


Changes for 0.84 [Jan, 22 2003]
===============================
 o Renamed <isClusterNode/> to <clusterNode/> in connect Qos

 o There is new support to publish an administrative message
   to configure a topic with QoS markup <administrative/>
      http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.publish.html

 o Switched off old style persistency (XIndice, FileDriver)
   Is now handled with new persitence framework based on I_Queue.java and I_Map.java
   Backend plugins for RAM based, CACHE based and JDBC (Postgres+Oracle) based behaviour are available.

 o The environment setting -loginName is not supported anymore
   please use -session.name instead.
   The default login name is now the login name of user of the operating system

 o Package changes
   org.xmlBlaster.util.ConnectQos -> org.xmlBlaster.client.qos.ConnectQos
   org.xmlBlaster.util.ConnectReturnQos -> org.xmlBlaster.client.qos.ConnectReturnQos
   org.xmlBlaster.util.DiconnectQos -> org.xmlBlaster.client.qos.DisconnectQos

 o ConnectQos changes
   Removed tag <sessionId>bla</sessionId>,
   introduced attribute <session sessionId='bla'/> instead
   Introduced attribute <session name='/node/heron/client/joe/2'/>
   to support session reconnecting (for persistent sessions and lost connections)

 o Specifing the loginName on client side on command line changed
   Please use now '-session.name joe' or '-session.name joe/2' instead

 o Bugfix for UserList event message, now the
   correct users are returned

 o Update QoS markup change:
      <subscriptionId>__subId:1</subscriptionId>
   is now
      <subscribe id='__subId:1'/>
   to be compatible with other QoS.
   PtP messages are marked with '__subId:PtP'

 o Fixed many memory leaks with new queue/msgstore framework

 o Bugfix for broken returned subscriptionID

 o Added configuration option to delay deletion of a topic.
   As a default a topic is deleted 60 sec delayed after reaching
   state UNREFERENCED. This is for better performance (e.g. not reparsing
   the DOM tree) for volatile messages (e.g. for dead messages).
   See <topic destroyDelay='60000'/>
      http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.message.lifecycle.html

 o Added configuration option to suppress DOM entry of a topic.
   This topic is then invisible to XPATH and better performing (e.g. for PtP messages)
   See <topic createDomEntry='false'/>

 o __sys__UserList event messages have changed the format.
   The clients are now separated by ',' and not '\n' anymore
   to conform to the administative format.

 o Package structure change:
   org.xmlBlaster.engine.helper.Address -> org.xmlBlaster.util.qos.address.Address
   org.xmlBlaster.engine.helper.AddressBase -> org.xmlBlaster.util.qos.address.AddressBase
   org.xmlBlaster.engine.helper.CallbackAddress -> org.xmlBlaster.util.qos.address.CallbackAddress
   org.xmlBlaster.engine.helper.Destination -> org.xmlBlaster.util.qos.address.Destination
   org.xmlBlaster.engine.helper.ServerRef -> org.xmlBlaster.util.qos.address.ServerRef
   org.xmlBlaster.engine.helper.CbQueueProperty -> org.xmlBlaster.util.qos.storage.CbQueueProperty
   org.xmlBlaster.engine.helper.HistoryQueueProperty -> org.xmlBlaster.util.qos.storage.HistoryQueueProperty
   org.xmlBlaster.engine.helper.QueueProperty -> org.xmlBlaster.util.qos.storage.QueueProperty
   org.xmlBlaster.engine.helper.QueuePropertyBase -> org.xmlBlaster.util.qos.storage.QueuePropertyBase
   org.xmlBlaster.engine.helper.TopicCahceProperty -> org.xmlBlaster.util.qos.storage.MsgUnitStoreProperty
   org.xmlBlaster.engine.helper.AccessFilterQos -> org.xmlBlaster.util.qos.storage.AccessFilterQos

 o Perl: Renamed MessageUnit to MsgUnit (to be similar to Java)

 o <readonly/> is now an attribute of the qos-topic tag.

 o PtP messages are now subscribable as well.
   So take care which keyOid you choose for PtP messages.
   In past releases PtP messages were completely invisible for subscribes.
   Use <subscribable>false</subscribable> to make PtP messages invisible for subscribers.

 o Renamed
      org.xmlBlaster.engine.helper.MessageUnit
   to
      org.xmlBlaster.util.MsgUnit

 o Introduced SessionName.java for unified naming of clients, see
   http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.failsafe.html

 o TODO: Helma-XmlRpc throws XmlBlasterException.toString() back
   to the client, many informations are missing.
   We need to create a temporary exception which returns from toString()
   the complete XmlBlasterException XML dump, and on client
   side a XML parser which parses it back to the original XmlBlasterException

 o CORBA xmlBlaster.idl incompatible change:
   - The XmlBlasterException struct is extended with new attributes
   - The unSubscribe() method now returns a string[] instead of void

 o SOCKET protocol extension:
   The XmlBlasterException transports in the content
   the complete exception information.
   See XmlBlasterException.java toByteArr() for the serialization syntax.

 o SOCKET protocol incompatible change:
   unSubscribe returns now a String[] instead of a String

 o The xmlBlaster.properties entry "JdbcDriver.drivers" now expects
   a ":" instead of "," as a seperator

 o Administrative interface for messages:
   Added support to transport the value to set in the message
   content instead of being forced to provide it in the key oid

 o For plugin writers:
   xmlKey.isInternalMsg() changed to xmlKey.isInternal()
   to be consistent with client side naming.

 o Mime access plugin interface behaviour changed:
   When the plugin throws an exception this is not routed back to
   the publisher anymore but produces a dead letter instead.
   See javadoc of org.xmlBlaster.engine.mime.I_AccessFilter#match()

 o Added listener framework for queue put() events (events when somebody
   puts something into the queue).
   This allows synchronous method invocation over the I_Queue interface
   which is needed on client side in normal operation.
   On error we just need to unregister the put listener and the
   queueing is activated

 o Changed error behaviour for callback invocations (from subscribes):
   - Any error during callback will cause a I_MsgErrorHandler invocation
   - Now also problems before the message is put into the callback queue
     and exceptions from the access filter plugin are handled like this

 o Bugfix: ConcurrentModificationException in MsgUnitHandler 
   is resolved by not working on the Iterator directly any more

 o Added redesigned framework seperating the QoS data from
   the parser.
   This allows:
    * Using other formats than XML (e.g. serialized objects)
    * Tranporting the same QoS object for publish(), update() and get()-returns
   Incompatible client Key changes (Java):
    * client.PublishKeyWrapper     -> client.key.PublishKey
    * client.SubscribeKeyWrapper   -> client.key.SubscribeKey
    * client.SubscribeKeyWrapper   -> client.key.UnSubscribeKey
    * client.GetKeyWrapper         -> client.key.GetKey
    * client.EraseKeyWrapper       -> client.key.EraseKey
    * client.UpdateKeyWrapper      -> client.key.UpdateKey
   Incompatible client QoS changes (Java):
    * client.PublishQosWrapper     -> client.qos.PublishQos
    * client.PublishRetWrapper     -> client.qos.PublishReturnQos
    * client.UpdateQos             -> client.qos.UpdateQos
    * ---                          -> client.qos.UpdateReturnQos
    * client.GetQosWrapper         -> client.qos.GetQos
    * ---                          -> client.qos.GetReturnQos
    * client.SubscribeQosWrapper   -> client.qos.SubscribeQos
    * client.SubscribeRetQos       -> client.qos.SubscribeReturnQos
    * client.UnSubscribeQosWrapper -> client.qos.UnSubscribeQos
    * ---                          -> client.qos.UnSubscribeReturnQos
    * client.EraseQosWrapper       -> client.qos.EraseQos
    * client.EraseRetQos           -> client.qos.EraseReturnQos
   Incompatible client changes (Perl):
    * EraseRetQos.pm               -> EraseReturnQos.pm
    * PublishRetQos.pm;            -> PublishReturnQos.pm
   Incompatible subscribe XML QoS change for forced subscriptionId:
    *  <qos><subscribe id='__subId:1'/></qos>

 o Made key/content/qos in MsgUnit.java private,
   use the corresponding get() methods to access the data.
   The MsgUnit object is now immutable

 o Added MsgErrorHandler.java as a central point of error handling
   for lost messages

 o Replaced package engine.queue by a plugin framework util.queue

 o Removed ONOVERFLOW_BLOCK (it caused deadlock)
 
 o Removed XmlBlasterProperty.java and Log.java (they where deprecated)
   Use glob.getProperty() and glob.getLog(null) instead

 o Renamed deadLetter to deadMessage as proposed by Adam Williams

 o Removed deprecated login/logout in RMI drivers


Changes for 0.8+ [Nov, 25 2002]
=====================================

  - Fixed memory leak for volatile messages, happened when a volatile
    message is in a callback queue and the client disappears silently
    Reported by David Kerry
    Further volatile bug fixes by David Kerry and Russell Chan
  
  - Bugfix in SOCKET protocol to ignore InterruptedException
    from other code

  - Bugfix for isVolatile message (synchronize problem)
    Reported by Russell Chan and David Kerry

  - Michele added speech output to our chat demo

  - Corrected batik.jar in manifest.xmlBlaster

  - Peter Antman add XPath mime plugin which allows
    message filtering of mime type XML (xml is in the content)
    with XPath.

  - Renamed <isDurable> tag to <persistent> to be prepared for
    o persistent Sessions
    o persistent Subscriptions
    o persistent Topics


Changes for 0.80 [Sep, 25 2002]
===============================

  - New client feature matrix by Michele Laghi, see
      http://www.xmlblaster.org/FeatureMatrix.html

  - J2EE support updated by Peter Antman
    Integration example with JBoss 3.x series
    See
      http://www.xmlblaster.org/xmlBlaster/doc/requirements/j2ee.k2.html
      http://www.xmlblaster.org/xmlBlaster/doc/requirements/j2ee.jmx.html

  - Added possibility to specify the subscriptionId on client side, see
      http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.subscribe.id.html

  - Bugifx in Timeout class:
    On seldom occasions the addTimeoutListener() was faster than
    the run() of the Timer thread -> ignoring the timeout!
    Now the timer constructor blocks until the timer thread is up
    and ready.

  - Added build targets for documentation, e.g.
      build.sh docs
   generates javadoc, a html representation of each source file
   and all requirement html pages from xml

  - Changed testsuite directory structure

  - SOCKET protocol
    * The protocol specification changed to allow SOCKET messages without a
      MsgUnit
    * Bugfix: Distinguish between empty get() return and empty QoS as
      update return
    * Bugfix: Fail save mode of SOCKET did not callback client
      Reported by Sebastian Sturm
    * Bugfix: Message where sometimes corrupted, during writing one message
      another mixed enbetween. Fixed with synchronize.
      Reported by Antti Jarvinen
    * Bugfix for blocking recursive remote invocations
      e.g. call publish() in update() body
      This is solved with a Thread per request approach on client side
    * Bugfix: Avoid blocking client thread on lost connection waiting
      for return value (freePendingThreads())
    * Bugfix: Callback memory leak in disconnect fixed

  - Renamed ServerThread.java -> EmbeddedXmlBlaster.java

  - New ClassLoader 'XmlBlasterClassloader', which isolates the xmlBlaster from
    user environment.
    This feature is usable by integrating the org.xmlBlaster.util.EmbeddedXmlBlaster
    in another application.
    Added by Heinrich Goetzger, Konrad Krafft and Marcel Ruff, see
      http://www.xmlblaster.org/xmlBlaster/doc/requirements/util.classloader.XmlBlasterClassLoader.html 
      http://www.xmlblaster.org/xmlBlaster/doc/requirements/util.classloader.ClassLoaderFactory.html
      http://www.xmlblaster.org/xmlBlaster/doc/requirements/util.classloader.PluginClassLoader.html
  
  - Fixed memory leaks
    * For unsuccessful logins
    * Removed allocation of SubjectInfo in htpasswd

  - INCOMPATIBLE mime access plugin interface change.
    This is of importance only if you use your own mime based plugins.
    The I_AccessFilter interface method 'match()' changed from
      match(SubjectInfo publisher, SubjectInfo receiver, ...
    to
      match(SessionInfo publisher, SessionInfo receiver, ...

  - INCOMPATIBLE plugin interface change.
    This is of importance only if you use your own plugins.
    The I_Plugin interface method changed from
      public void init(org.xmlBlaster.util.Global glob, String[] options)
    to
      public void init(org.xmlBlaster.util.Global glob, org.xmlBlaster.util.plugin.PluginInfo pluginInfo)
    The package name changed from
     org.xmlBlaster.util.plugin.I_Plugin
    to
     org.xmlBlaster.util.plugin.I_Plugin

  - INCOMPATIBLE property change.
    To load protocol plugins this form is not supported anymore:
      Protocol.Drivers=IOR:org.xmlBlaster.protocol.corba.CorbaDriver
      Protocol.CallbackDrivers=IOR:org.xmlBlaster.protocol.corba.CallbackCorbaDriver
    the new syntax is:
      ProtocolPlugin[IOR][1.0]=org.xmlBlaster.protocol.corba.CorbaDriver
      CbProtocolPlugin[IOR][1.0]=org.xmlBlaster.protocol.corba.CallbackCorbaDriver
    See xmlBlaster/config/xmlBlaster.properties.template for more examples
    You definitly need to search your code, property files and shell
    scripts and replace to the new syntax.
    
  - Updated to JacORB_1_4_1
    -> NO: moved back to 1.3.30, the new version blocked
    in some cases.

  - Some minor, incompatible changes to the C++ xmlBlaster client lib
    * There is now a CORBA independend util::MsgUnit
    * CorbaConnection.cpp has now CORBA independend method variants
      which are based on STL
    * Fixed memory leaks (in the client C++ libs) 

  - Added administration support for killSession/killClient

  - C++ support for omniORB added (Nils Nilson)

  - C++ support for TAO added (Martin Johnson)
    Added an ant based build.xml file to compile with TAO
    See xmlBlaster/src/c++/tao.xml

  - Bugfix in C++ publishOneway() (reported by Nils Nilson)

  - Bugfix in XmlRpc login method which ignored
    credentials (reported by Oliver Fels)
    login() works now but is deprecated, use connect() instead

  - Added proper logout on runlevel change to HALTED

  - New PHP demo client, see
      xmlBlaster/demo/php/xmlrpc/README

  - Updated Perl demo client, see
      xmlBlaster/demo/perl/xmlrpc/README

  - Changed to generate key oid without special characters which
    prevents oid to be used as file name, bug reported by
    Doug.Palmer@csiro.au

  - Fixed isVolatile() memory leak reported by liuwen@onewaveinc.com

  - Removed CLASSPATH settings from build.sh/build.bat
    They are now in build.xml

  - Bugfix in HtPasswd for "name starts with" mode.

  - Added JacORB1_3_30 bugfix in lib/jacorb.jar
    Patched JacORB1_3_30/lib/org/jacorb/orb/BasicAdapter\$Listener.class:
    Changed to if( address_string.indexOf( "/" ) >= 0 )
    to fix bug when IP has no DNS entry

  - Updated to use newest JUnit 3.8.1

  - Added new documentation (all are CLOSED), see
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.update.html
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.connect.html
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.disconnect.html

  - Added clearSession QoS for disconnect() invocations
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.disconnect.html

  - Added requirement describing message priorities
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.publish.priority.html
    
  - You can now suppress the initial update on subscribe
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.subscribe.initialUpdate.html

  - Added message erase events for subscribers, see
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.update.html
    NOTE: You have to cope with different sorts of update messages
          now.

  - Bugfix for client side -bootstrapHostname parameter.

  - Automatic detection of the local IP for dial in hosts
    with dynamic IP. In most cases you don't need to
    specify the callback server hostname any more.

  - Added <duplicateUpdates>true/false</duplicateUpdates> to ConnectQos
    This allows for multiple subscribes of one client sessions on
    the same me message to only receive on update.
    Defaults to true.
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.subscribe.duplicate.html

  - Added more administrative introspection properties:
    nodeId, version, buildTimestamp, buildJavaVendor, buildJavaVersion
    numNodes, nodeList etc.
    Parts of them are burned during compilation with ant/build.xml

  - Removed internal messages __sys__FreeMem, __sys__TotalMem and __sys__UsedMem
    Please use __cmd:?freeMem, __cmd:?totalMem and __cmd:?usedMem instead.


Changes for 0.79f [Jun, 17 2002]
================================

  - Added runlevel listener framework to allow switching between
    run levels like RUNNING, CLEANUP, STANDBY and HALTED
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.runlevel.html
 
  - Multithreading publish() bug in RequestBroker.java fixed (with synchronize)
 
  - Added framework for xmlBlaster administration (SNMP/JMX/telnet/message based).
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.html
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.telnet.html
    http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.commands.html
 
  - Added full administration access from telnet on properties and
    xmlBlaster core attributes
    This is based on remotecons.jar 1.0
    See http://wttools.sourceforge.net/ and
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/admin.telnet.html

  - Changed default security plugin from 'simple' to Cyrilles 'htpasswd'
    http://www.xmlBlaster.org/xmlBlaster/src/java/org/xmlBlaster/authentication/plugins/htpasswd/README
 
    HtPassWd is now extended to accept partial usernames. e.g. if the passwordsfile contains
     "Username", HtPassWd also accepts "User". Additionally if the passwordfile just contains
     "*" any username and password is accepted [Andreas Stelzl]
 
  - Added support for dirty reads in clusters
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/cluster.dirtyRead.html
 
  - Added support for filtering published messages
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/mime.plugin.publishfilter.html
 
  - You can automatically build an xmlBlaster distribution, see:
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/admin.deploy.html

  - Added support to ping the callback client side server, see
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.callback.html

  - Rewritten callback handling

  - PtP bugfix if a client disappears silently

  - Added invocation recorder plugin framework to queue
    messages on client side on failure:
    1. RamRecorder.java
    2. FileRecorder.java
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/util.recorder.html

  - Bugfix for similar XPath subscriptions of many clients

  - Bugfix for volatile message deletion with multiple subscribers

  - Sepcific logging, examples:
    -trace[cluster] true   Trace cluster
    -trace[mime] true      Trace mime plugins
    -call[core] true       Show function calls in core
    -dump[corba] true      Dump message sent/received by corba plugin

  - XmlBlasterProperty is deprecated to use directly, use Global instead:
      glob.getProperty().get("myProp", "defaultVal");
    Added Global argument to many classes, but you can access
    the first Global instance with:
      Global glob = Global.instance();

  - Log.java is deprecated to use directly, use Global with LogChannel instead:
      glob.getLog("corba").warn("X", "Y");

  - Testsuite: Ported from Junit 1.0 to Junit 3.7

  - Splitted PropertyQueue class to handle client connect queue
    and server callback queue

  - The generated key oid now contains the node id

  - The default boot strap port is now 3412,
    the IANA assigned xmlblaster port.
    XmlBlaster listens with its tiny internal
    http server on 3412 to deliver the CORBA IOR
    and in future other informations.
    Port 7609 is not used as a default any more.

  - Server internal changes:
    Tuned performance for internal messages

  - Changed subscriptionId to contain a prefix
 
  - Changed (bugfix?) message erase behavior: When a message
    is deleted, the subscribe on it is not destroyed but placed as
    a reservation.

  - Added support to unSubscribe not only with subscribeId but
    with the key-oid as well

  - Added basic cluster support, see
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/cluster.html

  - Extended C++ compile support with build.xml and ant,
    runs fine on Linux/gcc, needs to be adapted on Windows

  - Bugfix:
    The persistent http servlet is now fully configurable with web.xml

  - Bugfix:
    The startup options "-logFile x.log -logConsole false" work again

  - Bugfix:
    The internal logged in user "__user..." have now unlimited session
    timeouts.

  - Bugfix:
    In the XmlBlaster GUI the XPath query failed (login is not supported any more)
    since 0.79e, this is fixed now

  - Renamed SubscribeFilter to AccessFilter
    Renamed SubscribePluginManager to AccessPluginManager
    Added filter support to get() QoS

  - Changed C++ client to use as a default the newest
    mico 2.3.7 and xerces 1.7.0
    Removed 'loginName' parameter in update() method

  - A get() which doesn't find a message returns now a MsgUnit[]
    of length 0.
    In older releases there was thrown an XmlBlasterException.

  - Changed behaviour for java client method disconnect()
    disconnect now shutdown the protocol driver and callback server as well.
    See javadoc API of XmlBlasterConnection.

  - Incompatible changes:
    ---------------------
    * publish() returns now XML string instead of the plain oid
      Introduced PublishReturnQos, see
      http://www.xmlBlaster.org/xmlBlaster/doc/requirements/interface.publish.html

    * Incompatible change of ConnectQos:
      The constructor expects now a Global instance as the
      first argument (you can pass null).

    * Incompatible change of command line options:
      -client.failSave.retryInterval   ->  -delay
      -client.failSave.pingInterval    ->  -pingInterval
      -client.failSave.retries         ->  -retries
      -client.failSave.maxInvocations  ->  -queue/maxEntries
      -client.publishOneway.collectTime->  -burstMode.collectTimeOneway

    * Incompatible change:
      Removed XmlKeyBase.java, use XmlKey.java instead
      XmlKeyBase.DEFAULT_contentMimeExtended -> Constants.DEFAULT_CONTENT_MIME_EXTENDED

    * Incompatible change of file name:
      UpdateQoS.java -> UpdateQos.java

    * Incompatible change of command line options:
      -dispatch/callback/protocol/ior/iorStringHost  ->  -hostname
      -dispatch/callback/protocol/ior/iorStringPort  ->  -port
      -dispatch/callback/protocol/ior/iorStringFile  ->  -dispatch/callback/protocol/ior/iorString.file
 
    * Incompatible change of QoS returns:
      Old: "<qos><state>OK</state></qos>"
      New: "<qos><state id="OK"/></qos>"
   

Changes for 0.79e [Mar, 27 2002]
================================

  - SOCKET protocol driver performance tune:
    Using now read() and write() with large buffer
    See xmlBlaster/src/java/org/xmlBlaster/protocol/socket/Parser.java

  - Added client side burst mode for publishOneway
    in java client helper classes.
    See -client.publishOneway.collectTime 500

  - Added dBase JDBC driver 'tinySQL' to allow regression test, see
      http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.service.rdbms.html
      http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.service.rdbms.jdbcpool.html

  - Extended Perl support (from Cyrille)

  - RMI and XmlRpc interface changes.
    see CORBA changes in
    xmlBlaster/src/java/org/xmlBlaster/protocol/corba/xmlBlaster.idl

  - CORBA changes in xmlBlaster.idl
    (xmlBlaster/src/java/org/xmlBlaster/protocol/corba/xmlBlaster.idl)
    
    The xmlBlaster server:
     Added:
       oneway void publishOneway(in MsgUnitArr msgUnitArr);
       string ping(in string qos);
     Removed:
       boolean ping()
  
    The authentication server:
     Added:
       string ping(in string qos);
  
    The callback server:
     Added:
       oneway void updateOneway(in string sessionId, in serverIdl::MsgUnitArr msgUnitArr);
       string ping(in string qos);
     Changed:
       The update() is changed to receive a cbSessionId and to return a String[]
       It may throw an exception now, since it is not oneway anymore.

  - Java client helper classes:
    The update() method changed incompatible !!
    * The first argument now returns the callback sessionId.
      This is the id you passed on registering your callback server
      and allows you to authenticate the callback invoker.
    * You need to return a QoS string in this version.
      For the time being just return an empty String "" (not null).

  - Changes to Java client library. We now support separate
    instantiation of callback protocol drivers and client drivers.
    See: xmlBlaster/testsuite/src/java/org/xmlBlaster/qos/TestCorbaThreads.java
         for an example.

  - Added a framework to add your own MIME based plugins to filter subscriptions
    Please read
       http://www.xmlblaster.org/xmlBlaster/doc/requirements/mime.plugin.subscribe.html
    to find out what this is about (it contains a nice picture)
    and
       http://www.xmlblaster.org/xmlBlaster/doc/requirements/mime.plugin.subscribe.howto.html
    how to code your own plugin. 

  - For PtP messages <forceQueuing> is now an
    attribute of <destination forceQueuing='true'>

  - For PtP messages <forceUpdate> defaults now to true

  - Added support for dead letters on failure
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.qos.login.session.html

  - Added support for multiple sessions per client.
    A user may now login multiple times with the same login name.
    The different login sessions are timeout controlled, see
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.qos.login.session.html

  - Added support for sophisticated queueing, priority messages,
    guaranteed sequence, burst mode (sending messages in a bulk)
    and much more, see:
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.queue.html
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.callback.html
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.message.html

  - PublisQosWrapper, setting boolean values require a parameter now:
    setReadonly()    -> setReadonly(true)
    setForceUpdate() -> setForceUpdate(true)

  - Change get() and subscribe() QoS:
    <noMeta/>    to <meta>false</meta>
    <noContent/> to <content>false</content>
    <noLocal/>   to <local>false</local>
    Constructor of SubscribeQosWrapper() is inverted!
    Constructor of GetQosWrapper(gob) is inverted!

  - New high performing Timestamp supporting unique message timestamps
    with simulated nanoseconds

  - Behavior change [Ruff]:
    <forceUpdate> defaults now to true

  - Changed subscribe() return value to be always a unique subscription ID
    (thanks to Wolfgang Kleinertz)

  - IANA has assigned following ports for us:
      xmlblaster      3412/tcp                        # xmlBlaster
      xmlblaster      3412/udp                        # xmlBlaster
    The contacts are:
      Michelle S. Cotton
      IANA Administrator
      Internet Assigned Numbers Authority (IANA)
      4676 Admiralty Way, Suite 330
      Marina del Rey, California 90292
      Voice: (310) 823-9358
      FAX:   (310) 823-8649
      email: iana@iana.org

  - Heinrich has made the plugin interface more generic.
    See xmlBlaster/src/java/org/xmlBlaster/util/I_Plugin.java

  - Native XML persistence support added.
    Heinrich has added Xindice (a native XML DB) support as persistence
    layer of xmlBlaster.
    See xmlBlaster/src/java/org/xmlBlaster/engine/persistence/xmldb/README
      http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.persistence.xmldb.html
      http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.persistence.xmldb.xindice.html

  - build.sh and build.bat have new targets:
       build.sh dist          (collect xmlblaster server files)
       build.sh dist-client   (collects java client classes in xmlBlasterClient.jar,
                               with many variants)
       build.sh cpp-lib       (builds a C++ client shared library or dll)
       build.sh cpp-test      (compiles/links C++ CORBA clients)
    Try
       build.sh usage
    to see all possible options.

  - Behavior change [Juergen Freidling]:
    xmlBlaster now respects multiple subscriptions
    on the same message, and will deliver this message multiple times
    to the same client.

  - Bugfixed jutils.jar added:
    * Removed JDBC pool code (does not compile with JDK 1.4)
    * Bugfix for xmlBlaster.properties file in CLASSPATH

  - Added complete demo code how to access xmlBlaster
    from C using XmlRpc
         Read xmlBlaster/demo/c/xmlrpc/README

  - Added OS independend C++ compile support with ant
    TODO: Adapt to run on Windows as well.

  - Reduced necessary environment settings to
      JAVA_HOME=<pathToJdk>
      CLASSPATH=<xmlBlaster>/lib/xmlBlaster.jar


Changes for 0.79d [Dec, 30 2001]
================================

  - CORBA/C++ client helper classes now support http IOR download, e.g.:
       TestGet -dispatch/callback/protocol/ior/iorStringHost myHost -dispatch/callback/protocol/ior/iorStringPort 7609

  - Changed/Enhanced property file lookup for C++ clients
    see xmlBlaster/src/c++/util/Property.h

  - Changed to support security QoS tags for login() method
    Performance changes to avoid double qos parsing of connect QoS
    (bug reported by Cyrille, again keeping me busy :-)

  - Added SVG sample code for persistent http callback, see

      demo/http/svg/systemInfo

  - Ported persistent http callback framework to tomcat 3.2.4, use

      build.sh deploy_war

  - Added C++ support in build.xml, to compile the
    xmlBlaster C++ client helper shared library (so, sl, dll) type:

       build.sh cpp-lib

  - Changed C++ file extension .cc to .cpp
    Holger Lehn ported C++ clients to Windows using stlport library

  - Added a message receive timestamp in update QoS, see:
    http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.qos.update.rcvTimestamp.html
    The feature is not yet used by the server.

  - Bugfix when interpreting command line option -xmlrpc.hostname

  - The C++ client helper classes are now collected into a
    shared library, on Linux e.g.
       xmlBlaster/lib/libxmlBlasterClient.so
    The new C++ namespace is
       org::xmlBlaster

  - Added an email callback plugin (protocol="EMAIL").
    This allows callbacks to be send using email instead e.g. CORBA
    See xmlBlaster/demo/javaclients/email/README

  - New 'passwd' style Security Plugin from Cyrille Giquello, see

      xmlBlaster/src/java/org/xmlBlaster> cd authentication/plugins/htpasswd/README

  - Added Update QoS element <queue> with queue informations
    (Thanks to Cyrille)

  - UpdateQos and UpdateKey: Renamed printOn() to toXml()

  - Added default corbaloc to xmlBlaster server and naming service
    This allows connecting to a local naming service without configuration

  - Corrected shell scripts in xmlBlaster/bin directory
    to reflect the new JacORB package names

  - Added a LDAP security plugin, please follow
    instrutions in 

      xmlBlaster/src/java/org/xmlBlaster/authentication/plugins/ldap/README
      
    to test it. It is quite simple.
     

Changes for 0.79c [Sep, 05 2001]
================================

 - Remove your old xmlBlaster.properties, jacorb.properties
   and orb.properties files.
   Use the new files from directory xmlBlaster/config
   if wanted.

 - Backward compatibility:
   * Clients accessing xmlBlaster directly (C++,Python,Perl)
     will run with old xmlBlaster servers.
   * Clients using the Java helper classes will only connect
     to the new xmlBlaster 0.79c, since these classes
     use the new security plugin.

 - Changed <noPtP/> to <ptp>false</ptp>

 - Ported to JacORB 1.3.30
   NOTE: You need to copy the new
      config/jacorb.properties.template
     to
      $HOME/jacorb.properties
     If you use orb.properties, please install the new
      config/orb.properties

 - Extended Java client helper class XmlBlasterConnection
   to allow dispatching callback messages.
   Every subcription may specify its dedicated callback handle.
   See xmlBlaster/demo/javaclients/ClientSubDispatch.java as
   an example.

 - Added Authentication and Authorization framework by Wolfgang Kleinertz

   xmlBlaster.idl has changed, new methods connect() and disconnect()
   as counterpart to login() and logout()

   Please copy the modified config/xmlBlaster.properties.template
   to $HOME/xmlBlaster.properties

   In xmlBlaster.properties uncomment the line
      Security.Client.DefaultPlugin=gui,1.0
   and start for example "java javaclients.ClientSub" to see xmlBlaster
   with GUI based manual authentication/authorization.

   To study raw CORBA access with the new security plugin see
      xmlBlaster/demo/javaclients/corba/ClientRawSecurity.java

 - Changed XMLRPC 'void' method return values to return
   an 'empty string', since 'void' is not supported in the
   XMLRPC spec.
   Bug reported by Cyrille Giquello <cyrille@ktaland.com>

 - Added qos support for get() responses, for example:
   <qos>
     <state>
       OK
     </state>
     <sender>
       Tim
     </sender>
   </qos>

 - Fixed C++ testclients in xmlBlaster/testsuite/src/c++

 - It is now possible to query the current logged in users
   by "__sys__UserList"
   Feature added by "Gilles Lavaux" <gilles.lavaux@esrin.esa.it>

 - KNOWN BUGS:
   * The "simple" security plugin is needed for the JDBC driver to login.
     This will be changed in a future release.

Changes for 0.79b [March, 11 2001]
==================================

 - Bugfix with Base64 support in xmlrpc (thanks to Nikolai Devereaux)

 - J2EE support added by Peter Antman
   See: xmlBlaster/src/java/org/xmlBlaster/j2ee/k2/README
   See: xmlBlaster/demo/javaclients/j2ee/k2
   New jars for J2EE support:
   connector.jar jaas.jar jta-spec1_0_1.jar
   jms.jar ejb2.0.jar jndi-jdk1_3_1.jar
   (The jndi jar is needed for JDK 1.2 only)

 - Added support for volatile messages (thanks to Peter Antman).
   A volatile messages exists only during publish and processing it (doing the updates).
   A non-volatile messages (which is default) stays in memory as long as the server runs.

 - erase() now reports the correct number of erased messages
   if some of the messages did not exist.

 - Change of behaviour (thanks to Stefan Nickisch):
   If a callback to a client fails, the subscription will be
   automatically canceled for this client.

 - Integrated JacORB CORBA release 1.3.11
   Please copy the new xmlBlaster/config/jacorb.properties.template
   to $HOME/jacorb.properties (replacing the old one).

 - Added _release() calls to avoid JacORB memory leak on shutdown()

 - Bug fixed in JDBC adapter, NullPointerException because of
   missing namespace (thanks to Juergen Freidling).

 - Subscribe Bug fixed (reported by Stefan Nickisch)
   If a subscriber crashes without logout, this will disturb all other
   subscribers.
   No more communication is possible until the crashed subscriber will log on
   again.

 - Added proper RMI server and callback server shutdown

 - Renamed servlet-2.0.jar to servlet.jar

 - Added a simple Python hello world demo,
   see xmlBlaster/demo/python/README

 - Messages from the persistent store now deliver the correct
   sender name, the unique login name of the publisher.
   Thanks to Suhas Bharambe for reporting the bug.

 - Persistent Db integration (code, but no release).

 - Changed to JAXP and DOM2 Sun/crimson XML parser
   jaxp-1.1ea2 from SUN, DOM2 SAX2

 - Changed code to conform to SAX2

 - Login QoS has no <noPtP> element anymore, this is set
   for each CallbackAddress from now on, e.g.:
     <callback type='IOR'>
        http:/www.mars.universe:8080/RPC2
        <PtP>false</PtP> <!-- Set this flag if you don't want to receive any PtP messages -->
                         <!-- prevents 'spamming' -->
     </callback>


Changes for 0.79a [Nov, 16 2000]
================================

 - xmlBlaster license change to 'pure' LGPL

 - JacORB as CORBA default:
   Setting default System properties to
     org.omg.CORBA.ORBClass=org.jacorb.orb.ORB
     org.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton
   in our CORBA drivers (if not set differently from environment).

 - Severe bugfix with CORBA POA sessionId.
   This bug caused sometimes the POA sessionId to be not unique,
   causing a subsecquent login to auto logout another client.

 - FileDriver is switched on as default (persistent store).
   You need to replace your xmlBlaster.properties
   with the new xmlBlaster.properties.template or set
   Persistence.LazyRecovery=true

 - Several smaller fixes.


Changes for 0.79 [Nov, 3 2000]
==============================
  - Bugfix for CORBA client/server running on multi homed hosts:
       java -DOAIAddr=198.197.24.129 javaclients.chat.SimpleChat
    for example forces the chat corba-callback server to use
    the given ip address.
       java -DOAIAddr=198.197.24.129 org.xmlBlaster.Main
    forces xmlBlaster to use the given address.
    xmlBlaster/lib/jacorb.jar is patched (see lib/README).

  - NOTE: CorbaConnection.java removed, please use
    XmlBlasterAccess.java instead.
    This allows to switch the used protocol (IOR,RMI,XMLRPC)
    on command line without recompilation.
    For coding example see demo/javaclients/ClientSub.java
    To switch protocol use the -dispatch/connection/protocol command line option.
    Example:
      jaco javaclients.ClientSub -dispatch/connection/protocol IOR
      jaco javaclients.ClientSub -dispatch/connection/protocol RMI
      jaco javaclients.ClientSub -dispatch/connection/protocol XMLRPC

  - NOTE: You need to use the new xmlBlaster.properties file.
    Remove your old in your HOME directory and use the
    new template from xmlBlaster/config as a base.

  - NOTE: JDK_HOME is not used anymore, use JAVA_HOME instead.

  - NOTE: You need to replace
       import org.xmlBlaster.client.CorbaConnection;
    with
       import org.xmlBlaster.client.protocol.XmlBlasterConnection;
    if you have used this class in your java clients.
    Then replace all occurrences of
       CorbaConnection
    with
       XmlBlasterConnection
    The login() method has changed to return void.

  - The built in http IOR download server is now more close
    to HTTP 1.1 spec RFC 2068

  - New command line argument added to xmlBlaster server:
    -dispatch/callback/protocol/ior/iorStringHost <host>
    allows to specify where the internal http server publishes
    its bootstrapping IOR (for multi homed hosts).

  - build.xml:  Target 'all' collects demo and testuite classes
    into xmlBlaster.jar as well.

  - NEW: Easy installation: Ready to go in 30 seconds!
    Added customized MANIFEST to xmlBlaster.jar, allowing
    to start xmlBlaster without any CLASSPATH setting:
       java -jar lib/xmlBlaster.jar
    See INSTALL file.

  - RMI driver looks for xmlBlaster.polcy now in CLASSPATH as well, e.g.
       export CLASSPATH=$CLASSPATH:$XMLBLASTER_HOME/config
    whith $XMLBLASTER_HOME/config/xmlBlaster.policy

  - Migrated to XMLRPC java.1.0_beta_4

  - Migrated to Ant 1.2

  - Migrated to JacORB 1.2.2

  - Changed package for FileDriver, modify xmlBlaster.properties to
      Persistence.Driver=org.xmlBlaster.engine.persistence.filestore.FileDriver

  - Changed logging to use jutils Log classes
    NOTE: you need to change in your code:
       import org.jutils.log.Log;
    to
       import org.xmlBlaster.util.Log;

  - Michele completed xml-rpc support

  - Moved xmlBlaster.properties.template to config directory

  - Moved jacorb.properties.template to config directory

  - Moved orb.properties to config directory

Changes for 0.78 [Jul, 14 2000]
==============================
  - Added generic database access from James to xmlBlaster core.
    The JDBC gateway uses now the native interface to xmlBlaster.
    Added advanced JDBC connection pooling. Every user has
    its own pool, allowing heavy load server simultaneous
    database access (thread save).
    See online requirements for more informations/examples:
       http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.service.rdbms.html
       http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.service.rdbms.jdbcpool.html

  - Michele Laghi added complete C++ client support for MICO and ORBacus.
    He implemented all necessary C++ client helper classes for easy and cool
    xmlBlaster access.

  - Moved xmlBlaster/src/idl/xmlBlaster.idl to directory
    xmlBlaster/src/java/org/xmlBlaster/protocol/corba/xmlBlaster.idl

  - Changed package names:
    org.xmlBlaster.engine.persistence.I_PersistenceDriver -> org.xmlBlaster.engine.I_PersistenceDriver
    org.xmlBlaster.engine.persistence.FileDriver          -> org.xmlBlaster.engine.FileDriver
    org.xmlBlaster.util.MsgUnit                       -> org.xmlBlaster.util.MsgUnit
    org.xmlBlaster.util.Destination                       -> org.xmlBlaster.util.qos.address.Destination
    org.xmlBlaster.util.CallbackAddress                   -> org.xmlBlaster.util.qos.address.CallbackAddress
    NOTE: You need to replace your xmlBlaster.properties
    with the new xmlBlaster.properties.template!

  - Changed classes:
    MsgUnit now contains the qos
    MsgUnitContainer is removed.
    Note that there is a CORBA MsgUnit and a engine.helper.MsgUnit
    class (same name, same members).

  - xmlBlaster.properties allows variables ${...} replacement.
    see util.property.args.xml, util.property.env.xml, util.property.xml
    NOTE: You need to replace your xmlBlaster.properties
    with the new xmlBlaster.properties.template!

  - The "+" for command line options (e.g. +trace) is not supported
    any more, use for example '-trace true' instead.

  - There is now RMI support for xmlBlaster available.
    The Servers are in
       xmlBlaster/src/java/org/xmlBlaster/protocol/rmi
    A simple demo client is in
       xmlBlaster/demo/javaclients/rmi
    Read the INSTALL file about how to use RMI support.
    This is an alpha release, no test suite etc. yet.
    The reason for RMI support is a future support
    of JINI (which is based on RMI).
    The Discovery and Lookup of Jini are very fault tolerant
    and could be a base for xmlBlaster replication,
    load balancing and master/slave operation.

  - Added XmlBlasterException.java in org.xmlBlaster.util package.
    This allows Corba independend Exception handling.
    The xmlBlaster.idl defined XmlBlasterException
    is not removed and still resides in package
       org.xmlBlaster.protocol.corba.serverIdl
    NOTE: You need to change the package of XmlBlasterException
    in your code as well (if not thrown from Corba).

  - Added new package org.jutils to the xmlBlaster distribution.
    This replaces org.xmlBlaster.util over the time.
    You need to set the environment variable JUTILS_HOME to:
      export JUTILS_HOME=${XMLBLASTER_HOME}
    Changed package names:
       org.xmlBlaster.util.Log          -> org.jutils.log.Log
       org.xmlBlaster.util.FileUtil     -> org.jutils.io.FileUtil
       org.xmlBlaster.util.Queue        -> org.jutils.collection.Queue
       org.xmlBlaster.util.Args         -> org.jutils.init.Args
       org.xmlBlaster.util.Property     -> org.jutils.init.Property
       org.xmlBlaster.util.Memory       -> org.jutils.runtime.Memory
       org.xmlBlaster.util.StringHelper -> org.jutils.text.StringHelper
       org.xmlBlaster.util.StopWatch    -> org.jutils.time.StopWatch
       org.xmlBlaster.util.Timeout      -> org.jutils.time.Timeout
    rm Args.java FileUtil.java LogListener.java Log.java Memory.java Property.java Queue.java StopWatch.java StringHelper.java

  - Compiled successfully xmlBlaster with JDK 1.3 for Linux.
    Performance enhancment for CORBA access ~ 80%

  - Compiled successfully xmlBlaster with TowerJ native compiler.
    Performance enhancment for CORBA access ~ 30%
    See .bashrc for used settings

  - Added protocol plugin possibility in xmlBlaster.properties
    Default settings are Corba drivers, example for RMI is provided as well:
      #------------------------------------------------------------------------------
      # List of all xmlBlaster access protocol drivers (I_Driver and I_Callback implementations)
      # <protocol-type>:<driverClass>,<protocl-type>:<driverClass>,...
      # For protocol types see I_Driver.java
      Protocol.Drivers=IOR:org.xmlBlaster.protocol.corba.CorbaDriver
      Protocol.CallbackDrivers=IOR:org.xmlBlaster.protocol.corba.CallbackCorbaDriver

  - Added native interface for xmlBlaster: I_XmlBlaster.
    All plugged in protocol drivers need to use this interface.
    The authentication is checked there in a controlled way.

  - The package org.xmlBlaster.authenticate is now CORBA independend.
    It uses or generates a unique sessionId string to track a login session
    of a user. This allows easier integration of other
    protocols like xml-rpc.

  - Bug fix in PoolManager.erase() method

  - ClientConnection: removed deprecated logout(server)
                      Added killPing() in logout()

Changes for 0.77 [Jun, 3 2000]
===============================
  - Bugfix in Main - MainGUI swapping and log WARN toggle.

  - browser callback enhancement:
    It is now possible to pass the login name and the password
    through the session object of the servlet (cookie).
    This allows you to use your own authentication.
    See client.browser.xml requirement how to do it.

  - Bugfix for XPath subscription match errors.
    Thanks to "Brett Palmer" <plum001@hotmail.com>
    for finding and describing this bug.

  - Stripped from jacorb.jar unneeded classes.
    This reduces the size from 3.7 MB to 2.3 MB.

  - Bug work around for thread leak: The thread leak from
    JacORB 1.1 is for the bug being fixed in CorbaConnection.java

  - Bugfix in CorbaConnection.java: Cleanup for Callback server added.

  - Changed XML parser to jaxp 1.0.1 and added servlet support
    to xtdash.jar (from original xt.jar).
    NOTE: You need to remove xml.jar from your CLASSPATH and
    add jaxp.jar and parser.jar (see xmlBlaster/lib directory)

  - Changed xmlBlaster.idl
    from
       login(in string loginName, in string passwd,
                  in clientIdl::BlasterCallback cb,
                  in serverIdl::XmlType qos)
    to
       login(in string loginName, in string passwd,
                  in serverIdl::XmlType qos)
    The callback protocol and address is now passed using
    the xml based qos.
    NOTE: You need to change your client code as well!
    See requirement engine.qos.login.callback

  - CORBA implementors other than JACORB and MICO can now be used. ORBACUS
    can work for the xmlBlaster server, java clients and c++ clients. You
    need OB-4.0b3 (for c++) and JOB-4.0b3 (for Java) or higher. You can
    find more about ORBACUS at http://www.ooc.com.

  - Persistent browser callback bugfixes
    * Added proper logout
    * Fixed security hole
    * Added support to set system properties through initArgs
    * Removed memory leak
    * Added ping/pong, to allow servlet to detect a lost browser


Changes for 0.76 [May.8, 2000]
===============================
        - Added a client cache to CorbaConnection class, allowing
          clients cheap synchronous polling for a message (Java only).
          See xmlBlaster/doc/requirements/client.cache.xml

        - Added demo for http browser callback without closing the http
          connection.
          See
            xmlBlaster/doc/requirements/client.browser.xml
            xmlBlaster/demo/html/systemInfo
            xmlBlaster/src/java/org/xmlBlaster/protocol/http
          and online:
            http://www.xmlBlaster.org/systemInfo/systemInfo.html?ActionType=login&loginName=karl&passwd=secret

          Netscape 4.x on Linux/HPUX/Win and
          Netscape 4.7 / MSIE 5 on WinNT and Win98
          runs fine.

        - Bugfixes (especially memory leak fixed) in browser
          callback framework.

        - Logging output can now be customized.
          You can choose the Date and Time formatting and the
          language and country.
          The amount of logging information is adjustable as well.
          Example:
        "Saturday, April 29, 2000 7:05:49 PM GMT+02:00 INFO Published AuthServer IOR on port 7609"
          or    in french:
        "samedi 29 avril 2000 19 h 06 GMT+02:00 INFO Published AuthServer IOR on port 7609"
          or    in short form german:
        "29.04.00 19:07 INFO Published AuthServer IOR on port 7609"
          or    minimal:
        "Published AuthServer IOR on port 7609"
          See xmlBlaster.properties.template    how to use it.

        - Bugfix when logging to file with missing permissions in Util.java
          The bug resulted in a never ending    loop.

        - xmlBlaster.properties can now be placed in    'java.home' directory
          as    well (this is for example /opt/jdk1.2.2/jre/lib).
          This feature may be helpful if you    want to start a deamon
          or    a servlet which has no home directory.
          See org.xmlBlaster.util.Property for more informations

        - xmlBlaster now uses the new JacORB 1.1 with SSL support

        - .jacorb_properties is renamed to jacorb.properties
          YOU NEED TO REMOVE YOUR $HOME/.jacorb_properties and
          configure $HOME/jacorb.properties
          Use the xmlBlaster/jacorb.properties.template as a base

        - Peter added the sweet rainbow fish to our control panel

        - Enhancements with browser callback framework

        - XmlKey.getContentMimeExtended() now returns "" (empty string)
          as    default fallback. Before the default was null.
          This is smarter when used in XSL style sheets.

Changes for 0.75 [Mar.28, 2000]
===============================

        - Konrad completed the fabulous Browser callback framework!
          And it works incredible well.
          Browsers get instant callback updates from xmlBlaster messages
          through a persistent http connection.
          It supports many feature like browser pinging, slow
          browser queuing etc.
          Konrad will write a little tutorial in the next week.
          See xmlBlaster/src/java/org/xmlBlaster/protocol/http
          See xmlBlaster/doc/http/BlasterHttpProxy.gif

        - Added little tool which allows to subscribe
          from command line for a message (for testing/debugging).
          See xmlBlaster/src/java/org/xmlBlaster/client/reader/README

        - Added two internal messages with key oid="__sys__Login"
          and key oid="__sys__Logout"
          You may subscribe on those messages if you want to be informed
          about other client which login or logout

        - Added a xmlBlaster reference handbook to xmlBlaster.org
          This page is generated from the requirement XML files in the
          xmlBlaster/doc/requirements directory of the distribution.
          It is available on our homepage in the 'Doc' section.

        - Bugfix if the Callback of a PtP receiver is disappeared,
          this usually happens when the receiver crashes without a logout.
          Now the XmlBlasterException with e.id="CallbackFailed" is thrown
          to the sender,  and the message is queued for the receiver
          if the qos flag <ForceQueuing> was set.

        - Allow clients to ping xmlBlaster, to test reliable the connection.
          The xmlBlaster.idl was extended with a ping() method.
          Java clients may use CorbaConnection.java to automatically test
          ping the connection.

        - Added <qos> tag <subscriptionId> for update messages.
          This allows the client to find out which of his subscriptions
          caused this update.

        - Added <qos> tag <state> for update messages.
          This is not finished, it always shows OK for the moment.

        - Command line parameters (args) and xmlBlaster.property file entries are
          merged. The 'args' overwrite the property file variables.
          Every xmlBlaster.property variable may as well be specified on
          command line. The leading "-" or "+" from the command line    key is
          stripped before it    is merged into the properties hash table.
          For example, the "-dispatch/callback/protocol/ior/iorString.file" command line argument corresponds to the
          "ior.file" variable    in the xmlBlaster.properties file.
          See Property.java


Changes for 0.74 [Feb.29, 2000]
==============================
        - New XML based requirements framework.
          See xmlBlaster/doc/requirements

        - 'Fail save' client connection for Java clients added.
          Clients begin polling and automatic local recording of messages
          if xmlBlaster server disappears.
          See CorbaConnection.java

        - C++ POA demo client added [Michele]
          See xmlBlaster/testsuite/src/c++

        - Recorder to record/playback of messages in slow/fast motion added.
          See InvocationRecorder.java

        - CorbaConnection: logout(boolean) deprecated -> use logout() now.

        - Changed xmlBlaster.idl: messageUnit    -> msgUnit
                                  messageUnitArr -> msgUnitArr
          Case does not matter, IDL is case-insensitive when detecting name clashes.
          (Thanks to Michele Laghi)

        - Added a guide line for xmlBLaster core developer.
          See xmlBlaster/doc/developer-guidelines.html

        - Set up xmlBLaster to use Ant as it's build system [James]

        - Added the revolutionary XML based JDBC database gateway. [James]
          see xmlBlaster/src/java/org/xmlBlaster/protocol/jdbc
          see xmlBlaster/demo/javaclients/jdbc

        - Added servlet - browser callback framework (not yet finished)
          see xmlBlaster/src/java/org/xmlBlaster/protocol/http


Changes for 0.73 [Feb.20, 2000]
==============================
        - Use the -P    option to check out, so old directories won't show up any more:
          cvs checkout -P xmlBlaster

        - Migrated to JacORB 1.0 beta 15

        - Reorganized package structure
          org.xmlBlaster.authenticateIdl  ->    org.xmlBlaster.protocol.corba.authenticateIdl
          org.xmlBlaster.serverIdl        -> org.xmlBlaster.protocol.corba.serverIdl
          org.xmlBlaster.clientIdl        -> org.xmlBlaster.protocol.corba.clientIdl
          org.xmlBlaster.client.filestore ->    org.xmlBlaster.protocol.corba.client.feeder
          org.xmlBlaster.engine.xml2java  ->    new added

        - Improved client / server connection negotiation (IOR bootstrapping)

        - Introduced DocBook schema
          Documentation is written in xml, and converted
          to html/pdf etc. with XSL style sheets.
          See example in xmlBlaster/doc/whitepaper/README

        - Further minor changes (see cvs log or cvsweb if you really want to know it)


Changes for 0.72 [Feb.1, 2000]
==============================

        - Support for new QoS tag <ForceQueuing /> in PtP style.
          * Without this flag, a message published to a client which is not
                 logged in throws an exception.
          * Using this flag, the message will be queued by xmlBlaster
                 until the client logs in. On login, all queued messages
                 are sent to the client immediately.

        - Added some simple console input mode, to control xmlBlaster
          Type <?> and <Enter> when xmlBlaster is running to get help.

        - Extended control panel GUI to support
          * dumping of xmlBlaster internal state
          * clearing the logging window
          * toggle from control panel GUI to console mode and back again

        - Bug fixed for subscribe with oid and later publish of this message.
          The BigXmlDom was not updated properly.

        - Added support for <qos><Readonly /></qos>,
          where only the first publish is accepted.

        - Added logging redirection to file,
          use on command line "-?" to query possible parameters.

        - Bug fixed for multiple login (without logout) and PtP messages.

        - Bug fixed for multiple <persistent/> messages.

        - Added missing FileDriver.erase().

        - Two bug fixes with unSubscribe() calls for previous XPATH subscriptions.


Changes for 0.71 [Jan.20 2000]
==============================

        - Added the incredible MOM slide show, see http://www.xmlBlaster.org

        - Added SubscribeKey.java SubscribeQosWrapper.java as client helper
          to help to hide raw XML ASCII strings

        - Added simple persistent store (file based)
          Needs to be configured in $HOME/xmlBlaster.properties

        - Added a xmlBlaster.properties file (should be placed into $HOME).
          see xmlBlaster/xmlBlaster.properties.template as a base to start with

        - Renamed file names from ...QoS... to ...Qos...

        - Added a file feeder PublishFile.java (publishes files as message to xmlBlaster)

        - Added some help to xmlBlaster/doc/programming-guide.lyx (still ugly)

        - Added usage text, invoke at command line with -? option

        - Small changes here and there

