xBus

Release Notes

 Release 1.7

New features:

  • The XSLT Transformer can now be chosen with the configuration entry:
    • Base_XML_TransformerFactory - class name of the factory including the package name
    The jar-file containing the TransformerFactory must be placed in XBUS_HOME/lib/runtime.
  • The additional address information $WILDCARD$ can be transmitted by HTTPParameterSender and HTTPParameterReceiver. Code has been provided by Raffael Niedermüller.

Configuration changes:

  • The entry to choose the encoding of XML data has been changed to:
    • Base_XML_Encoding

Implementation changes:

  • Runs only with Java 5 and Java 6; Java 1.4 and prior is not supported any more
  • Removed MX4J, now using built-in Java JMX classes, see JMX administration for details
  • Upgraded Apache Axis in the all-inclusive distribution to 1.4
  • Upgraded Apache Commons Codec to release 1.4
  • Upgraded Apache Commons IO to release 1.4
  • Upgraded Apache Commons HTTPClient to release 3.1
  • Upgraded Apache Commons Net to release 2.0
  • Upgraded Apache Xerces to 2.9.1
  • Upgraded Java Mail to 1.4.2
  • Upgraded Apache Tomcat in the all-inclusive distribution to 5.5.28
  • Upgraded HSQLDB in the all-inclusive distribution to 1.8.1.1

Bug fixes:

  • Reconnect to FTP server after being offline
  • Fixed a race condition in NotifyError
 Release 1.6

The xBus copyright has moved from the Xenium AG to myself. To reflect this, the license has been changed.

New features:

  • The HTTPxxxSenders now support HTTP authentication, see configuration changes for more details.

Implementation changes:

  • Because of the copyright change all package names have been changed as well from de.xenium.xbus to net.sf.xbus.
  • The HTTPxxxSenders accept all 2xx responses as OK, before that only 200 has been accepted as OK. The new behavior is more conform to the HTTP 1.1 specification.
  • Upgraded Tomcat in the all-inclusive distribution to 5.5.9. Now the JMX administration is active when running the xBus inside a servlet engine.

Configuration changes:

  • To activate HTTP activation for the HTTPxxxSenders there are some new configuration entries:
    • System_xxx_User (String) - The user and
    • System_xxx_Password (String) - the password to access the URL
    • System_xxx_Realm (String) - optional, the realm to access the URL
  • Some configuration entries have a function name, to make them more flexible. Up to now it must be set to .Default, when the function is not used. This is not necessary anymore for:
    • Application_xxx_Class
    • Application_xxx_Method
    • Router_xxx_Distribute
    • Router_xxx_Distribute
    • (JavaSender) System_xxx_Method
    • Transformer_xxx_yyy
    • (JavaTransformer) Transformer_xxx.yyy_Class
    • (JavaTransformer) Transformer_xxx.yyy_Method
  • The encoding of XML data can now be set in the configuration:
    • Base_Encoding_XML
    When this entry doesn't exist, UTF-8 is used as default.

Bug fixes:

  • Multithreading problem in DBJournal
  • Configuration entries are now trimmed
 Release 1.5

New features:

  • HTTPxxxReceivers can be stopped and started with the Remote Administration.
  • All background receivers can automatically be stopped after a specified amount of errors without a successful processing of a message between them. This feature avoids flooding of error message, when a resource is not available. See the rewritten chapter about Error Handling for more details.
  • All FilexxxReceivers, FTPReceiver, MQReceiverThread and POP3xxxReceivers now have the option to delete a message when there is an error during its processing. Deleted messages can be stored in files and can be resent with the Remote Administration. See the rewritten chapter about Error Handling for more details.
  • All XML messages can now be validated against a XML Schema. The name of the XML Schema can be configured as a default per message type or per system (see below). The Schema files must be stored in XBUS_HOME/etc/Schema. Example 3 is showing the validation against a Schema.
  • MQReceiverThread / MQSender: Removed dependencies to message queue servers and made configurable all environment properties for the initial JNDI context. Now all JMS implementations shall work with the xBus.
  • An experimental web service is available to restart the xBus running in a servlet engine (only in the all-inclusive distribution). See Remote Administration for more details.

