XbRelease notes for xmlBlaster (http://www.xmlBlaster.org) The "r99999" numbers are Subversion revision numbers. Changes for current svn ======================= !!!! Since 2020-06-17 on https://github.com/xmlBlaster-org/xmlBlaster !!!! o 18376 2020-06-10 marcel Changed I_AccessFilter#getMimeTypes() plugins to never return null o 18374,18375 2020-06-04 michele, adrian, marcel Fixed for socket protocol: A client reconnect is guaranteed to receive ConnectReturnQos before pending callback messages are sent o 18371 2020-05-26 adrian Java client: Implemented ClientEntryFactory.createEntry for MsgQueueGetEntry to avoid exception on client queued get() o 18368-18370 2020-05-23 marcel Fixed subscribeQos.getWantInitialUpdate() to send update for re-susbcribes with subscribeQos.getMultiSubscribe() == false o 18362 2020-04-22 michele implemented a new checkpoint 'update.send' which acts once the entries are extracted from the callback queue and are ready to be sent to the client. It currently only acts on non-oneway updates. o 18361 2020-03-11 marcel xmlBlasterAccess.request() avoid memory leak of response topic which is now destroyed directly after response o 18359 2020-03-07 marcel Creating two optional, additional indexes on xbref and xbmeat DB tables create index xbref_xbstoreid_idx ON xbref(xbstoreid); create index xbmeat_xbstoreid_idx ON xbmeat(xbstoreid); Creates only on empty database and for postgresql. o 18356 2019-11-14 adrian ConnectReturnQos delivers now __cbQueueNumOfEntries o 15350 2019-09-24 michele Commented out resetting of xmlRpcClient since causing problems when only communication from callback to client was broken while communication from client to server was still ok o 18348 2019-08-25 marcel Log where xmlBlasterPlugins.xml is loaded from o 18346 2019-06-17 michele corrected error causing the counter to be reset for the replication dumper o 18338 2019-03-15 adrian marcel Incompatible change of DropIfNotDeliverable DropIfNotDeliverableUniqueOnly Only unsubscribe subscriptions which have declared the above plugins in AccessFilterQos Before: All subcriptions were unsubscribed o 18336,18337 2019-03-15 adrian marcel Added convenience methods for AccessFilter and SubscribeQos access o 18333-18335 2019-03-09 marcel htPasswd Session.java now strips pubSessionId if such is inside a securityQos.getUserId() (eg "_myService/1" -> "_myService") SessionName ctor now assures correct subjectId o 18329 2019-01-11 michele In the replication fixed a loop which arose when using prioDeliveryOnInitial due to the fact that low prio messages are kept in the holdback: it now loops at a 1000L frequency o 18323 2018-09-05 michele added the configuration property initialCmdStop to the replication to allow scripts to be executed if you interrupt the initialCmd o 18320 2018-08-21 michele fixed a bug in replication (oracle SQL functions) which caused removal of last byte for base64 encoded columns and forced to use base64 for all text (to avoid XML way of handling whitespaces and other special characters) o 18313 2018-03-22 marcel Extended DispatchStatistic to allow better analysis for security plugins (for pubSessionId>0 only) o 18311 2018-02-22 michele added the possibility to replicate huge transactions in different chunks: now you can specify a maximum amount of operations in one single message even if the transaction is not complete. Also added some logging and fixed issues related to the SDO_GEOMETRY objects o 18309 2018-02-21 marcel Avoid loop in XmlBlasterAccess.java client library default error handler on server exception ErrorCode.USER_SECURITY_AUTHORIZATION_NOTAUTHORIZED o 18307 2018-02-17 marcel Release v2.2.1 Fix blocking 10 Minutes for many slow callback clients Reworked DispatchWorkerPool.java, see Javadoc SocketCallbackImpl.java changed to be a daemon thread o 18298 2018-02-06 michele/marcel Change default DispatchWorker pool thread size from 5 to 20(server side) and 1(client side) Configure client side thread now with parameter "createThreadsClient" o 18296 2018-01-25 michele/marcel Better cleanup of resources on java client side connection to prevent a race condition loop of socket connection to server o 18294 2018-01-12 michele on the replication fixed a loop occurring under specific circumstances in ORACLE when checking if to escape a column o 18290 2017-12-22 marcel Added killSessionNoThrow and killClientNoThrow for JMX NPE Fix in ContextNode.java o 18287 2017-11-08 michele Removed sychronized in SocketUrl which led to a deadlock when multiple threads where creating a SSL Socket o 18286 2017-11-01 marcel Avoid that EvenPlugin triggers a remote cluster node connection if none existed o 18282 2017-10-06 michele added IPv6 support by adding HelperIPv6And4.java and using it when parsing urls. o 18279 2017-08-10 michele fixed DB leak when logging out with more entries than the cache in callback queue o 18277 2017-07-14 michele Replication: added a getter for SqlRow o 18276 2017-07-14 michele handling multiple SSL certificates (if the client has to use another) o 18275 2017-07-14 michele logging all threads in case of a concurrent exception leading to panic o 18273 2017-07-02 marcel QosData.hasClientProperty() added SessionInfo.removeUserObject() added DropIfNotDeliverableUniqueOnly.useTimestampCheck configuration property added o 18270 18271 18272 2017-06-22 marcel Introduced SubscribeQos KEY_BOUNCE_CP = "_bounce:" ClientProperties with this prefix are bounced back with SubscribeReturnQos o 18267 2017-05-29 marcel Fixed DropIfNotDeliverableUniqueOnly md5sum check to avoid updates o 18266 2017-05-19 marcel Fixed race condition in QosData which could lead to ConcurrentModificationException during dead messages o 18264 2017-05-11: fixed ServerDispatchManager.shutdown since it generated an exception on explicit logouts o 18261 2017-05-08: after exception leading to DEAD callback status the transient sessions where reconnected but did not get any updates anymore. This has now been fixed by shutting down the session info so that a reconnect leads to a new session info and thereby a new session o 18257 2017-03-21 Fixed BlockingQueueWrapper.java to not peek any more with danger of loop o 18256 made the callback queue block (default 1 minute) in case the thread pool is exhausted. It can be configured with: dispatch/callback/maxWaitTime 60000 and should be used in conjunction with a customized specific pool size: dispatch/callback/maximumPoolSize 20 o 18255 2017-03-21 Avoid dependency on "org.apache.commons.lang" In JdbcConnectionPool.java replaced StrTokenizer with StringTokenizer o 18253 2017-01-03 Mime plugin DropIfNotDeliverableUniqueOnly supports MD5SUM check MimeAccessPlugin[DropIfNotDeliverableUniqueOnly][1.0]=org.xmlBlaster.contrib.mime.DropIfNotDeliverableUniqueOnly,useMd5Sum=true With useMd5Sum=true the content of most current message is checked if it is identical to previous and suppressed o 18248 2016-11-26 Administrative SessionInfo MsgUnit[] get() added o 18247 2016-11-26 startsWith events added "topicStartsWith/hello.2/event/subscribe" o 18241 Replication: added interface I_StatementInjector to allow own implementations for objects of type OTHER (as for example SDO_GEOMETRY in ORACLE) o 18235 Property.java 2016-08-16 marcel Nicer logging during xmlBlaster.properties lookup" o 18232 email 2016-06-29 Extended to support sending HTML emails "text/html; charset=utf-8" also if mail has attachments o 18229 email 2016-06-08 Extended to support sending HTML emails "text/html; charset=utf-8" o 18228 Mail 2016-06-08 Update lib/mail.jar from 1.3.3 to 1.5.5 https://java.net/downloads/javamail/javax.mail.jar o 18226 SubscriptionInfo 2016-05-27 Exception handling for invalid subscription ID o 18223 Replication: added replication.prioDeliveryOnInitial which allows to send high prio messages during initial phase also on very first time o 18221 Replication: now deletes export file even if the initial update has been interrupted o 18219 StringPairTokenizer CSV parser fix to not loose escaped \n o 18217 now the /tmp/chunks is checked on every operation (and re-created if needed) o 18216 Fixes for StringPairTokenizer parseLine() no handles a single trailing quote " (at very end of line) correctly -> return nothing instead of clone of complete line CSVToMap() has new argument unescapeSeparatorChars which defaults to true -> Unescapes depending on seperator eg "," is unescaped to "," or "%3B" to ";" o 18214 modified error handling on xmlrpc when using xmlscript. o 18212 Replication: added replication.prioDeliveryOnInitial which allows to send high prio messages during initial phase o 18210 XMLRPC fixed issue which leaded to a dead message instead of a Communication Exception when the client side callback driver was shutting down. o 18208 Modified the initializing handling of the xmlrcp Callack Driver o 18199 the property.keepUnresolvedProps has been added to inhibit throwing an exception if a dynamic property value could not be assigned o 18185 Made parser a member variable based on Thierry Legrain's suggestion in SaxHandlerBase o 18193 Added fix for Java client side forced asynchronous mode o 18190 added lazyConnect configuration parameter to ClusterManager. o 18187-18189 Implmented asynchronous sending of xmlBlaster.get() calls The GET is put to client queue and asynchronously sent, the response is returned sync, with a default timeout of 10 sec You need to activate this behaviour with getQos.addClientProperty(GetQos.CP_ASYNC_GET_ALLOWED, true); getQos.addClientProperty(GetQos.CP_ASYNC_GET_TIMEOUT_MILLIS, 10000); o 18185 UnSubscribeQos.CP_ASYNC_UNSUBSCRIBE_WITHOUT_SUBSCRIPTIONID_ALLOWED and connectQos.setTrySyncMode(false) added to allow async client operation even if ALIVE o 18183 connectQos.setTrySyncMode() added to force client side queue always to async delivery Like this publishes are always locally queued and removed after server ACK o 18177 20154-08-27 StringPairTokenizer.java Changed semicolon ; escape to %3B, until 2014-08-27 it was %53 o 18167 2014-06-24 Added SubscribeQos ClientProperty __newestOnly If set __newestOnly=true, xmlBlaster throws away all other messages of this topic which are in the callback queue of the subscriber and delivers only the most current. This use case is useful for mobile clients being off line for longer periods and the topic delivers complete updates of some information. The client don't wants to receive the outdated older updates. Added toString() variants for easier debugging. o 18166 2014-06-17 StringPairTokenizer fix preserveInsideQuoteChar=true with ending apos " StringPairTokenizer fix one \n too much for csv with ending apos " Changes for 2.2.0 [2014-06-09] r18164 (JDK >= 1.5 only) ======================================================= o 18155 StringPairTokenizer fix to convert "%53" to ";" o 18153 added CLIENTPROPERTY_MULTISUB_CHECKQOS to allow recognition of different filters on subscriptions having the same XPATH or topic (without it making two subs with same XPATH but different filter would overwrite eachother o 18149 EventPlugin protect against infinite loop of logging redirects logInfinitLoopSuppressDelayMillis=1000 -> Log messages inbetween one second are silently lost o r18147 made XPathFilter namespace-aware o r18143 SmtpClient.java properties added mail.smtp.socketFactory.port mail.smtp.socketFactory.class mail.smtp.starttls.enable o r18141 JdbcQueue.java: fixed bug wich caused MsgUnitStore size to be wrong after an Overflow o r18131 added XmlRpcCustomProxy to XMLRPC to allow custom non-standard clients to access the XMLRPC protocol directly. Can be used for tunnelling standard xmlBlaster operations such subscribe publish .... to other methods specified by the customer o r18124 Added getType() getVersion() to I_Manager.java If you have coded a security plugin please add those methods o r18108 Fixed LOCAL protocol without callback configuration (e.g. FilePollerPlugin and FileWatcherPlugin) The fallback was SOCKET and the cb ping failed Now the LOCAL client is pinged properly by the server (to allow resource cleanup) o r18077 HtPasswd SecurityQos Added coding to base64 endoce/decode the password (prefix "__base64:"), needed if it contains invalid XML chars '&' and '<' o r18076 XmlScriptInterpreter: Fixed xml encoding of parsed key and qos ('&' and '<' chars) o r18070 JMX reactivateDispatcherThread() method added for error diagnostic of inactive callback thread o r18069 ServerDispatchManager.java Smaller synchronize for this.connectionStatusListeners o r18066 Added stdout and stderr/stack trace redirector to log file activate with -xmlBlaster/stdoutStderrToLogging true or -xmlBlaster/stdoutStderrToLogging true -xmlBlaster/stdoutSuppressSet sometoken;someothertoken -xmlBlaster/stderrSuppressSet sometoken;someothertoken o r18059 Introduced EventPlugin which executes shell command (refactored EventPlugin.java) can be used to kill xmlBlaster on events or do other nice things For an example see xmlBlaster/config/xmlBlasterPlugins.xml.template "execEvents" o r18050 Remove persistent session and persistent subscription on startup if pubSessionId<0 o r18040 on server side - Handle recovery of session on startup for changed passwords in htpasswd - Added cluster forward for administratice commands - SessionPersistencePlugin passes secretSessionId for reuse, else persistent subscribes are not working since fix of r18029 o r18036-r18038 xmlBlasterPlugins.xml does now ${xy} replacement (before there was no such support) You can switch replacement off with the 'replace' attribute, for example: ${socketPort} o r18029 Bugfixes on server side: - client ping throws exception now if the callback listener exists but there is no associated session to it (happens on race conditions between connect and disconnect): now the client is notified on stale session by communication exception. - race condition for disconnect vs re-connect of same client with negative pubSessionId and non-failsafe - for socket and email set proper sessionName on Connection (was empty) o r18021 fixed wrong subId coming from Master's returnQos in cluster environment to the original client's subId o r18015 Fixed StringPairTokenizer#parseLine: if token contains separator and was escaped by apostroph: The first apostroph was sometimes not removed Increased performance by using StringBuilder.setLength(0) instead of creating a new instance o r18013 Fixed reconnect race condition with socket protocol Example for mobile phones: When network goes down (e.g. in a tunnel) and phone reconnects therafter the cleanup of the old,stale connection was 5 sec delayed and the POLLING event came too late for DropOnPolling plugin Changes for 2.1.0 [2011-10-12] r18009 (JDK >= 1.5 only) ======================================================= o r18011 Allowed the change of size for the msgUnitStore in JMX (was not working due to inhability to find the topic name) o R18010 Changed the logic when starting and comparing the queue sizes (now it only allows bigger queues in xmlBlaster.properties) o r18007 C++: Renamed Timeout.h to Timeout.hpp to avoid name clash with C variant C++: Ported to xerces 3.0 (xerces 2.x still works fine) o r18003 Removed deprecated jdbc tests o r17998-18000 charset encoding for byte[] content harmonized, see Constants.toUtf8Bytes et al XpathFilter ported to byte[] handling to be charset neutral o r17990 r17991 Low level performance tweaks (StringBuilder, TimeoutPooled#refreshTimeoutListener o r17985 STOMP and IOR (Corba) protocol are disabled as default setting (see config/xmlBlasterPlugins.xml.template) o r17979 Ported DispatchManager to I_DispatchManager and ServerDispatchManager and ClientDispatchManager. On Server side putPost has an check for inAliveTransition. Plugin Developers must replace DispatchManager by I_DispatchManager o r17976 Changed Behaviour in DomainToMaster: if domain was null then it is assumed to be empty and cluster node could match and chosen before it was ignored (not chosen). o r17974 DbWatcher: fixed a bug which resulted in a NPE when publishing on a fixed topic and having more than one row as the result of the select statement o r17970 Added clientProperty for update messages: Constants.CLIENTPROPERTY_ISINITIALUPDATE which is set by server in case the messages are from history queue during subscribe o r17966 Added clientProperty for publishers _user.ptp.unknownDestination.ignoreSilently" to aovid stack trace if PtP destination does not exist and forceQueing is not set o r17964 cluster routing DomainToMaster: NPE check for empty domain o r17960 Clustering of duplicate subscribes: Also forward to master as the master could not know about it (changed config) o r17958 Fixed XML escape for TopicHandler dump o r17955 API behaviour change: unSubscribe does not throw exception for XPath without matches anymore o r17952 You can now send specific exceptions back in your security plugin Session#isAuthorized method via dataHolder.setExceptionToThrow(myXmlBlasterException); return false; instead of the default ErrorCode.USER_SECURITY_AUTHORIZATION_NOTAUTHORIZED o r17947 Fixed XPATH unSubscribe, the parent subInfo was not destroyed" o r17944 DropIfNotDeliverableUniqueOnly and DropIfNotDeliverable plugin Fixed to work with XPATH properly o r17942 JMX added method getRootSubscriptions to get the XPATH handle o r17940 C client for Windows: Reconnect polling faster o r17924 Added DB2 v9.7 DDL statements and support (not well tested) o r17918 Renamed embeddedObjectsToXml to I_Queue.embeddedQueueObjectsToXml, but implementation still uses map like acces and looses priority o r17914 Fixed NPE in dumpEmbeddedObjectsToFile() call via JMX o r17913 LowMemoryDetector now without reflection o r17893 Removed concurrent.jar dependendy to EDU.oswego.cs.dl.util.concurrent.* and replaced by java.util.concurrent.* org.xmlBlaster.util.ReentrantLock.java (EDU.oswego.cs.dl.util.concurrent.ReentrantLock) -> java.util.concurrent.locks.ReentrantLock EDU.oswego.cs.dl.util.concurrent.LinkedQueue -> java.util.concurrent.LinkedBlockingQueue EDU.oswego.cs.dl.util.concurrent.PooledExecutor -> java.util.concurrent.ThreadPoolExecutor EDU.oswego.cs.dl.util.concurrent.BoundedLinkedQueue -> java.util.concurrent.LinkedBlockingQueue EDU.oswego.cs.dl.util.concurrent.Mutex -> java.util.concurrent.locks.ReentrantLock (Caution: Mutex was NOT reentrant) Removed backport-util-concurrent.jar edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor -> java.util.concurrent.ThreadPoolExecutor etc. o r17891 ConnectQosSaxFactory.java fixed to handle
subtags like o r17887 Creating small Java client jar xmlBlasterClient.jar 'build -DJVM.source=1.6 -DJVM.target=1.6 dist-client-mini' Refactored to have smaller java client library with SOCKET support without concurrent.jar or joda-time.jar dependency o r17866 - r17877 Connection pings: Using now a ThreadPool to ping remote side Avoid delayed pings for others if one callback client is blocking o r17860 StompDriver: Fixed leak, better logging o r17859 EventPlugin: Added addClientProperties to configure which ConnectQos clientProperties are forwarded with __sys__OnlineStatus" o r17853 Extended check if shutdown on SQLException (Main.java) o r17847 Bugfix for cluster callback tunnel (bug introduced in r17746 RequestReplyExecutor.java) A tunneled publish was not accepted anymore by client o r17845 Bugfix for cluster callback tunnel (bug introduced in r17676 ClusterNode.java) Intruced Global clone again for dummy connect to own server o r17841 Bugfix SubjectInfo.getNumSessionsFix() NullPointerException was rare synchronized gap o r17836 Introduced subscribe mime plugin 'DropIfNotDeliverableUniqueOnly', the details are in DropIfNotDeliverableUniqueOnly.java javadoc Activate in xmlBlaster.properties: MimeAccessPlugin[DropIfNotDeliverableUniqueOnly][1.0]=org.xmlBlaster.contrib.mime.DropIfNotDeliverableUniqueOnly o r17831 fixed C++ compile error for xerces 3.x by Adrian, but xerces 3.x not supported (buggy in our integration) Please use xerces 2.x o r17820 fixed exception handling when sending update after connection lost on XMLRPC o r17813 Introduced ErrorCode.USER_UPDATE_DEADMESSAGE, see http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.update.html o r17787 Stomp client integration see http://stomp.codehaus.org/ for easy integration of any clients like the iPhone. o r17776 htpasswd authorization: Supporting now topic names starting with specific token: WeatherProxy:yZxMiqIKTc:connect,disconnect,publish("startsWith:weather."),subscribe("startsWith:weather."),unSubscribe o r17773 Extended Security plugin interface to be able to intercept exceptions thrown back to clients Added new method I_Session#interceptExeptionByAuthorizer(): Incompatible API change in I_Session! Add a dummy implementation and return null to have original behaviour (in case you have your own security plugin) o r17770 HtPasswd Authentication/Authorization: If a loginName matches exactly only this is evaluated before all other matching entries where used to find a valid password o r17768 Fixing gap that a quickly reconnecting client leads to missing toPolling() toAlive() firing cylce (race condition) Had impact for cluster setup with callback tunnel Changes for 2.0.0 [2009-09-09] r17766 (JDK >= 1.5 only) ======================================================= o r17755 Incompatible java client API change: Added I_ConnectionStatusListener#toAliveSync which tells the listener as soon as all queued back client side messages are delivered to the server and further server calls are synchronous (the returned data is from the real server). The compiler will tell the places to add this method to your code. o r17749 Dropped Active X support via JDK bridge. Please use the new C backed C# code. o r17744 fixed XmlBuffer also for the QueryKeyData o r17739 NPE for set administrative command (CoreHandler.java) o r17737 XmlBlasterAccess.java changed behaviour: On toDead() the connect() method now throws a XmlBlasterException of type COMMUNICATION_NOCONNECTION_DEAD o r17730 added flag mail.messageIdFileName to allow to change the filename for the message id in the mail protocol o r17724 fixed what did not have been completely fixed on r17703 o r17722 keys in the callbackMap are not xml encoded. subscriptionIds coming from the server are encoded. This way the entry was never found in the map and it resulted in invoking the connection general listener instead. This has now been fixed. o r17720 MsgInfo: fixed errror which resulted in a forced default configuration if toLiteral was invoked before having configured the associated parser" xmlBlaster/util/xbformat/MsgInfo.java o r17711 Added additional features to xmlrpc (xmlScript and inhibit CDATA in content) o r17703 Bugfix: now subscriptions done with a negative sessionId are throwing an exception and are not queued on the client side when the server is not available, this fixes a bug which resulted in a loop when the xmlBlaster was available again. o r17692 Bugfix: SAX parser character seems to sometimes be not resetted (after a exception) which can lead to undefined behaviour o r17685 Update to quartz scheduler v1.6.5 o r17681 Added tunnelling of callbacks on the xmlrpc protocol. This allows to pass requests through a proxy, using https either all the way between client/server or to use an intermediate reverse proxy which converts the https protocol to http. Compression can also be used. o r17673 Added Security.DefaultPluginType=hwpasswd configuration possibility o r17671 CallbackAddress.java fixed envPrefix SOCKET->XMLRPC o r17655 ported xmlrpc protocol to version 3 (3.1.1) and added possibility to wrap contents in CDATA. o r17643 EventPlugin sending email always from separate timer thread o r17641 fixed subscriptionId which was wrong if XmlBuffer modified its content to make it xml compliant. Aware for XPATH subscribes which are escaped: If old client is updated to new client: Server side queued messages could be wrong dispatched in client code if subscribe with client side dispatcher is used o r17633 Removed org.apache.commons.codec.binary.Base64 dependency o r17630 Bugfix: fixed bug in email protocol when the requestId was not a long (was apparently introduced 2008-06-01) o r17619 Bugfix: 2008-12-10 Bug introduced with r16911 ConnectQosData.java 2008-05-03 17:35:04 Native clients (protocl=LOCAL) without callback server configured (xmlBlasterAccess.connect(qos, null)) can't login to xmlBlaster anymore, this is for example the FilePollerPlugin o r17598 VERY IMPORTANT CHANGE with xmlBlaster persistence layer, PLEASE READ THIS! The default configuration now uses the new JdbcQueue database persistence layer with three tables 'xbstore', 'xbref', 'xbmeat'. If you have data in the old schema 'xb_entries' they are NOT used. In case you need the old data please read http://www.xmlblaster.org/xmlBlaster/doc/requirements/queue.jdbc.html o r17581 C-client library: Introduced Timestamp.c for thread safe requestId counter CallbackServer responseListener handling is now mutex protected cb->removeResponseListener added as MsgRequestInfoP is on stack (still race condition is possible!!!) o r17576 Changed I_Queue interface to use List instead of ArrayList o r17575 New persistency: All DB access is going now over XBDatabaseAccessorDelegate o r17564 Fixed ClassCastException in MsgQueuePublishEntry.getReceiver() o r17553 C++ client library: Bug fix for not calling postSend() in case of catch(...) and not handled by client code o r17532 C-client library: Fixed pthread_t initialization in Timeout.c (used by new HelloWorld4.c only) Fixed compiler warnings for intel icc Changes for 1.6.4 [2008-11-18] r17524 'JDK14-GoodBye' ===================================================== o r17427 JDBC Database layer: Ported StorageId to new XBSTORE table, change for xb_entries (revert to r17426 on problems) o r17377 Sending cluster connection info with heartbeat XML mail POLLING... o r17372 Cluster SSL callback tunnel: fixed client side connectionState transition Added EventPlugin support for cluster client connectionState: "client/[subjectId]/session/[publicSessionId]/event/connectionState" o r17366 Added DDL for SQLServer 2005 and 2008 for new storage plugin 'JdbcStorage[MicrosoftSQLServer2005]=org.xmlBlaster.util.queue.jdbc.JdbcQueue,...' Does not support 2000, you would need to configure TEXT and IMAGE instead of VARCHAR(MAX) and VARBINARY(MAX) o r17358 Changed I_Map interface by adding a new method updateCounters o r17351 Changed ping to check database with new created connection, as Connection from pool could be stale e.g. com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: socket write error o r17347 Deadlock fix in SessionInfo.java Removed synchronized to prevent dead lock, see discussion with Bal�zs P�ka 2008-10-28 o r17340 C-client library: Supports now fail safe reconnect polling and client side ping o r17302 Administrative control to block client logins and reset the connection of a client (jconsole) See jconsole: subject: blockClientLogin, blockClientAndResetConnections See jconsole: blockClientSessionLogin, disconnectClientKeepSession o r17291 C# client: Fixed registerProgressListener, clean up directory structure, monodevelop added missing files o r17285 Checkpoint plugin: added client-cluster check point 'client.publish.enter'. o r17272 FileWatcherPlugin: can now be run standalone (for that getNativeConnectArgs() has been removed since it is already invoked in GlobalInfo). o r17261 C client library: Checking for null pointer in gethostbyname because of iPhone o r17231 C client library: Ported to iPhone 3G, on Mac OSX compile with 'build -Duse-gcc=true c' uses define __MacOSX__. In XCode please set -D__IPhoneOS__=1 compile define. o r17218 cluster setup: if circular loop (slave -> master -> same slave) an exception is thrown by master already Switch back to old behaviour with cluster/allowDirectLoopback=true For publishes in Pub/Sub and PtP mode. o r17215 First beta of Micheles new JDBC storage layer for xmlBlaster, uses three tables XBSTORE, XBREF, XBMEAT Activate in xmlBlaster.properties with JdbcStorage[Oracle]=org.xmlBlaster.util.queue.jdbc.JdbcQueue,\ ... o r17176 socket driver: Fix to not ignore 7200000 configurations from clients in ConnectQos section o r17173 Handle unparsable MsgUnit, e.g. for invalid Qos xml markup in case of !ConnectQos.allowExceptionsThrownToClient() o r17157 GlobalInfo: the parameter replacement is now done before AND after calling doInit (the extention's init method) o r17149 Passing through type/version from xmlBlaster.properties to htpasswd.SecurityQos, like this we are able to reuse htpasswd.SecurityQos.java for other security plugins which have a loginName/password approach (client side) o r17145 GlobalInfo: the clash jdbc.drivers and JdbcDriver.drivers has now been fixed: you can set either the one or the other. o r17141 Replication: fixed handling of simultaneous operations. Note that also new statements shall be used as defined in the replication demo (demo/javaclients/contrib/replication). o r17138 Replication and DbWatcher: when sending multiple transactions in one message the 'maxMessageSize' limits the maximum size (does not break within the same transaction). Also the 'alreadyProcessedFlag' is not sent nor evaluated anymore. o r17118 Java client library: Synchronous request() Added possibility to specify topicId for request/reply with __responseTopicId or __responseTopicIdPrefix client property o r17102 Java client library: Fixed too frequently client reconnect polling if server is in RL4 o 171001 Fixed potential race condition where SOCKET HandleClient was not removed from SocketDriver Set o r17097 Added "__UTC", the current timestamp of the client environment in ISO 8601 notation, to be send by clients on connect with ConnectQos clientProperty This allows to guess the server the offset for clients having misconfigured time Is currently written as remoteProperty to the clients session for human usage (e.g. to compare log file entries) Added joda-time-1.5.2 Apache License http://joda-time.sourceforge.net/ o r17093 C++ client library: Implemented request/reply pattern, see xmlBlaster/testsuite/src/c++/TestRequestResponse.cpp Added administrative flag to PublishQos o r17082 CheckPoint new logging point "publish.enter" o r17073 CheckPoint now uses apache-log4j-1.2.15 http://logging.apache.org/log4j/1.2 via commons-logging 1.1.1 http://commons.apache.org/logging o r17054 MsgErrorHandler: Handles now incoming publish requests as well if configured by ConnectQosServer.allowExcpetionsThrownToClient=false by security plugin Useful for dumb clients which can't handle exceptions (like mobile phones) API for I_MsgErrorHandler#handleErrorSync changed to return string DeadMessageDumper receiverSubdir=true: Creates now subdirectory with receiver name o r17049 C client library: Bugfix in strcatAlloc() which used wrong SIZE for strncat0() o r17036 PHP Client xmlBlaster/demo/php/xmlrpc/README Ported to PHP 5 and phpxmlrpc 2.2.1 http://phpxmlrpc.sourceforge.net/ o r17028 Cluster node client: If cluster client sending of publish fails it is dumped and removed from connection queue o r17025 ClientErrorHandler: Changed default behaviour to only shutdown on internal problems for async message sending failures (before for all none communication errors) o r17010 Sessions from persistence on xmlBlaster startup go to POLLING directly Cluster back tunnel now finds XmlBlasterAccess again after gateway restart o r17004 Fixed SOCKET driver to work on AddressServer clone instead of on the SocketDriver#addressServer singleton instance o r17002 AjaxServlet: Limit with MaxUserSessions (configurable via JMX) Added internationalization of exceptions e.g. put ajaxServlet_de.properties into the classpath of war Fixed session cleanup for error cases o r16985 AjaxServlet: Banned browser IP adresses with jconsole Added exception return to browser o r16955 SOCKET cluster: Protecting against multiple thread creation Notify acceptRemoteLoginAsTunnel shutdown (to avoid pinging) Invariant JMX cluster node name o r16941 SOCKET Java client library: Immediate notify socket EOF to Java client library, now pingInterval=0 works as well (for none blocking cases) o r16934 Bugfix: Closing socket on server side delayed to allow exception to reach the client Bugfix: On Java client side avoid calling ClientErrorHandler when the thread is sync from client code Throwing now COMMUNICATION_NOCONNECTION_DEAD instead of USER ErrorCode when no server and no fail save o r16925 Bugfix: On reconnect update persistent session store with new ConnectQos API change: Addd I_ClientListener#sessionUpdated(ClientEvent e) event to achieve this Bugfix: I_Map#change() fixed to do the change in MapPlugin and PersistentPlugin I_Map#change() supports now entries with different sizes o r16909 Java client library: Reject publish() etc. calls when state is DEAD o r16905 EmailDriver removed duplicate getAddressServer() o r16900 Updated to hsqldb_1_8_0_9 o r16897 First hack to tunnel callback of cluster master by re-using the slaves connection o r16888 Java: Fixed hsqldb shutdown in JdbcConnectionPool.java to release .lck file if (this.managerCount < 1) shutdown() to be discussed o r16885 Cluster code refactored o r16870 Cluster: Fixed parsing connect qos in cluster environment (supports now attributes) Renamed NodeInfo to NodeConnectQos o r16870 Java: Refactored protocol API connect(): removed explicit AddressServer argument (was redundant) Fixed SessionInfo.updateConnectQos() so the new connectQos is available during processing Passing now isAsync mode flag to avoid looping connection if connectQos is from client queue o r16838 Java: Fixed xmlBlasterAccess.leaveServer() client side memory leak o r16830 Clustering: Extended RoundRobin to properly handle domain routing with empty domain (support for acceptDefault and acceptOtherDefault) o r16804 Singleton approach to avoid race condition which could create two SessionInfo instances Avoid max number of sessions check when session is loaded from persistency during startup o r16817 Checkpoint plugin: Added client side Checkpoint client.publish.ack (used for cluster tracing) o r16809 Added extended JMX access to cluster configuration without shutdown (transient changes only) Changed to thread safe re-configuration during operation o r16803 Bugfix: Qos XML creation escaping properly illegal XML characters StatusQosSaxFactory/DisconnectQosSaxFactory/QueuePropertyBase/QueryQosSaxFactory/MsgKeySaxFactory o r16783 Bugfix: SOCKET with XmlScript markup (instead of XBF) configures now correctly from xmlBlaster.properties for callbacks and responses o r16780 Bugfix: Topic life cycle Changed topic creation state change to go directly to ALIVE on publish and not go over UNREFERENCED as this could trigger a DEAD inbetween if destroy delay is configured to 0 (or a small value) o r16779 Bugfix: DropIfNotDeliverable mime plugin: Fixed possible dead lock situation o r16766 Bugfix: A SaxParseException of a message QoS left the MsgQosSaxFactory in inconstent state and operation of xmlBlaster is broken as follow up parses can swallow QoS tags like o r16763 Force AjaxServlet to UTF-8 processing to support e.g. Umlauts o r16762 Servlet 2.4 API copied from apache-tomcat-5.5.23/common/lib" servlet.jar o r16757 The EventPlugin now sends emails asynchronously from a separate thread decoupled over a RAM based producer/consumer queue. This is to protect the xmlBlaster core against blocking or slow SMTP agents. See http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.events.html (mail.sendAsync) See http://www.xmlblaster.org/xmlBlaster/doc/requirements/protocol.email.html (asyncSendQueueSizeMax) o r16744 Incompatible change of security plugin I_Session: 1) Added method 'public ConnectQosServer init(ConnectQosServer connectQos, Map map)' You need to add a dummy implementation if you use an own security plugin: public ConnectQosServer init(ConnectQosServer connectQos, Map map) throws XmlBlasterException { return connectQos; } 2) Removed unused method public String init(String securityQos_literal) 3) The method public boolean verify(I_SecurityQos securityQos) can now throw an XmlBlasterException Session configuration in ConnectQos: maxSessions and clearSessions can now be controlled in a security plugin to behave for pubSessionId<0 and pubSessionId>0 differently. Remote configuration with ConnectQos is not yet implemented. See ConnectQosServer#setSessionLimitsPubSessionIdSpecific(boolean) o r16738 Extended remoteProperty handling from clients (similar to existing jconsole functionality) Create a remote property: java javaclients.HelloWorldPublish -oid __sys__remoteProperties -connect/qos/clientProperty[__remoteProperties] true -connect/qos/clientProperty[myProperty] AAAAAA -session.name OTHER/1 Access it: java javaclients.HelloWorldGet -clientProperty[__sessionName] OTHER/1 -oid __sys__remoteProperties Destroy it: java javaclients.HelloWorldPublish -oid __sys__remoteProperties -clientProperty[__sessionName] OTHER/1 -content clear o r16729 Added database dead lock recovery, on deadlock retry once. Added delegate for DB access to retry on dead lock situation (seldom case with SQLServer) Globales Setting (xmlBlaster.properties) to have old behaviour: xmlBlaster/useJdbcManagerDelegate=false Jdbc specific setting (only if above is true, else ignored) in JdbcStorage[MicrosoftSQLServer]: maxExceptionRetries=2 retrySleepMillis=0 Performance tuning hint: [ create index IX_DATAID ON XB_ENTRIES (XB_dataId) - improvment not tested] (The primary key must remain a compound key of xb_dataId and queueName) create index IX_QUEUENAME ON XB_ENTRIES (queueName) create index IX_CB_QUEUE ON XB_ENTRIES (prio DESC, dataId ASC) (Oracle, PostgreSQL) create index IX_CB_QUEUE ON XB_ENTRIES (prio DESC, XB_dataId ASC) (SQLServer) create index IX_DURABLE ON XB_ENTRIES (durable) o r16722 Persistence queue/msgstore performance tuning Reduced query interaction to 1/3 on startup Cleanup for transient entries in one select on startup Reload of cached numOfEntries, numOfPersistenEntries and numOfBytes and numOfPersistentBytes is now done with one select o r16720 EventPlugin: Added $_{loginName} and $_{pubSessionId} support o r16718 Replication: Strings containing control chars (ASCII < 13) are now base64 encoded o r16712 EventPlugin: Sending now ConnectQos-remoteProperty for callbackState events o r16710 EventPlugin: Sending now ConnectQos-remoteProperty preparsed in Login/Logout event clientProperty o r16708 EventPlugin: Added recursion detection for subscribe/unSubscribe events Added clientProperty '_url' for XPath use case o r16706 EventPlugin: Added client properties to event from SubscribeQos and UnSubscribeQos o r16702 Fixed MsgUnit - Qos XML markup: escape not allowed chars o r16693 Fixed XPath query multi threading bug, reported by John Horner 2008-01-12 o r16689 Added recursive flag to filewatcher (to scan directories recursively). o r16676 C++ client library: Added ~ConnectQosData() because of crash on MacOSX o r16674 When an exception occurs in the update method it was converted to a COMMUNICATION and the original information was lost: now it is passed as embedded. o r16660 Catching client side exceptions of type other than user.* and communication.* and converting them to "user.update.internalError" o r16657 Fix to not shutdown xmlBlaster for severe client side exceptions during callback Problem could not occure for Java or C++ clients o r16654 Dead message generation: Now detecting 'isErrorHandled' specific for each queue instance (and not only for each MsgUnit). o r16652 C++ Implemented same I_PostSendEvent error handling as in Java Changes for 1.6.2 [2007-12-03] r16646 'Openroads' ================================================= o r16639 Implemented I_PostSendListener for java clients and server to get notification on *asynchronous* send messages from queue: 1. postSend() delivers the ReturnQos 2. sendingFailed() delivers the Exception Fixed java client: Now toDead() is called for all erroCodes despite communication The previous code called toDead() only for user exceptions. o r16630 C++ client now compiles with xerces 2.8 (64bit or 32bit) o r16621 The FileWatcher and FileWriter can be managed by the HTML based replication monitor (similar to the database replication) o r16621 FileWatcher plugin for Java (supporting streaming mode for huge files) http://www.xmlblaster.org/xmlBlaster/doc/requirements/contrib.filewatcher.html o r16614 FileWriter plugin for Java and C++ (supporting streaming mode) http://www.xmlblaster.org/xmlBlaster/doc/requirements/contrib.filewriter.html Note: Incompatible rename from Reveiver to FileWriter (attrib names changed as well) o r16601 Added Scheduler Plugin: it is now possible to define operations to be scheduled. see http://www.xmlblaster.org/xmlBlaster/doc/requirements/contrib.scheduler.html o r16586 Added ServerScope (if any) object to Global when cloning Global o r16582 Added streaming publisher (which chunks big messages into smaller chunks) o r16561 Memory leak fix for EventPlugin, it was introduced about r16357 (EventPlugin notification when queue threshold is reached) o r16532 Logging with XbFormatter: Changed to use ISO 8601 date and time for logging o r16531 Added Checkpoint plugin to support tracing the message flow with customized log files See http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.checkpoint.html for usage details (and xmlBlasterPlugins.xml to activate it and logging.properties to configure amount of details logged). See javadoc of xmlBlaster/src/java/org/xmlBlaster/util/checkpoint/Checkpoint.java o r16528 Adjustable SmtpClient mail timeout (see xmlBlasterPlugins.xml example) 3600000 600000 o r16518 C++ Fixed putToQueue(): Now always if POLLING or other messages in queue o r16510-r16514 C++ I_PostSendListener introduced You can now be notified after a message from client side tail back queue has been send to xmlBlaster (e.g. to access the real PublishReturnQos) See PublishDemo.cpp postSend() as an example o r16506 C++ Timestamp: Fix for time going backwards o r16500 C++ RamQueuePlugin: Fixed typo which prevented sending limited maxNumOfEntries r16501 C++ ConnectionsHandler: Each tailback msg send from client queue is now instantly removed from queue (no bulk acks) o r16493 Dead lock fix between callback ping and reconnect thread (reported by Xavier) Now all threads enter the syncs hierarchical over the DispatchManager o r16471 contrib: incompatible interface change in I_ResultCb: needed to make alter table recreate the trigger on the master side of a replication o r16469 removed double spanning of poll timer when going from ALIVE to POLLING o r16467 Replication: fixed in trigger timestamp is always using '.': was using locale punctuator resulting in an exception on the writing side. Also made writer more tollerant (would handle a comma now) o r16457 Continue loading sessions from persistence even if one fails (e.g. because of changed authentication) TODO: Implement generic approach to handle such sessions (security plugin should grant access if coming from persistent store). o r16449 JMX control - Added SessionInfo getCbQueueBytes() and getCbQueueBytesCache() These are the bytes of the refence objects only (not containing the message itself) - Fixed allowedToReconfigureTopicAndFixWrongLimits() typo at: if (currentMaxEntries > historyProps.getMaxEntries()) - Added reportMemoryOverview() and reportMemoryOverviewToFile(String file) on node level - Added I_Map: getNumOfCachedEntries and getNumOfCachedBytes Configuration of persistence/msgUnitStore/maxEntriesCache persistence/msgUnitStore/maxEntries persistence/msgUnitStore/maxBytesCache persistence/msgUnitStore/maxBytes and the history queue equivalents is now enforced on restart of xmlBlaster during persistent topic recovery Bugfix of checkConsistency(I_Map, fixIt, reportFileName) which reported leaks which probably weren't. o r16444 removed synchronized in CacheQueueInterceptorPlugin.clear since it caused a deadlock when clearing a callback queue and publishing messages at the same time o r16442 Fixed to avoid remote DNS hostname lookup if hostname given is raw IP Added to avoid DNS localHostname lookup if localHostname given is raw IP o r16430 EventPlugin: Added missing support for wildcards in event type callbackState client/*/session/*/event/callbackState o r16416 Bugfix XmlScript over SOCKET: Fixed to use configured parser on callback ping o r16411 Bugfix: Fixed XmlScript over SOCKET handling for incoming EOF See http://www.xmlblaster.org/xmlBlaster/doc/requirements/protocol.socket.html#script Changes for 1.6.1 [2007-08-02] r16408 ===================================== o r16405 Bugfix: Added automatical conversion to from Global to ServerScope for native publish calls to RequestBroker This had for example inpact when a EventPlugin configuration without a configured PublishQos was used. o r16404 Added DropIfNotDeliverable mime plugin: Drops messages if subscriber is in POLLING state See xmlBlaster/src/java/org/xmlBlaster/contrib/mime/DropIfNotDeliverable.java javadoc for details o r16400/16402 Performance fix: If more than ~1000 clients connect the login got very slow This scales now to several thousand clients without performance degradation o r16387 C-client library: Fixed SIGSEG and memory leak when the system has no more threads available Recovery of such a situation is now stable Changes for 1.6 [2007-07-25] r16384 =================================== o r16378 Fixed cluster swapping which could lead to 'MethodName: The given methodName=msg_xml is unknown' o r16371 C++ extension: Added xmlBlasterAccess.receive(oid, maxEntries, timeout, consumable) to peek/take messages from server side queues (history, subject and callback queue) see http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.qos.queryspec.QueueQuery.html o r16359,16360 acceptWrongSenderAddress is now configurable using JMX/jconsole see http://www.xmlBlaster.org/xmlBlaster/doc/requirements/admin.errorHandling.html why you could need this o r16357 EventPlugin notification when queue threshold is reached o r16339 Added jconsole/JMX support to increase on a running system the maxNumOfEntries and maxNumOfBytes of a map (msgUnitStore), the changes are persistently and durable after a xmlBlaster re-start. Added threshold alarm events (e.g. 90% full) for msgUnitStore, see http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.events.html o r16332 fixed excessive CPU Usage due to short loops for logs in Execute (native cmd line invoker) o r16331 fixed hole which could generate a meat not found in postHandleNextMessages. Would only happen when using the I_MsgDispatchInterceptor plugin. o r16323 Added BlockingQueueWrapper: a wrapper around I_Queue to invoke blocking peeks o r16315 Fixed JDBC ping for MSSQLServer Fixed performance bottleneck when RAM part of CacheQueue is full o r16312 C client library avoids DNS lookup if raw ip4 address given o r16309 Added server timestamp (ISO, UTC, nano precision) to ConnectReturnQos: 2007-07-09 10:36:38.189000005Z o r16307 Extended C# client library for java like System.currentTimeMillis handling with C# DateTime o r16292 ClientProperties of ConnectQos can now be copied to remoteProperties, see See: http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.connect.html#remoteProperty o r16264 SocketUrl: changed the Exception to be a communication for cases where the host is temporarly unavailable. If you have a positive SessionId it will go in polling (as opposed to before where it went to dead) o r16283 Replication: Added property 'dbWriter.quoteColumnNames=false', set to true for DB2 host sinks (e.g. "COMMENT") o r16280 Replication: Bugfix in SqlRow.java to prevent double base64 encoded client properties for renamed columns o r16273 Added events for queue thresholds (subject- callback and history queues) o r16263 Contrib: changed I_Info.putObject implementations when passing null they now remove the entry as specified in javadoc o r16256 Replication: writer now uses and passes a cloned row (SqlInfo does not change). Invocation of I_PrePostStatement even for CREATE, ALTER and DROP. Added Attributes for descriptions created by metadata. o r16249 C client library, WINDOWS only: Bugfix: Added WSASetLastError(0) o r16243 Replication: Added configurable XSL transformation on DbWriter side, e.g. 'dbWriter.xslTransformerName=mydbtrans.xsl' Added readOnly flag when using SpecificReadonly o r16241 Replication: Added Oracle -> DB2 replication support o r16235 Replication: fixed msg counting when sending multiple transactions in one message o r16233 added reconfiguration of topic properties possible by re-sending an administrative message o r16231 embedded XmlBlaster: fix when specifying an alternative properties file o r16230 Parsing of xmlBlasterPlugins.xml has been modified to allow re-use of same attribute parser o r16222 Replication: Added readonly variant on source database with classical DbWatcher approach Added configurable 'dbinfo.url' to force another database for DBINFO table o r16207 Fixed replication loading of specific jdbc.drivers from specific properties files o r16203 Fixed admin.event plugin to escape illegal XML entities like '&' in send notification o r16195 Fixed PersistenceCachePlugin.getAll(I_EntryFilter) which could lead to duplicate intercept calls o r16193 Fixed topicId lookup in checkConsistency() o r16187 Fixed cluster client queue to have unique storageId Use -xmlBlaster/cluster/useLegacyClientQueueName true forces old behavior o r16185 Fixed using ServerScope in ConnectQos which used wrong ServerEntryFactor on client side o r16182 QueryQosData.java: Escape subscriptionId if it contains apos to avoid invalid XML o r16181 ServerEntryFactory.java: Changed to ignore case of type during persistence recovery o r16178 fix: failsave + authentication errors now kill the connection (they went in polling before) o r16170 EmbeddedXmlBlaster: changed the way the global is created since the embedded would otherwise use the default xmlBlaster.properties o r16168 Updated to ant-contrib/cpptasks from svn 2007-05-20 To try to resolve C/C++ compilation/runtime problems with Windows crazy manifest approach o r16164 C++ client library: Fixed generatedSubscriptionId to escape ' quote to prevent malformed QoS XML o r16145 added to get missing code to retrieve also props with no prefix (for example java.version) to Global o r16134 The setting 'java -DxmlBlaster/initClassName=mypackage.MyClass ...' allows to load an initial class instance directly after Main(String[]) o r16130 Extended SOCKET protocol plugin to immediately forward the EOF on client disconnect to support callback configurations with switched off pinging (e.g. mobile phones with high cost GPRS/UMTS). o r16109 Added switch -xmlBlaster/jmx/support false or -xmlBlaster/jmx/createSecurityManager false to support embedded EJB3 jboss plugin without loosing JMX jconsole support o r16078 Update to HSQLDB 1.8.0.7 from September 2006 o r16075 The SOCKET connection transports the client side IP address to the security plugins Extension by Xavier Roques Changes for 1.5.1 [2007-02-26] r16061 ===================================== o r16059 Bugfix: The queue entry reference counting could lead to leaked msgUnit entries on I_Queue.clear() calls o r16057 Removed invocation recorder, it was unused and deprecated o r16051/r16053 Bugfix: Support for r15953 subscriptionId in cluster environment o r16050 Prevent clients from using same login name as server cluster.node.id o r16045 C client library fix for Win32 and WinCE You can now pass raw IP address without DNS lookup o r16022 Bugfix C client library The disconnect is not oneway (see protocol.socket specification), this bug was introduced in r15972 2007-02-07. Fixed memory leak for unexpected reveived messages (does not happen in normal operation). Increased max. waiting on pending update threads to 10 sec (during shutdown). o r16022 Bugfix The new SessionName '/session/' tag introduced a subtle bug which could lead to failed reconnect on same session. This bug was introduced with revision r15523 o r16021 Bugfix & extension for administrative 'event/callbackState' It now fires on the initial login a "ALIVE" or "POLLING" event The subjectId and/or the publicSessionId can now be a wildcard "*". The connect and disconnect event now support wildcarded subjectId. See: http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.events.html o r15994 Added C and C++ project files for eclipse and VC++2005 See xmlBlaster/src/c/README and xmlBlaster/src/c++/README See xmlBlaster/demo/socket/README and xmlBlaster/demo/c++/README o r15980 C++ client library: Partially added support for WINCE Porting to MSXML and fixing errno.h in omnithread is missing o r15967-r15972 Mac OSX c client library compilation patch Changes for 1.5 [2007-01-28] r15961 =================================== o r15953 C++ and Java client library now create client side subscriptionId if pubSessionId>0 and multiSubscribe=false (fail safe operation). Like this we avoid returning a temporary subscriptionId if a subscribe is queued on client side (during POLLING). o r15949 made volatile all variables which are used in a double checked locking idiom (should be safe in new MEM Model as JDK 1.5) o r15934 Fixed java client library for changing client side IP address Reconnect is now supported. Security fix which allowed hijacking the callback address o r15930 Dead letter is now not containing ... anymore Is send already QoS o r15906 Switched off dynamically loadable plugins as a default setting. See http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.runlevel.howto.html#dynamic o r15866 added the possibility to disable going to polling if a response timeout comes from a ping: use dispatch/callback/stallOnPingTimeout=true or/and dispatch/connection/stallOnPingTimeout=true. This property is passed in the AddressBase o r15851 C# client: Csharp support extended o Supporting C and C++ clients as unmanaged code on Windows CE and normal Windows o Supporting C# as managed code on Windows CE and normal Windows and Mono/Linux See http://www.xmlBlaster.org/xmlBlaster/doc/requirements/client.c.windowsCE.html See http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.csharp.html o r15794 C++ client: Changed PublishReturnQos and SubscribeReturnQos in case of client side queueing to be identical to java client behaviour: state id="OK" (previously it was "QUEUED") state info="QUEUED (previously it was "") See http://www.xmlBlaster.org/xmlBlaster/doc/requirements/interface.subscribe.html#return o r15750 C client: Full Windows CE port (including pthreads 2.7.0 and zlib 1.2.3) See http://www.xmlBlaster.org/xmlBlaster/doc/requirements/client.c.windowsCE.html o r15742 C client: First runnable Windows CE port (without pthreads) Added: -DWINCE compiler define Open: Is there any getenv() for Windows CE?, how to handle errno.h? Changed: -DDLL_BUILD to -D_WINDLL __FreeBSD__ code in helper.c is probably broken (needs testing) o r15735 dispatch statistics are cleaned up on the client side on reconnect also, this fixes a failing reconnect in case the update had activities, the connection ping detected a stale connection and the update ping did not return. o r15733 Fixed introduced error when removing entries from queues where the metadata returned 0 for maxNumSequences. o r15727 C client: Finished port to VC8 with support for VC7 and VC6. o r15713 Cb ignores ping failure in case an update is blocking (no activity). On the client side however an exception is thrown to allow a reconnect o r15697 C++ client: Added client side queue accessor to xmlBlasterAccess->getQueue() o r15684 Fixed I_Queue.clear() of cache queue implementation It only removed the entries in the cache but now it correctly removes the swapped out persistent messages as well TODO: Add a testcase o r15682 Added java.sql.Connection delegate DebugConnection.java for advanced failure detection (contains assert code only) o r15644 Fixed htpasswd plugin for '*:' entries. This feature got lost during adding of authorization code (see r15446). Is now assured by testcase o r15643 Added experimental maxFetchSize to limit queries. Default to unlimited as before, example: QueuePlugin[CACHE][1.0]=org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin, persistentQueue=JDBC,transientQueue=RAM,maxFetchSize=100 o r15629 Added I_StreamingCallback which can be passed to an XmlBlasterAccess.connect. You can thereby read messages in streaming mode. A client side update queue having the same cfg as the client queue can be optionally used. Changes for 1.4 [2006-10-22] r15612 =================================== o r15591 FilePoller: Fixed file.delete() with a hack, it failed sometimes on Windows platforms o r15587 SQL92Filter plugin has as default now switched caching of prepared query off See http://www.xmlBlaster.org/xmlBlaster/doc/requirements/mime.plugin.access.sql92.html o r15582 Updated cup parser from 'CUP v0.10k Parser' to 'CUP v0.11a beta 20060608 Parser' o r15571 Changed I_SecurityQos interface to have exchangable SecurityQos for ldap,htpasswd,simple This allows changing the server side security plugin (from for example htpasswd to ldap) even if the client is not touched. o r15563 Bugfix: Thread/memory leak on clients with failed authentication and not closing the socket o r15562 Bugfix: NPE during callback of oneway messages o r15557 Added switch -xmlBlaster/useSessionMarker (defaults to false) To switch between old "client/joe/1" notation and new "client/joe/session/1" notation Default is again false to be backward compatible with older clients, should be changed to true on release 2.0 o r15556 Fixed C++ client to handle 'joe/2' or 'joe/session/2' or 'client/joe/session/2' syntax o r15549 Fixed the possible NPE in SocketConnection in case a client wants to use it directly. It can now read the cfg out of the Global properties too, thanks to Oliver Fels. o r15541 Fixed plugin load/unload/reload lifecycle, fixed plugin JMX re-registration o r15534 Added support for dynamically loaded plugins, the jar file is send in the message content See http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.runlevel.howto.html#dynamic o r15525 added cleanup of reads in dispatch statistics when an exception occurs when writing to the socket (normally by pings). Without it clients would not reconnect if the exception occured when receiving messages. o r15524 Using now default XML parser of the virtual machine (usually no configuration is needed in xmlBlaster.properties anymore) o r15523 Changed default syntax from 'client/joe/1' to 'client/joe/session/1 Passing old notation is still supported o r15522 Added default XML parser / XSL settings for IBM JDK 1.4 and IBM JDK 1.5 o r15513 You can now send messages containing one plugin as in xmlBlasterPlugins.xml and this is dynamically added without xmlBlaster restart. Further configuration can be done over jconsole. Sending a jar file with plugin specific code is not yet implemented. Example: java javaclients.HelloWorldPublish -oid __sys__RunlevelManager -contentFile plugin.xml o r15511 Added support for runlevel plugin activation/deactivation from JMX / jconsole o r15506 Fixed C client library cast for Solaris Changes for 1.3 [2006-09-10] r15505 =================================== o r15504 Fixed NPE in CacheQueueInterceptorPlugin.removeQueueSizeListener() if queue is shutdown o r15490 Fixed JMS_REPLY_TO = "__jms:JMSReplyTo" to contain new introduced "__jms:" prefix o r15488 Fixed QueueQueryPlugin / receive() to support multiple blocking clients on same queue instance o r15485 added to MINSTR token for currentTime to the DbWatcher TimestampDetector o r15465 receive() leaking threads fixed: The I_Queue implementations now fire changed() in shutdown as well allowing the blocking queue query threads to return. Before the receive() threads were leaked if the queue disappeared as a notify was never triggered o r15459 Bugfix receive(): Could deadlock because of synchronize declaration in CoreHandler o r15446 htpassed plugin: Extended to support authorization on 'xpath:' and 'domain:' specific access o r15438 SOCKET protocol: Calling xmlBlaster core is now in a dispatched thread to support concurrent ping() and other method invocations. Fixes for example long lasting subscribes and blocking gets. o r15419 added dispatch statistic to client dispatcher and added bypass of ping in case there is a writing- or reading activity on that dispatcher. This fixes ping failures due to ongoing write/read operations o r15413 XmlRpc callback: Fixed to throw COMMUNICATION exceptions on ping or updateOneway failures and for update() exceptions thrown on server side o r15412 Prevent NPE if topicProperty is null o r15397 -Fixed dump to file (added out.close()) -Nicer, human readable dump conforming to XmlScript markup -Added reference counting check, see I_AdminMap.checkConsistency() and I_AdminNode.checkConsistency() -Fixed to activate destroyTimeout setting when administrative or coming from persistence on startup -Fixed eliminating topicHandler duplicates in persistent store during startup -Changed persistent messages to be transient for session callback queues with negative session ID as those wouldn't be found deterministic after restart o r15390 ConnectionPool now throws away Connection in case of an exception in the jdbc queue o r15381 C# client library: Added Csharp wrapper around xmlBlaster client C library (xmlBlaster/src/csharp/NativeC.cs) See http://www.xmlBlaster.org/xmlBlaster/doc/requirements/client.csharp.html o r15357 I_Entry.removed is now invoked outside synchronize in queues to avoid deadlock o r15348 Increased information density of server side logging (similar to good old org.jutils times) o r153xx I_Queue implementation: the toDestroyed() callback is now outside any synchronized o r15337 Property.java: when retrieving someCtx* only someCtx's childs where returned, now the exact match is returned too. o r15334 changed the threading pool of dispatcher since it was only using minimumPoolSize o r15326 Fixed spam prevention if client logs in after a PtP arrived in its callback queue (with forceQueueing=true) o r15323 Changed server side behavior on COMMUNICATION exceptions thrown actively from client side Accept now client side COMMUNICATION exception This should only be thrown by the client side low level protocol library on demand (e.g. on socket shutdownCbServer()) o r15313 htpasswd plugin extension: Added primitive authorization support based on method name and topic oid See: http://www.xmlBlaster.org/xmlBlaster/doc/requirements/security.htpasswd.html#authorization Changed to allow empty passwords (like "joe::") which grants access for joe o r15308 C client library: Removed pthread dependency when compiling single thread version with -DXB_NO_PTHREADS o r15294 Fix for XMLRPC protocol layer to transform all weired, client thrown exceptions into a "user.update.internalError" instead of a "internal.unkown" o r15293 Fix for SOCKET protocol layer to transform all weired, client thrown exceptions into a "user.update.internalError" instead of a "internal.unkown". (Is correctly done by IOR protocol) o r15280, r15288-r15290 Bugfix in xmlBlaster server-core (TopicHandler) Major redesign to handle race conditions: All access to a TopicHandler instance is no single threaded and done over TopicAccessor All access over reference counting / weak references is done as 'dirty read' Fixed double TopicHandler unregister on erase(false) o r15261 JMX invocations: Fixed invocation with none-String arguments, see See http://www.xmlBlaster.org/xmlBlaster/doc/requirements/admin.http.html#jmx o r15256 Fixed switching off erase notification, added test case Thanks to Brad Clements for reporting o r15250 XmlRpc callback (server side): Fixed recognition of COMMUNICATION errorCode to avoid going to DEAD when callback server of client disappeared temporary o r15244 EventPlugin: Added fix to only send JMX events when configured o r15234 Added java client side API methods for synchronous access: Access xmlBlaster server side queues MsgUnit[] receive(String oid, int maxEntries, long timeout, boolean consumable) The synchrnous request/reply pattern MsgUnit[] request(MsgUnit msgUnit, long timeout, int maxEntries) See I_XmlBlasterAccess.java o r15220 Added possibility to configure to send XmlBlaster script markup over the SOCKET protocol layer with all benefits like tunneling back, compression and SSL See http://www.xmlBlaster.org/xmlBlaster/doc/requirements/protocol.socket.html#script Fixed propress listener reporting in XbfParser.java o r15214 Email protocol now functional between cluster nodes, see example configuration xmlBlaster/demo/javaclients/cluster/email/README o r15207 Bugfix Java: The Callback QoS could loose the callback address due to a bug in the ConnectQos parser (e.g. when reloaded from persistence) o r15203 added ping qos to clientside ping (was ignored previously) o r15192 Added simple jmx framework for contrib plugins with a first implementation TimestampChangeDetector. o r15187 Fix to compile again for J2ME o r15170 Fixed NPE in TopicHandler (reported by David Kerry) o r15183 Added a swing console for arbitrary classes executions. Supports input and colored xmlBlaster highlighting of logs o r15179 Replication: on exceptions the connection was not thrown away from the pool. This has now been fixed. o r15177 Fixed responseTimeout pingResponseTimeout and updateResponseTimeout when negative o r15158 Fixed serverTimestamp on status.html o r15157 Bugfix disconnect(): Fixed clear session queue to be before shutdown o r15144 Bugfix C++ Corba only closeSocket(s) added because of handle leak reported by James Cazier o r15139 Bugfix for ant XmlBlasterTask: Closing file output streams o r15137 Bugfix killClient() does now properly destroy clients which have no session for example clients which came to live with a PtP message. o r15124 Added client property variant: ... to support base64 client properties of type String which are not UTF-8 encoded o r15093 Extended XmlScript with Like this XmlScript can be used with the request/reply pattern (useful as a ANT task) o r15055 RequestReplyExecutor.java returns now address.clone TODO - pass specific address of client for authentication o r15047 Added xmlBlaster ant task This allows to access xmlBlaster from within ant with the xmlBlaster XML scripting language See: http://www.xmlblaster.org/xmlBlaster/doc/api/org/xmlBlaster/contrib/ant/XmlBlasterTask.html o r15041 Patch from Balázs Póka which makes defensive cast to URLClassLoader Allows Java WebStart and none standalone apps. o r15038 Big topic DOM: Changed default encoding from ISO-8859-1 to UTF-8 This is configurable with -xmlBlaster/topicDom/encoding for backward compatible behaviour o r15037 Bugfix TopicHandler (multi threading issue) By Eugene Wu for topic going unintended into unreferenced for volatile messages o r15029 Corba xmlBlaster.idl testing 'wstring' instead of 'string' - Java client to java server works fine (encoding UTF-8, windows-1252 etc.) - Testing with mico 2.3.12 works fine only for 'string' The 'wstring' variant lost its QoS during connect() so we stay with 'string' o r15014 MX4J Adaptor could not find the necessary xsl in Windows. This issue is now fixed. o r15006 Added 'domain' to erase event o r15003 XPathFilter bugfix Does not throw exception anymore for not wellformed message content o r15002 Java client library methods added to I_XmlBlasterAccess - Added convenience method to send an administrative command to xmlBlaster String sendAdministrativeCommand(String command) - Added convenience method to switch callback dispatcher on/off void setCallbackDispatcherActive(boolean activate) o r14995 DbWatcher changes - Removed changeDetector.postUpdateStatement - Added converter.postStatement - Added changeDetector.ignoreExistingDataOnStartup o r14987,r14988 Refactored security framework - incompatible security interface change of interfaces I_Subject, I_Session, I_MsgSecurityInterceptor - isAuthorized is now a method of the I_Session instead of the I_Subject - isAuthorized gets now extended informations to be able to authorize on data instance level - importMessage() and exportMessage() have now extended arguments o r14985 Upgraded to jaxen-1.1-beta-8.jar from http://jaxen.org (2006-04-01) Removed in xmlBlaster/lib/xpath: saxpath.jar jaxen-core.jar jaxen-dom.jar Added xmlBlaster/lib/jaxen.jar o r14981 Extended MIME XPath filter: - Depending on the configuration the XPath can now query the QoS OR the message content The default is as before the message content - Optionally you can supply a XSL file name which is used to transform the message content (deprecated again) - The plugin type name is now dynamically determined to support multiple plugins http://www.xmlblaster.org/xmlBlaster/doc/requirements/mime.plugin.access.xpath.html o r14976 FileLocator handle now http:// and ftp:// and file: schemas to lookup configuration files http://www.xmlblaster.org/xmlBlaster/doc/requirements/util.property.html o r14974 Extended XPath filter FilePoller: Changed copyOnMove=true as default setting o r14974 FilePoller: Changed copyOnMove=true as default setting o r14973 FilePoller: Fix for case insensitive OS, Fix for failing renameTo o r14970 Added support for all JMX commands for our http/HTML native access, see requirement http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.http.html o r14956 changed repository structure for tags/branches and trunk and devorced it from other repositories. o r14952 RemoteProperties changed: Now new sent properties merge with existing ones - setting 'msgUnit.content=set' will overwrite existing remoteProperties (behaves as old version) Changes for 1.2 [2006-03-13] r14936 =================================== o r14921 The new JDK14 logging can now be controlled by telnet commands or JMX o r14918 Administrative commands - Added telnet support for 'session' class specified - Fixed Message command access with arguments o r14916 Admin-commands: Removed deprecated getNumSubscriptions and getSubscriptionList o r14914 Refactored common CORBA classes to org.xmlBlaster.util package o r14909 Cluster fixes - Setting retries=-1 as a default for remote cluster login - Default is now to not disconnect at the remote clusters during shutdown The old behavior can be forced by adding a tag. - Bugfix to not forward the '__persistenceId' marker client property from subscribeQos to the remote node - Fixed cluster example: Added SubscriptionPersistencePlugin to xmlBlasterPlugins.xml o r14874 - r14876 Added XmlBlasterException hook to react customized on XmlBlasterExceptions The default implementation (see Main.java) does an immediate exit of xmlBlaster for error codes defined, for example "-xmlBlaster/panicErrorCodes resource.db.unknown,resource.db.unavailable" The exit does not shutdown with the RunlevelManager but kills the instance immediately. You can add your own hook implementation (here MyHandler.java) with java -Dorg.xmlBlaster.util.I_XmlBlasterExceptionHandler=MyHandler org.xmlBlaster.Main -Changed to load signal catcher already in HALTED_POST o r14867 Added SocketGetter to the contrib package. o r14845 Removed jutils completely, if you have used org.jutils code in your clients please port it, for some time you can download jutils.jar from http://www.xmlBlaster.org/jutils.jar The XML dump shows some timestamps now in ISO_8601 format. o r14840 Renamed engine.Global to engine.ServerScope This is an incompatible change which touches low level native plugins only o r14812 - r14839 Incompatible changes from jutils logging to java.util logging. see helper script xmlBlaster/bin/convertJutilsToJavaLogging.sh o r14781 telnet access refactored, some access method names are changed, e.g. - getCbQueueEntries() -> getCallbackQueueEntries(String query) - "get topic/..." now access all I_AdminTopic methods o r14787 Consuming queue query - added consuming query for subject queue - added consuming query for history queue (telnet access not yet finished) see http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.queryspec.QueueQuery.html o r14780 Extended telnet features (requirement admin.telnet) - Added support to invoke operations without bean-get/set convention - Added support for setters with multiple arguments, separated by '&' o r14779 Extended EventPlugin (requirement admin.event) - Extended to support configurable event sources additionally to heartbeat - New, configurable jmx/publish/smtp content "$_{xml}" o r14779 EventPlugin admin.event - Extended to support configurable event sources additionally to heartbeat - New, configurable jmx/publish/smtp content "$_{xml}" o r14777 Incompatible change of return markup of telnet commands The returned string is now plain without key/qos markup for text/plain requests. Changed to lookup operation methods without set prefix o r14772 Added transient map to SessionInfo to hold remote, client side properties; Extended EventPlugin to send remote, client side properties; Extended RequestBroker to capture topics of type '__sys__remoteProperties' o r14765 nested ClientProperties are now allowed in ClientProperties after fix in XmlQoSBase o r14756 email protocol: Added switch for 'addExpiresHeader' and JMX accessor Fixed 'breakLongMessageIdLine' for max 72 char per line and added JMX accessor o r14743 added ENCODING_FORCE_PLAIN to allow nested xml inside a ClientProperty o r14753 Added getPingRoundTripDelay() and getRoundTripDelay() for JMX or telnet observation o r14751 email protocol Removed xmlBlaster specific expires header 'X-xmlBlaster-ExpiryDate:' but keeping 'Expires:' Changed tag to be fully ISO 8601 date time formatting compatible like '1997-07-16T19:20:30.678Z' and is always UTC o r14741 Removed trim() for string ClientProperties o r14733 Added EraseKey and EraseQos (as ClientProperty) send to cluster slaves on topic erases so that slave knows the erase properties Reported by Jonathan Clark o r14729 Bugfix removed forceDestroy check to have a NotifySubscribersAboutErase if the boolean is set to get erase events for cluster slaves (with erase done on master) by Jonathan Clark o "14720 changed signature of Global.getStackTraceAsString (allows an exception now) o r14716 replication: fix to check consistency of old replKey when initializing o r14699 ReplaceVariable.java: changed ReplaceVariable to allow hits with attribute on second tag o r14696 Bugfix for XML XPath query of topics. Was introduced some month ago and affected missing attribute values under JDL 1.5 only o r14689 JMX Extended support to specify RMI server host/port, xmlBlaster/jmx/rmiserver/hostname and xmlBlaster/jmx/rmiserver/port 6011 o r14686 in SessionInfo passing the correct dispatcher status flag when recreating the dispatcher o r14676 Email protocol: Added 'Expires: Fri, 27 Jan 2006 13:01:17 +0100 (CET)' header (RFChttp://www.faqs.org/rfcs/rfc2156.html) o r14668 Email protocol fix: Handling now CR LF which could be added for long lines to by MTA o r14635 Added full JMX control for FilePollerPlugin o r14632 EventPlugin: Check if client has a callback configured to avoid NPE o r14627 Removed outdated XML parser configuration for servlet (http and applet) Changes for 1.1.1 [2006-01-16] r14622 ===================================== o r14632 EventPlugin added check for client callback to prevent NPE o r14620 Bugfix potential memory leak (ClientSubscriptions.java): Added shutdown() for XPath subscriptions o r14613 Changed getNativeConnectArgs() It is not forcing CACHE,1.0 anymore as this is the default setting o r14612 Bugfix potential memory leak (SocketDriver.java): Removed nulling of secretSessionId to prevent memory leak o r14611 Bugfix potential memory leak (SubscriptionInfo.java): In SubscriptionInfo fixed shutdown to prevent from JMX mbean memory leak o r14608 Bugfix potential memory leak (ContextNode.java): Added WeakReference for ContextNode childs to avoid memory leaks. o r14586 POP3 bugfix: Fixed single connection leak on startup, the Store was not closed o r14579 SMTP/POP3 Url: Added handling for '@' in username or password o r14572 Removed missleading log.error for SOCKET protocol about missing response listener o r14565 Fixed deadlock with manually started RMI JMX and rmiregistry o r14561 cluster bug fix necessary as ClusterManager is loaded as plugin since r14422 o r14545 Refactored naming convention for admin.events requirements o r14525 Reworked LowMemoryDetector to be more useful for admin.events.xml o r14486 Runlevel manager: Added create attribute The new create attribute allows to suppress loading a plugin from xmlBlasterPlugins.xml o r14486,r14500,r14501 Added extended support to send internal core events. Example: startupRunlevel.9,shutdownRunlevel.8 where the number is the runlevel you want to observe. See: http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.events.html o r14481 Added native plugin to trigger xmlBlaster internal events as emails Currently log.error or/and log.warning, see EventPlugin in xmlBlasterPlugins.xml o r14438,r14439 C++-client library: size_t, int64_t cleanup o r14437 C-client library: size_t, int64_t cleanup o r14436 Removed obsolete jndi-jdk1_3_1.jar o r14429 Email protocol Bugfix for loop protection Changed configuration defaults to be human readable Changed holdbackExpireTimeout default to 20000 milli seconds Changes for 1.1 [2005-12-22] r14429 "Xmas release" ================================================== o r14422 Changed ClusterManager to be configured in xmlBlasterPlugins.xml Please update xmlBlasterPlugins.xml Removed the now obsolete '-cluster true' parameter. Changed protocol plugins to startup in runlevel 4 instead of 3 o r14419 Fixed reflection code for JDK 1.5 in XML dom.write() o r14412 C client library: Changed responseTimeout from one minute to unlimited o r14408 Removed parser.jar and jaxp.jar as we dropped support for JDK 1.3 Removed collections.jar (needed for JDK 1.1) o r14379 added DbWriter: see http://www.xmlblaster.org/xmlBlaster/doc/requirements/contrib.dbwriter.html o r14354 XmlBlaster native (jutils r14357) logging: Added '-maxLogFileLines 50000 -maxLogFileCounter 9' configuration o r14338 Email protocol: Fixed memory leak for loop detection code o r14337 Changed to have unique JMX name to avoid conflict if multiple plugins are started for SocketDriver, SmtpClient and Pop3Driver o r14336 Added JMX control for CorbaDriver and XmlRpcDriver o r14334 Email protocol: Ported to support multiple requests in one email o r14329 Email protocol: Fixed multiple connection loop protection, added simple use case for manual GUI usage o r14316 Added setSessionTimeout(long) for admin/JMX access o r14307 Bugfix email protocol: Fixed authentication, host/port setting and inline content of SmtpClient.java o r14302 Email protocol: Introduced email expiry header 'X-xmlBlaster-ExpiryDate:2005-12-24 16:45:12' o r14295 BUGFIX: Fixed resetting of SaxParser state, could lead to buggy parsing if previous parse threw an exception Had no impact when accessing the server from our Java and C++ client library. Thanks to Cyrille for finding this bug o r14291 added a persistent java.util.Map as org.xmlBlaster.util.PersistentMap. Instances can also be retrieved with java.util.Global.getPersistentMap(String) or with new PersistentMap(String). o r14264,r14268 Java/C++: Changed default setting of /burstMode/maxEntries from unlimited to 1 Like this each message in the callback queue is send seperately if not otherwise configured. o r14251,r14267,r14319 USER_UPDATE_HOLDBACK (and COMMUNICATION_USER_HOLDBACK) introduced (for all protocols) You can throw this on client side in your update() method: Like this the server queues the message and sets the dispatcActive to false. You need to manually activate the dispatcher again. Will be changed again, use with care. o r14226 SOCKET&email Refactored Latch handling and added interruptInvocation() to be able to interrupt pending method calls (currently JMX exposed for email only) o r14196-r14298 Added DisconnectQos configurations: dispatch/connection/shutdownDispatcher true/fale dispatch/connection/shutdownCbServer true/false dispatch/connection/leaveServer true/false o r14192 ContextNode now uses StringPairTokenizer.parseLine() which handles quotes and accepts empty instanceNames o r14191 Fixed ContextNode.addChild to update the parent link Added ContextNode.mergeChildTree() and getChild() for easy lookup Removed Global from ContextNode constructor and valueOf() method Fixed JMX registration to have global unique entries (for example for Pop3Poller with a native client) o r14186 Changed DispachManager to fix a loop when using I_MsgInterceptor and in Polling Mode o r14180 Java client library: Added '-dispatch/connection/doSendConnect false' for clients behind a firewall which can only receive callback messages, see http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.connect.html#doSendConnect o r14161 Enhancements - Added lazy Smtp and Pop3 initialization - Fixed to not send initial ping to avoid deadlock (email protocol driver) - Added updateResponseTimeout to configure update() specific timeouts (SOCKET and email protocol) - Changed SmtpClient configuration to URL syntax - Added email store in Pop3Driver to hold emails until a bean registers interest for it (see holdbackExpireTimeout) o r14161 Added specific method invocation timeouts (for 'SOCKET' and 'email' protocol only) Fires if a method invocation does not return: responseTimeout connect(), subscribe(), publish(), unSubscribe(), erase(), disconnect() and oneway variants updateResponseTimeout update() pingResponseTimeout ping() from client to server and vice versa o r14158 Removed global.isServer() as it was redundant with global.isServerSide() o r14139 HtmlMonitorPlugin.java Using byte[] instead of String due to failure at image loading. ReplaceVariables is used only for text-mime-types now. o r14135 Added method in JmxWrapper to invoke methods called from the HmlMonitorPlugin. This enables us to call MBean-methods from within a website which runs in the HtmlMonitorPlugin. o r14125 XmlBlasterAccess.java: Changed getDispatchStatistic() to avoid potential deadlock if an update receives during connect o r14119 Java: Added possibility to initialize complete xmlBlaster client library without sending a connect() to the xmlBlaster server (see XmlBlasterAccess). o r14087 Java SOCKET protocol: Changed the default responseTimeout from one minute to 'forever'. o TODO: C/C++ SOCKET protocol driver Change the default responseTimeout from one minute to 'forever'. o r14081 Changed default communication protocol from IOR (Corba) to SOCKET o r14058 Functional email protocol driver with or without ZLIB compression o r14050 http/j2me: Fixed possible IndexOutOfBound and NegativeArray exceptions in http servlet o r14049 C++: Added possibility to add s for protocol configuration to ConnectQos o r14045 Java: Added possibility to add s for protocol configuration to ConnectQos o r14043 The QoS attributes are enforced to be case sensitive o r14041 changed LOCAL protocol: simplified and decoupled client from slave: now they can start in random sequence o Added C# (C sharp) XMLRPC client o r14023 Added Macromedia Flash Player XMLRPC demo client (Cyrille) See xmlBlaster/demo/flash/xmrpc/README o r14039 Fixed ClientEvent to transport ConnectQos o r14020 Extended XmlScripting with exception handling o r14007 Partly fix for expiry of volatile message timing out during publish processing This bug could led to NPE o r13977 Added usage help for JMX (jconsole) o r13949 -xmlBlaster/jdk14loggingCapture defaults now to true Like this als java.util.logging will be automatically redirected to our jutils logging This is for the server and the client library o r13929 Refactor SOCKET protocol classes to reuse code for EMAIL protocol driver o r13909 added contrib task in build.xml Changes for 1.0.7 [2005-10-26] r13887 "Xmas release patch 7" ============================================================ o r13886 Added support for crimson XML parser if forced for JDK 1.5 (last JDK1.3 compatible change) o r13880 Ported org.w3c.dom.ls.DOMImplementationLS JDK 1.5 dependency to reflection o r13871 C++ client lib: Fixed missing initialization of progressListener_ o r13870 and r13876 Suppress missleading exception when connection is DEAD but worker active o r13857 Extended Applet support (with real time callback) for more than one applet in same servlet-session. o r13845 Added JMX methods to clear or remove messages from callback queue o r13842 moved some classes in contrib packages o r13825 Bugfix for 'no meat found' This could lead to a looping callback message and subscriber not receiving msgs anymore. Removed misleading log.error in same context Reported by Marshall Shapiro 2005-10-10 o r13824 Queue persistence entries are now recovered even if new data is available at the back o r13815 removed Global and made java logging to Execute o r13805 Added applet ping method, extended example applet and docu o r13786 fixed bug on DbWatcher (TimestampChangeDetector) when number of digits changed it previously did not detect change. o r13764 Added constructors with no global to ClientProperties (other are deprecated) o r13753 removed Global from EncodableData o r13750 added flag copyOnMove to file poller (allows archiving on remotely mounted file systems) o r13726,r13727 Removed jclark-omquery-xpath engine dependeny from xmlBlaster core for JDK >= 1.5 o r137187,r13718 Ported to use native XML parser when running with >= JDK 1.5 But still uses crimson for JDK 1.2,1.3 and 1.4 See http://www.xmlBlaster.org/FAQ.html#xml-parser http://www.xmlblaster.org/xmlBlaster/doc/client-api/org/xmlBlaster/util/XmlNotPortable.html - xmlBlaster.properties has changed, please use the new template - engine.service.rdbms requirements will only run with JDK 1.5 from now on Please remove those lines in your xmlBlaster.properties: javax.xml.parsers.SAXParserFactory=org.apache.crimson.jaxp.SAXParserFactoryImpl javax.xml.parsers.DocumentBuilderFactory=org.apache.crimson.jaxp.DocumentBuilderFactoryImpl o r13713,r13714 C++ Fixed progress listener registration in offline mode o r13710 fixed an empty type attr in EncodableData is now a String. Parsing of ClientProperty is now autoencoding on unencoded strings. o r13709 DbWatcher has changed the schema. Now the isSigned attribute is 'signed', isReadOnly is 'readOnly' and isNullable is 'nullable'. The later is an integer. Added the parameter 'changeDetector.postUpdateStatement' to DbWatcher configuration. o r13702 Added memory heap observation, see '-xmlBlaster/jmx/observeLowMemory true' in http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.jmx.html o r13694 Sending JMX notifications on client login/logout and on log.error Changes for 1.0.6 [2005-08-10] r13689 "Xmas release patch 6" ============================================================ o r13680 Added prevention of duplicate persistent subscribes in persistent storage o r13677 Added I_Storage o r13667-13669 Added embedded message dumper for persistent queue and persistent map implementation o r13667 JDBC persistence: Trimming columns 'type' and 'flag' After DB export -> import there could occur some white spaces Changes for 1.0.5 [2005-08-08] r13663 "Xmas release patch 5" ============================================================ o NOTE: You need to remove the 'HtmlMonitorPlugin' section in xmlBlasterPlugins.xml to be able to run with JDK 1.3. It uses the logging from JDK 1.4. o Tested C and C++ client library with icc 9.0 (the new Intel C++ compiler release) o r13656 Bugifx Memoryleak for XPath unSubscribes On XPath subscriptions which hit many topics the unSubscribe could lead to a memory leak in the server. o r13655 JMX: Fixed so that JMX queue names displayed are identical to the database name XB_ENTRIES.queueNames o r13649 Added JMX methods - I_ProgressListener for SOCKET protocol plugin - Callback delivery states and statistics - Added client side queue dumping o r13638 Added JMX observation for SubscriptionInfo and the I_Map cache implementation Added javadoc for JMX methods, see for example I_AdminNode o r13635 Fixed Sql92Filter mime plugin bug reported by Nelson Silva teste2 Filtering failed when type='String' was specified o r13626 MS SQLServer 2005 support added See xmlBlaster/config/xmlBlaster.properties.template o r13593 C client library Added progress listener function pointer to access the number of read bytes on socket during receive Try C demo: Subscriber -session.name "SUB/1" -reportUpdateProgress true o r13588 JMX extended for hierarchical view in jconsole (ContextNode) o r13579,r13580 JMX control for Java clients to monitor and control the client side connection o r13575,r13577 Added message file dump operations for JMX o r13558 log4cplus port/bugfix to VC++ 2005 It crashed in strftime() because of unknown %q option o r13545-r13568 New native web based monitoring Start xmlBlaster and try in your browser: http://YOUR-IP:3412/status.html See http://www.xmlblaster.org/screenshot.html#native - Added LogNotifierDeviceFactory - Added file loader from CLASSPATH, global.getFromClasspath() - Added more administrative access methods o r13539 Added native plugin which delivers a simple HTML page with the xmlBlaster status. The delivered page is configurable to show any administrative command. o r13525-13528 Added native http based xmlBlaster monitoring plugin (generic HTML design is still under construction) o r13524 adjusted Xerces-C++ build settings Sax2Parser.h und Sax2Parser.cpp: fixed includes Use xerces.include.dir xerces.lib.dir in build.properties to set the location of the Xerces-C++ Library to be used for the C++ Part. XMLCPP_HOME and XMLCPP_VER is not supported anymore. o r13513 C++ client library Added convenience method XmlBlasterAccess.setCallbackDispatcherActive(bool) o r13505 Changed C++ ConnectQos to be reference counted Added convenience method XmlBlasterAccess.sendAdministrativeCommand() o r13502 Bugfix C++ integration of C client library Return value of bool update(...) changed to XMLBLASTER_C_bool On Windows C++ bool is a 'char' and the C bool is a 'int' This mismatch left 3 bytes on the EAX register undefined and lead to wrong bool settings when passing a bool from C++ to C. o r13491,r13492 JMX Added jmxremote.jar to compile on JDK < 1.5 o Added administrative access methods, for example "numPublish", "numSubscribe" etc. Renamed "numUpdates" to "numUpdate" o r13477-r13482 Added JMX functionality for session, topic and queue handling o r13470,r13474 Extended query string syntax The constructors of GetKey(String,String) EraseKey(String,String) SubscribeKey(String,String) UnSubscribeKey(String,String) accept now the query string in URL syntax, for example a topic oid like "Hello" or "oid:Hello" or a query like "xpath://key", "domain:CLUSTER" Topic oid is now checked to not contain apostrophe ' or " o r13463 Bugfix user.security.authentication.accessdenied - Collecting new ConnectReturnQos after reconnect - Setting new instanceId on multiple connect() calls o r13462 Bugfix user.security.authentication.accessdenied Java client library now does another connect() if accessdenied is thrown from server. This can happen when a client session is destroyed in the server as an administrative task or by other means. Note: If the client is not fail safe configured and his callback address is buggy, the server always destroys the session and the client always reconnects which could lead to a loop. o r13461 Dispatcher change (java) Moved all protocol driver shutdown calls outside of synchronization blocks to avoid deadlocks if shutdown blocks and client wants to reconnect. o r13460 SOCKET protocol driver change (java) Moved all native socket close() calls outside of synchronization blocks. Like this a blocking system call won't deadlock the clients reconnect attempts. Changed to pass thru communication exceptions. o r13459 Bugfix SOCKET protocol driver Catching now throwable to always ensure the release of invocation locks Otherwise a blocked thread could result o r13459 Bugfix SOCKET protocol fail safe reconnect: SO_LINGER changed from one minute to 0 The java socket.close() could block in the kernel when the ethernet cable was plugged out. SO_LINGER>0: Try to send any unsent data on close(socket) The UNIX kernel waits very long and ignores the given time SO_LINGER=0: Discard remaining data on close() <-- Choose this to avoid blocking socket close() calls Default: The kernel tries to send queued data even after close() o r13458 Bugfix SOCKET protocol fail safe reconnect plugin/socket/responseTimeout callback exceptions are handled now as communication exception and trigger polling for client instead of creating dead messages. o r13449 C++ client library - Cleanup of true/false string handling - Extended ConnectQos to handle "refreshSession", "reconnected" and "instanceId" - Bugfix Base64 clientProperty handling in ConnectQos SAX parsing - WARNING: The AddressBase class is now reference counted, you may not create any Address instance on the stack, always use 'new Address(...)' or 'new CbAddress(...)'. Please access methods with '->' instead of '.'. - Threads: omni_mutex locks now support recursive entry, the same thread may enter recursively This extends POSIX 1.c: There the results of recursively locking the mutex is undefined and usually blocks. - Changed fail safe reconnect to make an initial try directly after detection - Added getInstanceId() to Global - XmlBlasterAccess.cpp Bugfix for multiple connect() calls. Changed invocationMutex to allow recursive calls, set xmlBlaster/invocationMutex/recursive=false for old behavior. - Cleanup of bool converter methods and "true"/"false" usage "1", "true" and "TRUE" are evaluated to true. - Changed Timeout::addOrRefreshTimeoutListener() to ignore key<=0 (and r13465) - Bugfix for method Timeout::refreshTimeoutListener() o r13428-13432 ConnectReturnQos Added instanceId which is unique when restarting the server o r13427 Bugfix for reconnect (java client library) Fixes for IOR and XMLRPC the reconnect behaviour if client session was killed by administrative task o r13409 Extended JMX support Added 'build -DADD_JMXTOOLS=true ... dist' configuration to add jmxtools.jar to distribution (needed for HTMLAdaptor) o r13402 Extended JMX support - Observe/change Logging o r13397 Added port for persistency in Firebird database http://www.xmlblaster.org/xmlBlaster/doc/requirements/queue.jdbc.firebird.html Donated by Chris Lau ckl_88@yahoo.ca under LGPL Changes for 1.0.4 [2005-07-04] r13388 "Xmas release patch 4" ============================================================ o r13381 Added JMX support http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.jmx.html - New configuration parameters - Changed admin interface to support operations besides propertiy getter/setter e.g. operation killClient() instead of getKillClient() - Changed getKillClient() to operation killClient() - Changed getKillSession() to operation killSession() - Added TopicHandler MBean control - Added TopicHandler eraseTopic and accessors administrative commands - SubjectInfo does subjectQueue.shutdown() now in its shutdown() instead of finalize() - RequestBroker.java: fixed internal login to be a session - Added MBean to CacheQueue implementation (not yet for RAM or JDBC) - CacheQueueInterceptorPlugin: Check for multiple shutdown added - CacheQueueInterceptorPlugin: JMX getters added o r13375 Bugfix FilePoller Added fix r13316 again, it was lost during r13325 patch o r13354 Windows C/C++ pthread update to 2.5.0 (http://sourceware.org/pthreads-win32/) Note: The library name has changed from pthreadVC.dll to pthreadVC2.dll o r13372 HelloWorldSubscribe - Added some more configuration parameters - Added fail safe subscribe handling (without persistent subscription) - Added re-subscribe on erase - Added extended file dump capabilities with locking Changes for 1.0.3 [2005-05-16] r13349 "Xmas release patch 3" ============================================================ o r13335 C and C++ client library Port to Microsoft VC++ 8 Express 2005 beta2 o r13338 Java SOCKET protocol (server side): Changed to avoid DNS host name lookup on connect which could lead to blocking for a missing DNS server (reverse lookup) until timeout occurred. o r13335 C++ client library Removed needless comma after namespace declaration to compile with g++ 4.0 o r13330 C++ client library Forced to not put SubscribeQos into client side persistent queue (SQLite) even whith persisten=true, as we have not yet coded the retrieval (RAM based queueing only) o r13327 added pure regex to filepoller plugin. o r13323 Bugfix C++ client library Fixed reconnect when server was away and C++ ping hasn't yet detected it o r13322 finalized dispatcherActive property (r13300) Now it works on reconnect as well o r13319 Changed SOCKET timeout behaviour (Java/C/C++ clients) Changed to throw COMMUNICATION_TIMEOUT instead of RESOURCE_EXHAUST when the method call with SOCKET blocks after the specified timeout. Like that the not delivered message is queued by default, before the exeception was thrown back to the client code. o r13316 Bugfix FilePoller Fixed session timeout after one day Fixed deadlock on xmlBlaster shutdown if FilePoller had problems o r13310 Bugfix cluster ClusterNode.getConnectionState() did not reliable tell the truth Thanks to Michael Lum o r13308 and r13313 and r13314 C++ client library Added client side persistence code for subscribe() (deserialize is not finished) Added client side queueing for subscribe(), currently RAM based only Moved priority handling to QosData.cpp o r13300 Added dispatcherActive property to ConnectQos to support inhibiting callbacks on login, see http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.connect.html#dispatcherActive http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.connect.html#dispatcherActiveExample o r13299 C++ client library Fixed to send command line callback address property settings with ConnectQos o r13295 Added new server methods for administrative access: getServerTimestampMillis(): Access current server time in milli seconds getServerTimestamp(): Access current server time, e.g. "2005-03-21 11:18:12.622" o r13280 Removed outdated SOAP protocol plugins Changes for 1.0.2 [2005-02-24] r13271 "Xmas release patch 2" ============================================================ o r13266 Bugfix for QosData.clone() which didn't deep clone the client property map This could have impact on the reported sessionId for __sys__Login and __sys__Logout events. o r13267 __sys__Login and __sys__Logout events now return the public session id in the "__publicSessionId" client property as a long and the cluster wide unique absoluteName with "__absoluteName". The old "__sessionId" is not supported anymore. http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.LoginLogoutEvent.html o r13263 build.xml for C/C++: Added CFLAGS and LDFLAGS so one can configure C/C++ compilation and linkage Remove /usr/lib path for library as it is default and prevented a /usr/lib64 path on 64 bit machines o r13261 C/C++ port to Xeon 64 bit, added CFLAGS and LDFLAGS to build.properties (for example you can force 32 bit compilation on 64 bit machines with -m32 for g++) o r13257 Setting duplicateUpdates to deprecated, please use 'multiSubscribe' as described in requirement http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.subscribe.multiSubscribe.html o r13247 Removed bug from Persistent Sessions. When a session was initially persistent and reconnect was specified transient, a resource leak resulted. o r13237 C++ client library XmlBlasterAccess: Added getGlobal() and getCallback() accessors Added XmlBlasterAccessRef to support reference counted handling o r13236 C++ client library Global: Added GlobalRef to support reference counted handling Added createInstance() and destroyInstance() to handle multiple instances of Global o r13233 Added I_Map.remove(long uniqueId) o r13230 Removed bug on persistent subscriptions. Recovered persistent subscriptions where not removed when unsubscribing or disconnecting. Changes for 1.0.1 [2005-02-08] r13220 "Xmas release patched" ============================================================ o r13215 Passing AddressServer from each protocol plugin into the core to be able to do protocol specific decisions. Used for example with the AvailabilityChecker to allow LOCAL access for small runlevels and for future use for the Authentication/Authorization plugins to do IP specific decisions. o r13212-r13214 Added support to erase message instances but not the topic itself See http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.erase.html o r13202 StartupTasks plugin added See http://www.xmlBlaster.org/xmlBlaster/doc/requirements/admin.startupTasks.html o r13187 Redirect xmlBlaster logging to JDK 1.4 java.util.logging framework See http://www.xmlBlaster.org/xmlBlaster/doc/requirements/util.log.plugin.html#JDK14 o r13180 cpptasks.jar - Updated cpp tasks (C/C++ compilation) to CVS version from 2005-02-03 o r13178 JavascriptCallback.java - Escape quotation marks in XML content as suggested by Paul Wujek Xp2 Telecom Inc. o r13174 Extended DeadMessageDumper: Changed to create missing directory, now supports ${} replacement See http://www.xmlBlaster.org/xmlBlaster/doc/requirements/admin.errorHandling.html o r13173 More detailed logging for mime XPathFilter plugin o r13168 C client library ported to HPUX 11.11 with gcc 3.4.3 cd xmlBlaster/demo/c/socket/bin gcc -g -o Publisher ../../../../build.tmp/objC/Publisher.o -L/home/ruff/xmlBlaster/lib -lxmlBlasterClientC -L/usr/lib -lpthread o r13163 DbWatcher - Fixed INSERT reporting o r13161 DbWatcher - Fixed DROP message to contain correct colGroupValue o r13159 DbWatcher - Fixed NPE when no dataConverter is configured o r13157 Changed C++ compilation to use SOCKET protocol as default o r13152 DbWatcher - TimestampChangeDetector.java: Ignoring DELETE detection as it is detected only under seldom circumstances o r13142 DbWatcher - MD5ChangeDetector.java: Bugfix to do MD5 calculation on resultSet.getString(i) instead of resultSet.getObject(i). o r13141 DbWatcher.java: Added NPE check in shutdown(), trimming config settings, using new select() variant. o r13140 Added NPE check in DbPool.java, added new select() variant in I_DbPool.java o r13136 Bugfix SOCKET callback driver Bugfix for isAlive() detection, had impact on failsave reconnect behavior from xmlBlaster server callback to client. Happened only when both remained alive on temporary network interruption (or if callback address was same) and only if at least one partner is running on Windows. o r13127 added update with open transaction to DbPool o r13125 added autocommit and rollback to DbPool o r13121 added publish to the php xmlrpc demo library o r13110 Added DbWatcher framework to poll for changes on databases and report them as XML formatted messages, see http://www.xmlblaster.org/xmlBlaster/doc/requirements/contrib.dbwatcher.html o r13094 Added XmlBlasterJdk14LoggingHandler.java which redirects JDK 1.4 logging to our framework. This may be useful for native plugins which already use JDK 1.4 logging. Switch redirection off with '-xmlBlaster/jdk14loggingCapture false' The code is load by reflection to still support JDK 1.3 runtimes. Changes for 1.0 [2004-12-23] r13076 "Xmas release" ================================================== o r13070 Added compilation property 'build -Dneed.JDK.14=true ...' to activate code snippets which are not JDK 1.3 compatible. Changes for 1.RC4 [2004-12-19] r13059 ===================================== o Fixed release zip to run with JDK 1.3 without recompilation o r13057 Added SSL property 'findStoreInXmlBlasterSearchPath' to support keyStore/trustStore lookup in CLASSPATH Implemented for Java client side only. The feature is currently not activated to have JDK 1.3 compatibility, please recompile xmlBlaster with 'build -Dneed.JDK.14=true clean all' to have it, see http://www.xmlblaster.org/xmlBlaster/doc/requirements/protocol.socket.html#SSL2 o C client library: - r13048 Added XMLBLASTER_ prefix to LOG_INFO, LOG_WARN ... to avoid namespace clash with syslog.h; Thanks to David Kerry o C++ client library: - r13045 Bugfix for SAX parsing of ClientProperties: encoding of received message was ignored o r13043 SOCKET SSL communication: Added property 'needClientAuth' to support authentication of connecting clients as well, see http://www.xmlblaster.org/xmlBlaster/doc/requirements/protocol.socket.html#SSL2 o r13038 jutils-logging Fixed synchronization gap when making log-backup files o r13035 FilePoller final release o r13033 Fixed xmlBlasterPlugins.xml SAX parse to - allow sub-tags as attribute value - support inner CDATA sections in attribute markup Changes for 1.RC3 [2004-12-08] r12997 ===================================== o r13013 Added filepoller plugin to retrieve and publish files from a directory o r13013 Added getter in Global for properties when mixed with plugin properties o r13013 Added I_PluginConfig interface o r12995 Changed subscription ID to be unique over time o r12988 Bugfix in script: CDATA in content are not passed through anymore and duplication of content does not happen anymore o C client library: - r12985 Added XMLBLASTER_NO_RCSID switch for broken svnversion/rcsid workaround o C++ client library: - r12985 Added XMLBLASTER_NO_RCSID switch for broken svnversion/rcsid workaround - r12985 Changed compilation workaround from "__sun" to "__SUNPRO_CC" as g++ on Sun does not need it Changes for 1.RC2 [2004-12-01] r12978 ===================================== o r12963 better handling of possible interrupted exception in ConnectionPool o r12961 Added ConnectQos to xml server dump (without security parts) o r12960 Fixed delay of callback polling after a client reconnect o r12956 build.xml: JFlex and JavaCup are invoked only if files not up to date. o r12954 Bugfix: Topic erase notification events could dead lock when at the same time a subscriber callback delivery took place o r12950 it is now possible to send CDATA in content when using xmlBlaster script o r12948 Bugfix: The combination of subscribe() and get() on the same topic with cluster=true failed Thanks to Michal Masa xmasam@sgi.felk.cvut.cz o r12938 login- and logout events now return the public session id in the "__sessionId" client property as a long o r12936 Added subversion property "svn:eol-style=native" to resolve CRLF (Win) and LF (UNIX) problems Thanks to David Viner dviner@yahoo-inc.com o r12932 Bugfix: hierarchical sync sequence: TopicHandler, MsgUnitWrapper, MsgUnitCache to avoid deadlock o r12930 util.Global now throws IllegalArgumentException if loading of Property instance fails o r12818 Extended multiSubscribe support - Fixed multiSubscribe=false for XPath queries - Added support to reconfigure AccessFilter settings for existing subscriptions See: http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.subscribe.multiSubscribe.html o C++ client library: - C++ Xerces must be newer 2.4 (?), it must include xercesc/util/TransService.hpp - r12958 duplicateUpdates defaults now to true to have identical behaviour for Java and C++ - r12937 FreeBSD port, support for BOOST added again, thanks to Viner, David - r12877 Added xerces initialization from main thread, as on Windows it crashed sometimes if initialized from callback thread - r12871 Extended clientProperty API - r12870 Added xerces XMLPlatformUtils::Initialize PanicHandler - r12870 Added locale setting for xerces XMLPlatformUtils::Initialize, adjust with for example - xmlBlaster/locale "de_DE.iso-8859-1" or "en_US.UTF-8" - r12864 SOCKET driver: Removed obsolet mutex and obsolete thread - r12846 Changed connection_==0 check to be thread safe, passing now logging states to C library - r12823,r12825 Added sax configuration usage help Added virtual destructor to avoid memory leak Fixed SAX parsing for encodings different to US-ASCII, changed default SAX encoding to "iso-8859-1" (Using "UTF-8" with our xmlKey and xmlQos has still problems with our std::string usage) Added configuration possibility for SAX parse encoding with '-xmlBlaster/encoding' Fixed error message for SAX parse errors - r12820 Extending XmlBlasterException from std::exception to support catching by base class, added what() method, removed dummy stack trace output. - r12799 Added leaveServer() method See: http://www.xmlblaster.org/xmlBlaster/doc/doxygen/cpp/html/classorg_1_1xmlBlaster_1_1client_1_1XmlBlasterAccess.html#a28 o C client library: - r12919,r12927 FreeBSD port, thanks to Viner, David - r12852 Callback thread cleanup is now done detached the mode is adjustable with -plugin/socket/detachCbThread=true/false (false will do a pthread_join()) - r12845 Removed creating of two threads if UDP is switched off - r12842 Added stop flag for immediate shutdown detection, added free(rawMsg) in EOF case - r12828,r12861 Fixed multithreading bug on shutdown, now we can savely leave the server without disconnect() - r12781 Added missing pthread_cond_destroy() and pthread_mutex_destroy() - r12777 Memory leak fix for Udp return - r12778 Memory leak fix for calling connect() multiple times o r12772-r12774 Added workaround for ActiveX bridge to transfer byte[] See: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4887461 See: http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.activex.html Changes for 1.RC1 [2004-10-28] r12758 ===================================== o r12706,r12709 Added subversion revision number as exception text prefix, for example ex.getMessage()="r12702 Can't load your plugin" o r12703 Upgraded ANT from version 1.6.1 to version 1.6.2 o r12696 Added org.xmlBlaster.engine.DeadMessageDumper plugin to dump dead messages to hard disk, supports republishing (see javadoc) o r12689,r12690 Added '__deadMessageReason' ClientProperty to dead messages o r12685,r12686 New server flag -xmlBlaster/acceptWrongSenderAddress/ true/false [false] -xmlBlaster/acceptWrongSenderAddress/joe true Allows user 'joe' to send a wrong sender address in PublishQos Useful to resend dead messages with 'javaclients.script.XmlScript' o r12681 Checking subscription handle to be null to avoid IllegalArgumentException Thanks to aaron@mindwidgets.com o r12665 Java client library: fail safe mode Remember public and secret sessionId on client side for reconnect attempts (For future enhancement of pubSessionId<0 and persistent sessions) o r12664 Java client library: Bugfix get() and async mode Catching get() requests in async mode and throw an exception o r12663 Java client library: Bugfix switch to sync mode Added dispatchManager.trySyncMode(true) to force immediate sync mode after polling even for empty client queue o r12662 Java client library: FEATURE refreshSession Added ConnectQos.refreshSession tag for automated client side session refresh Example: connectQos.setRefreshSession(true) o Changed from cvs to subversion on 2004-10-17, see http://subversion.tigris.org/ o Added new property to delay xmlBlaster startup, for example -xmlBlaster/sleepOnStartup 5000 sets it to 5 seconds. Useful for example for Windows Service startup delay to wait on MSSQLServer JDBC listener o J2ME: - Ported String concat with '+' to StringBuffer.append() - Fixed compilation for JDK 1.5 (forcing target 1.4) o Added administrative access to a subscription dump for a client. Try something like java javaclients.HelloWorldSubscribe -session.name joe/1 -xpath //key java javaclients.HelloWorldGet -oid '__cmd:client/joe/1/?subscriptionDump' o Bugfix: Plugins with no package names did throw NPE o Plugin configuration of protocol plugins Fixed to check properties from plugin configuration in xmlBlaster.properties o Added separate links for client side Java API and complete Java API on homepage. o Cluster configuration change The xml configuration expects now a standard ConnectQos markup instead of the old specific section. The old markup is still working but deprecated. See http://www.xmlblaster.org/xmlBlaster/doc/requirements/interface.connect.html See http://www.xmlblaster.org/xmlBlaster/doc/requirements/cluster.html o Java client API change: The ConnectQos constructor can now throw an XmlBlasterException if loading of SecurityPlugin fails o htpassed authentication: - The password files are now trimmed (leading and trailing spaces are removed) - We now support startWith() and endsWith() in mode 'Security.Server.Plugin.htpasswd.allowPartialUsername=true' - We now support '*:48fdja94jfd' entries which allow to set a wildcard password A matching specific user like 'joe:dfkj843f81' has precedence in password evaluation - Replaced StreamTokenizer code with simpler line based file read because of problems with special chars - Changed comments to start with '#' instead of '//' See: http://www.xmlBlaster.org/xmlBlaster/doc/requirements/security.htpasswd.html o Cluster support: PtP messages now use the same cluster lookup code as Pub/Sub and are fully cluster routing enabled. o Java client library: Changed ClientErrorHandler to not remove client side queue entries on certain exceptions o Bugfix in PtP cluster forwarding: In some cases the destination QoS got lost o SOCKET SSL Renamed configuration 'keystore' to 'keyStore' to conform to javas system property Renamed configuration 'keystorepassword' to 'keyStorePassword' to conform to javas system property Added 'trustStore' lookup on client side o xmlBlaster.properties.template: Added CbProtocolPlugin[SOCKET][1.0] and CbProtocolPlugin[socket_ssl][1.0] as dummy plugins. Those dummies are needed for persistent session recovery. o Reintroduced notify for XPATH subscriptions (they were removed in 0.91) NOTE: XPath subscriptions will match again if the erased topic is recreated Exact subscriptions are lost when a topic is explicitely erased, a subscriber would need to re-subscribe on a erased topic if needed. This is an important difference, the erase notify is essential for exact subscriptions so they now about the stale subscription. o SOCKET UDP support: Added paramter to switch on/off the server side UDP listener (defaults to false) -plugin/socket/startUdpListener true/false o SOCKET compression for Java server and clients added The compression is based on jzlib and supports 2 ways of compression namely 'stream based' and 'message content' based. http://www.xmlblaster.org/xmlBlaster/doc/requirements/protocol.socket.html#compress Thanks to Bal�zs P�ka bpoka@axelero.hu o SOCKET SSL support for Java server and clients added, the usage is simple, see http://www.xmlblaster.org/xmlBlaster/doc/requirements/protocol.socket.html#SSL Thanks to Bal�zs P�ka bpoka@axelero.hu o SOCKET incompatible change: The disconnect returns a server side ACK now (from SOCKET protocol layer). This is a fix of the protocol.socket requirement: disconnect can throw an exception and therefore it also needs to have a return value o SOCKET incompatible change: Behaviour changed on client side so that disconnect() always makes a shutdown even on low level exceptions o SOCKET java protocol plugin: Fixed memory leak on InterruptedIOException (very seldom case) o C client library: - r12860 Timeout.cpp: Fixed shutdown with join(); Checking class state on method calls; Added catch(...) for error handling - r12858 Threading library: Added mode to start threads detached: start(bool detached) - r12854 Changed from winsock.h to Winsock2.h to have SD_BOTH - r12750 Upgrade to pthreads-dll-2004-06-22 - r12746 Windows flag '/YX' added for precompiled headers - r12710 Added subversion revision number, see getXmlBlasterVersion() - Added zlib:stream compression support - Added C client API documentation with doxygen, see http://www.xmlblaster.org/xmlBlaster/doc/doxygen/c/html/index.html - Changed 'ExceptionStruct: bool remote;' to type 'int' to have 4 byte struct alignment It crashed when called from VC7 C++ into C - Added a 'D' to .so/.sl/.dll shared library name for debugging version, for example "xmlBlasterClientCD.dll" You can switch off debugging with "c.debug=false" in build.properties => "xmlBlasterClientC.dll" - Changed CallbackServer again to close socket on server EOF to avoid clients thread blocking - Fixed handling of remote xmlBlaster server exceptions in C client library - We support now a debugging so/dll compilation with an added 'D' parallel to the optimized lib - Fixed callback ping return for SOCKET protocol o C++ client library: - r12858 Threading lib: Added mode to start threads detached: start(bool detached) - r12755 "user.name" is used instead of "user" to find out the default user - r12746 Windows flag '/YX' added for precompiled headers - r12743 BUGIFX: lexical_cast from string (or char*) to bool is now handled on a special implementation - r12711 Added subversion revision number, see Global::getRevisionNumber() - Fixed setting of XmlBlasterAccess::getServerNodeId() - Modified Log4Cplus logging: 1. We are now forwarding all xmlBlaster.properties and command line settings to log4cplus, so you could configure everything in xmlBlaster.properties instead of a separate log4cplus.properties 2. log4cplus is extended to do ${xy} variable replacement not only from environment but from itself as well (recursion depth is one). - Added zlib:stream compression support with via C SOCKET protocol plugin - Incompatible API change (the compiler will tell you everything - no risk!): o 'class Destination' constructor expects now the new SessionName instead of SessionQos o updateQos.getSender()->getAbsoluteName() instead of '.' as SessionNameRef is reference counted o Removed namespace from header: Clients now may need to add using namespace org::xmlBlaster::util::qos; - Updated C++ client API documentation with doxygen, see http://www.xmlblaster.org/xmlBlaster/doc/doxygen/cpp/html/index.html - New methods for XmlBlasterAccess: isAlive(), isPolling(), isDead() - SecurityQos constructor now accepts the security plugin name - Fixed reading of default client name - Fixed setting default SecurtiyQos userId from SessionName - Bugfix: Fixed to pass configuration settings to C-SOCKET layer on reconnect - Bugfix: Corrected sender name in PublishQos after reconnect and flushing queue - Added a 'D' to .so/.sl/.dll shared library name for debugging version, for example "xmlBlasterClientD.dll" You can switch off debugging with "cpp.debug=false" in build.properties => "xmlBlasterClient.dll" - Fixed initial queueing of connect request if xmlBlaster server is not available (ConnectQos is not queued anymore) - We support now a debugging so/dll compilation with an added 'D' parallel to the optimized lib - Changed to initialize callback address in ConnectQos only if a callback server is created - Changed to only install a CORBA callback server if necessary Thanks to pikaiyuan@163.com - Fixed Windows C++ compile in build.xml (unresolved externals) Thanks to Bjoern Ruff Changes for 0.91 [2004-08-30] ============================= o Perl client library: - Added a retries and delay option to the subscribe/callback tag - Added ReuseAddr => 1 to the Frontier::Daemon Contributed by Jason Martin o Python client library: - Added missing return values for remote calls, added publishArr() o C client library: - Bugfix in messageUnitToXmlLimited() for msg content smaller 5 bytes - Added support for UDP based publishOneway() and updateOneway() Contributed by Michal Masa - Added PTHREAD_CREATE_DETACHED to cleanup resources - Fixed publishOneway() to be a real 'oneway' Fixed reusingConnectionSocket check on shutdown of callback server Thanks to Michal Masa for reporting - Extended multi threading to support calling methods like publish() and subscribe() from within the update() callback thread. - Fixed C demo clients to use xmlBlasterFree() instead of free() directly Thanks to Martin Johnson o C++ client library: - Added UDP datagram support via SOCKET protocol, try java org.xmlBlaster.Main -plugin/socket/useUdpForOneway true -plugin/socket/startUdpListener true PublishDemo -protocol SOCKET -numPublish 5 -oneway true -plugin/socket/useUdpForOneway true SubscribeDemo -protocol SOCKET -updateOneway true -plugin/socket/useUdpForOneway true C: HelloWorldUdp -plugin/socket/useUdpForOneway true - Fixed publishOneway() - Added support to SubscribeQos - ClientProperty: Fixed float/double etc. assignement warning for templates - Removed boost source from our C++ source tree (we use omnithread) - Requests are now threadsafe: mutual block on requests (update thread is not blocked). For example a publish can not be done simultaneously as a publish on the same connection. - Fixed bug in lexical_cast for string to string on solaris - QueueFactory and ParserFactory are now stateless (no global nor log) - Bugfix in C++ client properties: empty spaces are allowed inside strings. - CorbaDriverFactory and SocketDriverFactory in C++ client keep now driver instances with Global* as key instead of instanceName. - Added individual callbacks for subscriptions - Added DisconnectQos::setClearClientQueue - Global constructors are now public. The user is responsible for cleaning up additional Global instances. o RMI protocol driver: Commented out RMI in property files, this protocol driver is currently buggy. o MsgUnitRaw needs to implement Serializable for RMI but may not use it for J2ME, this issue needs to be resolved o Incompatible JDBC persistence change: -> Removed XB_NODES table (is backward compatible) -> Removed XB_QUEUES table (is backward compatible) -> Removed column 'nodeId' from XB_ENTRIES (is NOT backward compatible) If you need to upgrade xmlBlaster having legacy data in database do manually a "alter table XB_ENTRIES drop column 'nodeId'". Otherwise just drop all old database tables (for HSQLDB remove its files in the tmp directory, on Windows the default %HOMEPATH%\tmp location for user 'joe' is "C:\Documents and Settings\joe\tmp" and on Linux "$HOME/tmp") Exception text is: [Aug 28, 2004 2:47:15 PM ERROR XmlBlaster.MainThread org.xmlBlaster.engine.msgstore.cache.PersistenceCachePlugin-topicStore:xmlBlaster_192_168_1_4_3412] put: an error occurred when writing to the persistent queue, the persistent entry __sys__UserList/2004-08-28 14:47:15.814 will temporarily be handled as transient. Is the DB up and running ? XmlBlasterException errorCode=[resource.db.unknown] serverSideException=true location=[JdbcManagerCommonTable.addEntry] message=[An unknown error with the backend database using JDBC occurred -> http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.errorcodes.listing.html#resource.db.unknown : java.sql.SQLException: Column count does not match in statement [INSERT INTO XB_ENTRIES VALUES ( ?, ?, ?, ?, ?, ?, ?)]] [See URL http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.errorcodes.listing.html#resource.db.unknown]state o Fixed double initialization of mime plugins o Cluster: Fixed clustered get() to not return message twice o Fixed to deliver correct queue size in UpdateQos o Server side SOCKET plugin: Added support to choose between UDP or TCP for publishOneway() and updateOneway() Contributed by Michal Masa o Server side SOCKET plugin: Added support for multiple SOCKET plugin instances with separate configurations. o Configuration attributes in xmlBlasterPlugin.xml are now used as default settings for all protocol plugins o Added separate statistic counter for updateOneway o Added updateOneway flag to SubscribeQos to control callback delivery for this subscription o Fixed XML dump of properties (jutils.jar) o Bugfix for sending ERASE events in UNREFERENCED topics with XPath subscription Topics delivered by XPATH subscriptions don't send erase notifications when they disappear as they match again if the appear again o XmlRpc access: Added support for message contents of type 'String' besides 'byte[]' o Support for JDK 1.5 by forcing source/target compilation to 1.4 o ClientProperty: Forcing Base64 for & character in string client property o XPath mime plugin extension It is now configurable for which mime types the XPath plugin takes affect, see http://www.xmlblaster.org/xmlBlaster/doc/requirements/mime.plugin.access.xpath.html Thanks to Robert Leftwich o SOCKET bugfix: java client did not return callback ping which resulted in a client disconnect o added missing logkit and avalon framework to distribution- and client distribution build o Fixed topic lifecycle: XPATH subscriptions don't prevent a topic from going to dead anymore Thanks to David Kerry o Fixed xml dump to be well formed again o Fixed get() mime filter query plugin load bug Thanks to jlc.xmlblaster.0504@jambotech.com o Added Sql92Selectors (with a mime plugin which queries the ClientProperties of the qos the same way as jms MessageSelector do 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 and lexical_cast 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 to 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): 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/connection/plugin/socket/multiThreaded socket.threadPrio -> dispatch/connection/plugin/socket/threadPrio socket.responseTimeout -> dispatch/connection/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
to
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 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 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 false 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 to in connect Qos o There is new support to publish an administrative message to configure a topic with QoS markup 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 bla, introduced attribute instead Introduced attribute 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: __subId:1 is now 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 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 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 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 false 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: * 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 tag to 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 true/false 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: "OK" New: "" 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 is now an attribute of - For PtP messages 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: to false to false to false 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]: 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= CLASSPATH=/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 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 to false - 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 - Added qos support for get() responses, for example: OK Tim - 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" - 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 element anymore, this is set for each CallbackAddress from now on, e.g.: http:/www.mars.universe:8080/RPC2 false 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 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) # :,:,... # 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" 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 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 tag for update messages. This allows the client to find out which of his subscriptions caused this update. - Added tag 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 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 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 , 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 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