Implementation changes:

  • The option to have a specified amount of retries before a FilexxxReceiver or a FTPReceiver reports an error has been removed.
  • The xBus compiles and runs under Java 5.0
  • Upgraded the JMX administration to MX4J 2.0.1 and JSR 160. Now a user and a password must be given to access the JMX server, they can be found as new parameters in standard.conf. The chapter Remote Administration explains how to connect to the JMX server.
  • Test0003 of the automated test now includes an example of a HTTPS connection.
  • Replaced HSQLDB 1.7.2 with HSQLDB 1.7.3 in the all-inclusive distribution.
  • Included Apache Xerces XML parser to support Schema checking.
  • Axis 1.1 (the Apache SOAP implementation) is now integrated in the xBus web application of the all-inclusive distribution.

Configuration changes:

  • The parameter Base_FileReceiverService_Timeout has been renamed to Base_FileReceiverThread_Timeout. Additional new parameters are Base_MQReceiverThread_Timeout and Base_POP3ReceiverThread_Timeout to control the timeslot where these background receivers check whether they shall be stopped.
  • The optional parameters Base_FileReceiverThread_StopAfterErrors, Base_MQReceiverThread_StopAfterErrors and Base_POP3ReceiverThread_StopAfterErrors are new to set the amount of failed attempts for processing a message before the background receiver will be stopped.
  • The parameter Base_Receiver_RetriesAfterError is now obsolete.
  • The behavior of the XML parser can now also be configured per system:
    • System_xxx_XMLSchema (String) - Validating against the specified XML Schema
    • System_xxx_XMLValidating (Boolean) - Validating against the DTD specified in the message
    • System_xxx_NamespaceAware (Boolean) - Parser will support namespaces
    • System_xxx_IgnoringComments (Boolean) - Parser will ignore comments
    • System_xxx_IgnoringElementContentWhitespace (Boolean) - Parser will ignore whitspace
  • The new required configuration entries Base_Administration_JMXUser and Base_Administration_JMXPassword define the credentials to access the JMX administration.
 Release 1.4

New features:

  • Implemented FTPSender and FTPReceiver to access files on FTP servers. An example of the configuration is shown in the directory of the automated tests (XBUS_HOME/test/standard.conf).
  • Implemented LDAPSender to access LDAP servers. Currently searching for attributes and strings is supported. An example of the configuration is shown in the directory of the automated tests (XBUS_HOME/test/standard.conf).
  • Implemented HTTPParameterSender and HTTPParameterReceiver to process URL's containing parameters. An example of the configuration is shown in the directory of the automated tests (XBUS_HOME/test/standard.conf).
  • Dominique Boivin contributed code to read email messages from POP3 accounts. An example how to use the POP3Receivers is shown in the directory of the automated tests (XBUS_HOME/test/standard.conf).
  • The CSV (comma seperated values) format is now supported by the new CSVMessages. Lots of features like delimiters, headings etc. can be configured.
  • The remote administration has been enhanced:
    • The status of ReceiverThreads and the status of the JVM can be viewed via JMX (ReceiverService) or the HTML administration (Tomcat).
    • ReceiverThreads can be stopped and started via JMX (ReceiverService) or the HTML administration (Tomcat).
  • A watchdog is started to monitor the ReceiverThreads. When a ReceiverThread terminates unexpected, it is started again automatically after some seconds.
  • The automated tests are now included in all kind of distributions. Their configuration serves as a good set of examples to configure the xBus. Precondition before running the tests are configured and running servers: Servlet Engine, Database, Message Queue (these three are included in the all-inclusive distribution), LDAP, FTP and Mail (these three are not included).

Implementation changes:

  • The parameter System_xxx_OnEmpty can now be set for every receiving or sending system. Default is to ignore empty messages when receiving messages and process the sending of empty messages.
  • Replaced OpenJMS 0.7.5 with OpenJMS 0.7.6.1 in the all-inclusive distribution, with it the database tables for OpenJMS have changed.
 Release 1.3

New features:

  • FileStreamSender/Receiver and HTTPStreamSender/Receiver have been invented. Their combination makes it possible to stream very large files from one server to another server via a HTTP connection without having them completely in main memory. Be aware that transformation and changes of the encoding are not possible when streaming.
  • Variables can be defined in standard.conf and be used in file names, URL's, queue names and so on. Example 3 shows how to use them.
  • Invented a plugin mechanism:
    • Configuration and messages can be split up into multiple files.
    • Configuration, messages and JAR files are additionally loaded from directory XBUS_HOME/plugin/etc resp. XBUS_HOME/plugin/lib.
    See the documentation and the examples for more details.
  • All FileXXXReceivers are available as FileXXXReceiverThreads as well.

Bug fixes:

  • 988051: Error in the wrapper config of openjms for xBus-allinclusiv
  • 994068: Wrong entry in xbus.conf for class NotifyErrorMessage

Configuration changes:

  • HTTPReceiver must explicitly be configured as System_xxx_Receiver.
  • Base_Journal_MessageLength, Base_Trace_MaxLength, DBConnection_xxx_MaxRows: -1 means there is no restriction.

Implementation changes:

  • Changed the implementation of the HTTPSender. Jakarta Commons HTTPClient is now used, because it has some more advanced features then the implementation of the JDK.
  • Commit or rollback of transactions is not done by Adapter.callApplication() anymore. Now the receivers are responsible for the complete lifecycle of a transaction.
  • Replaced Tomcat 5.0.16 with Tomcat 5.0.25 in the all-inclusive distribution, due to a bug in Tomcat when dealing with larger files. Unfortunately the JMX server made problem with the new Tomcat version and is now switched off, when the xBus is running inside Tomcat.
  • Replaced HSQLDB 1.7.1 with HSQLDB 1.7.2 in the all-inclusive distribution, this causes some changes in the SQL create scripts for HSQLDB.
  • Replaced Wrapper 3.0.3 with Wrapper 3.1.1
 Release 1.2

  • Fixed bug #918582 Error with single invoke
  • Changed example 4, now an example how to send a request and receive a response
  • Guido Schreuder made a test with an Oracle database, which resulted in some changes:
    • The table structure of the journaling table had to be changed, because it is not acceptable for Oracle. The first column "number" had a name that is reserved in Oracle. The column names of the new structure have a prefix to avoid such problems. An ALTER TABLE script for MySQL is provided. For other databases you have to rename or drop the current table journal and create it again with the changed CREATE TABLE script (to be found under XBUS_HOME/src/sql). Alternativly you may write your own ALTER TABLE script.
    • The database table example5 had to be changed too, because of the same reason. The CREATE TABLE sript will drop the table and create it again with different column names.
    • Create table SQL scripts are now provided for HSQLDB, MySQL and Oracle.
    • A new configuration entry DBConnection_name_URL has been introduced. The value is a complete URL to connect to the database. When using this entry, DBConnection_name_URLPrefix/Host/Port/Database are not used anymore. Both ways of defining the address of the database are possible.
    • DBJournal may use an additional configuration entry: Base_Journal_DBConnection=name. If it is set, a database connection with config entries like DBConnection_name_xxx will be used. If it is not set, xBus is backwards compatible, i.e. this change in the configuration is optional.
    • The Oracle JDBC-driver always returns an empty string for the function ResultSetMetadata.getTableName(). This resulted in XML-tags with names like <.ID> which got refused by the XML-parser since XML-tags cannot start with a dot. The code has been changed so that when an empty tablename is encountered it just uses the column name i.e. <ID>.
  • Tested the xBus with Tomcat 5.0.x. With the Tomcat standard installation, the JMXReceiver thread of the xBus cannot be started. All jar files named jmx*.jar must be moved from CATALINA_HOME/common/libs to CATALINA_HOME/server/libs, to make the JMXReceiver start. The reason is Tomcat's classloader. All jar files in CATALINA_HOME/common/libs are visible to the xBus and Tomcat uses another JMX implementation. Apart from this, the xBus runs fine with Tomcat 5.0.x.
  • Replaced Tomcat 4.1.18 with Tomcat 5.0.16 in the all-inclusive distribution.
  • Added the XBUSSystem to get/setText() of interface TextMessage and get/setObject() of interface ObjectMessage and changed all message modules that are implementing these two interface. E.g. the RecordTypeMessage needs this additional information to find the proper interface definition file.

 Release 1.1

  • Some refactoring with following changes in xbus.conf
  • System_xxx_Type (Text/Object) must not be specified anymore in standard.conf
  • Invented a special ClassLoader, now only xbus-bootstrap.jar must be in the CLASSPATH. With this some scripts and the calling of the JavaReceiver have been changed (see Starting)
  • Added an example for the JavaReceiver (see example 4)
  • Added the calling system to the signature of JavaReceiver.receive (see Starting)
  • Transformers can be defined individually in standard.conf (see example 4)
  • Added JavaTransformer, it calls a configured method of a configured class (see example 4)
  • Added DBSender, it reads SQL statements from a XML request, sends them to a database and returns the result in a XML response (see example 5)

 Release 1.0

First release of the xBus to the public.