Release History

VersionDateDescription
0.7.7-dev in CVS
0.7.6.2 in CVS
0.7.6.1 May 7, 2004
0.7.6 January 29, 2004
0.7.5 May 10, 2003
0.7.4 January 24, 2003
0.7.3.1 November 15, 2002
0.7.3 November 10, 2002
0.7.2b14 June 8, 2002

Get the RSS feed of the last changes

Release 0.7.7-dev - in CVS

TypeChangesBy
update

OpenJMS now supports version 1.1 of the JMS API.

update

The HTTP and HTTPS connectors now communicate with the OpenJMS server via the openjms-tunnel servlet.

This replaces the servlets deployed in openjms.war in previous releases. The openjms-tunnel servlet supports bidirectional communication. This means that the server no longer needs to establish socket connections back to clients (which was problematic for hosts with firewalls).

See Configuring the HTTP Connector   and Configuring the HTTPS Connector   for more details.

update

Added a new attribute bindAll   to TcpConfiguration , TcpsConfiguration , HttpConfiguration   and HttpsConfiguration .

This can be used to change how the server accepts connections. If "true" , the server will accept connections on all network interfaces. If "false"   the server will only accept connections on the host specified by ServerConfiguration .

update

The server now listens on a single port for client connections, when the TCP, TCPS, HTTP, or HTTPS connector is configured.

Previously, two ports were required. However, the server, embedded JNDI service and administration service can be configured to use separate ports.

update

The TCPS connector now supports configuration of the truststore and keystore in openjms.xml as per RFE 667023 - "Add support to configure tcps connector". See TcpsConfiguration   for more details.

update

The TCPS connector no longer defaults to requiring clients to authenticate themselves. See Client authentication   for more details.

update

The HTTP and HTTPS connectors no longer require a TCP connector to be configured.

update

Changed the configuration of the HttpConfiguration   and HttpsConfiguration   elements in openjms.xml .

The meanings of the port   and host   attributes have changed. Previously, these used to represent the web-server host and port. Now, they represent the host and port that the server is handling requests from the openjms-tunnel servlet on.

Two new attributes, webServerHost   and webServerPort , now represent the web-server host and port.

The following attributes, previously part of HttpConfiguration   and HttpsConfiguration , are no longer supported:

  • proxyHost
  • proxyPort
  • clientPingInterval
  • serverServlet
  • jndiServlet
  • adminServlet

remove

The following attributes, previously part of the RmiConfiguration   element in openjms.xml   are no longer supported:

  • serverName
  • jndiName
  • adminName

remove

The following attributes, previously part of the DatabaseConfiguration   element in openjms.xml   are no longer supported:

  • garbageCollectionInterval
  • garbageCollectionBlockSize
  • garbageCollectionThreadPriority

fix

Fixed bug 1214292 - topicSubscriber.close() hangs.

fix

Fixed bug 1192265 - Message lost in multi-processor environment.

fix

Fixed bug 1165743 - Persistent topic messages not removed from database.

fix

Fixed bug 1108562 - NullPointerException when calling DatabaseService.getAdapter

fix

Fixed bug 1144026 - ConcurrentModificationException in TopicDestinationCache

fix

Fixed bug 1058427 - QueueDestinationCache throws IndexOutOfBoundsException

fix

Fixed bug 934627 - MS SQL Server very frequent deadlock victim

fix

Fixed bug 1107742 - Clock Daemon Thread never exits in Applet

fix

Fixed bug 797688 - Embedded JNDI should support authentication

fix

Fixed bug 756237 telnet-ing directly to tcp connector/jndi yields OutOfMemory.

add

Added support for RFE-982260 - support for context classloader during deserialization

add

Added support for RFE 750870 - Cannot bind to a specific interface

add

Added support for RFE 1183082 - Weblogic ANTLR conflict

fix

Fixed bug 667580 - setClientID not throwing IllegalStateException

fix

Fixed bug 1124441 - Default port values for http, https, and tcps doco wrong.

fix

Fixed bug 1109259 - Applet client connection to firewalled server

fix

Fixed bug 971182 - Receiver remains active after network disconnection.

fix

Fixed bug 1023188 - Network cable disconnect does not deregister client.

fix

Fixed bug 1041628 - DestinationManager throws ArrayIndexOutOfBoundsException

fix

Fixed bug 1105874 - Can't use https connector with other JSSEs

fix

Fixed bug 949270 - JmsServer(config) throws NPE

fix

Fixed bug 1123902 - Heirarchical names results in NameNotFoundException

fix

Fixed bug 1236732: Impossible to bind queue to jms.queue1

remove

Dropped support for the JDBM database.

The JdbmDatabaseConfiguration   element of openjms.xml   is no longer valid.

OpenJMS now ships with a version of Derby as the default database. See Configuring the database   for more details.

update

Deprecated org.exolab.jms.server.EmbeddedJmsServer . The org.exolab.jms.server.JmsServer class should be used instead.

remove

Removed pre-0.7.5 release InitialContextFactory implementations:

  • RmiJndiInitialContextFactory
  • IpcJndiInitialContextFactory
  • IntravmJndiInitialContextFactory
  • HttpJndiInitialContextFactory
  • SslHttpJndiInitialContextFactory

remove

Dropped support for experimental batching RDBMS adapter.

Release 0.7.6.2 - in CVS

TypeChangesBy
fix Fixed bug 996959 - ConcurrentModificationException in ConsumerManager
fix Fixed bug 984891 - ConcurrentModificationException on server shutdown. Thanks to Andre Gebers.
update Changed create_oracle.sql script as per request 964261, to add indexes to avoid full table scans and use indexed primary keys Thanks to Michael Jaszczyk.
fix Fixed bug 964267 - column indexes, names column in inserts, close all db object Thanks to Michael Jaszczyk.

Release 0.7.6.1 - May 7, 2004

TypeChangesBy
fix Fixed bug 945783 - Runtime exceptions generated by MessageQueue
fix Fixed bug 945785 - NullPointerException using async delivery, selectors, queue
fix Fixed bug 938163 - Session not removing producers
fix Fixed bug 921517 - TCP JNDI IntialContext using static variables for obj. scope
fix Fixed bug 946176 - Deprecate JmsAdminServerIfc.purgeMessages()
fix Fixed bug 946283 - JMSCTS failure: StreamMessageTest.testIncrementalReadBytes
fix Fixed bug 891758 - DB table uses reserved word as column name
fix Fixed bug 947723 - syntax errors in create_sybase.sql Thanks to Robert T Brown.

Release 0.7.6 - January 29, 2004

TypeChangesBy
add Added authentication support. For details, see the Configuring Security document. Thanks to Knut Lerpold.
update

The database schema has changed, in order to support the fix for bug 782209 - "JMSMessageID generation inadequate".

To migrate an existing JDBC database to the new schema, run:

Windows

        
     
> cd %OPENJMS_HOME%\bin
   
     
> dbtool.bat -migrate -config ../config/openjms.xml
   
     
          
   
      

Unix

        
     
> cd $OPENJMS_HOME/bin
   
     
> dbtool.sh -migrate -config ../config/openjms.xml
   
     
          
   
      

Back up your database prior to doing this!

Limitations

  • no provision for migrating databases which are unsupported by dbtool
  • no provision for migrating a JDBM database

update

Merged openjms-rmi-client.jar   into openjms-client.jar . The openjms-rmi-client.jar   is no longer distributed.

See the Client JARS page for the list of JARS which must by included in order to use OpenJMS

update Replaced logging API with Commons-Logging
update

Replaced Tyrex and Proxool connection pooling support with Commons-DBCP .

Tyrex is no longer being actively maintained, and the latest versions of Proxool require JDK 1.3 (at time of writing).

User supplied connection pools may still be used.

add Added create_sapdb.sql script Thanks to Elias Martenson.
add Added JmsServer(Configuration) constructor, as per RFE 865658
fix Fixed bug 746875 - QueueBrowser fails to select messages
fix Fixed bug 759752 - Resumed durable subcriber after network outage fails to receive messages
fix

Fixed bug 744331 - messages.messageBlob using wrong field type in PostgreSQL

Thanks to Juan Carlos Estibariz.
fix Fixed bug 753216 - Null pointer in connection.close()
fix Fixed bug 682160 - Connection.close() behaviour not compliant
fix Fixed bug 755234 - Discrepancy in LeaseManager configuration
fix Fixed bug 768543 - Deadlock btw LeaseManager and DestinationManager.collectGarb
fix Fixed bug 774128 - QueueDestinationCaches not gc'ed for temp destinations
fix Fixed bug 777419 - Deadlock in the tcp connector
fix Fixed bug 785039 - Client shutdown problem
fix Fixed bug 786163 - bad JMSDeliveryMode should cause InvalidSelectorException
fix Fixed bug 786622 - Invalid string literal in selector should throw exception
fix Fixed bug 788029 - Could not get message for handle error
fix Fixed bug 737037 - http transport ignores servlet path
fix Fixed bug 782209 - JMSMessageID generation inadequate.
fix Fixed bug 796633 - openjms.bat script terminates command prompt
fix Fixed bug 797284 - http connector: Failed to process request
fix Fixed bug 806378 - HTTPS connector configuration documentation incomplete
fix Fixed bug 806377 - HTTPS connector shouldn't convert host names
fix Fixed bug 811702 - Can administratively remove active durable consumer
fix Fixed bug 819212 - Failed to delete the message with id=ID:..
fix Fixed bug 823331 - Can't acknowledge message after republishing
fix Fixed bug 827545 - non-persistent msgs to non durable subscriber not expiring
fix Fixed bug 826378 - errors in oracle table script
fix Fixed bug 816895 - Exception in purgeMessages.
fix

Fixed bug 831535 - Cannot connect to DB after idle several hours.

Support has been added to configure the connection pool to ensure invalid connections aren't used. See Connection pooling for more details.

fix

Fixed bug 832157 - Remove LeaseManagerConfiguration.

As a consequence, the < LeaseManagerConfigu ration/ >   element is no longer required in openjms.xml (specifying it will cause a FailedToCreateServerException).

fix

Fixed bug 867522 - Non OpenJMS messages not supported.

Messages from other JMS providers may now be sent via OpenJMS.

fix Fixed bug 854819 - getAllDestinations() return value is documented incorrectly
fix Fixed bug 866885 - ConcurrentModificationException in server during sync recv
fix Fixed bug 856383 - queue names longer then 50 chars
fix Fixed bug 831469 - ClassCastException when using MDBs in Sun ONE AS7
fix Fixed bug 879302 - tcp connector threads remain active
fix Fixed bug 875922 - time to wait for retrieving message is incorrect
fix Fixed bug 875841 - Error performing JNDI lookups from Sun ONE App Server 7. Thanks to Bo Min Jiang.

Release 0.7.5 - May 10, 2003

TypeChangesBy
update

Unified InitialContextFactory implementations into a single class.

To construct an InitialContext:

        
     
Hashtable properties = new Hashtable();
   
     
properties.put(Context.INITIAL_CONTEXT_FACTORY,
   
     
               "org.exolab.jms.jndi.InitialContextFactory");
   
     
properties.put(Context.PROVIDER_URL, "rmi://myhost:1099/");
   
     
Context initial = new InitialContext(properties);
   
     
          
   
      

To specify to connect to the JNDI provider using TCP:

        
     
properties.put(Context.PROVIDER_URL, "tcp://myhost:3035/");
   
     
          
   
      

Using HTTP:

        
     
properties.put(Context.PROVIDER_URL, "http://myhost:8080/");
   
     
          
   
      

The old InitialContextFactory implementations ( RmiJndiInitialContextFactory, IpcJndiInitialContextFactory, IntravmJndiInitialContextFactory, HttpJndiInitialContextFactory, SslHttpJndiInitialContextFactory ) may still be used, but will be removed in a future release.

add

Added support for multiple connectors.

In order to configure multiple connectors, simply add a < Connector > entry for each desired connector.

Each connection factory must have a different name.

E.g, to configure tcp and rmi connectors:

        
     

   
     <
   
     Connectors;
   
     >
   
     
  
   
     <
   
     Connector scheme="rmi"
   
     >
   
     
    
   
     <
   
     ConnectionFactories
   
     >
   
     
      
   
     <
   
     QueueConnectionFactory name="RMIQueueConnectionFactory" /
   
     >
   
     
      
   
     <
   
     TopicConnectionFactory name="RMITopicConnectionFactory" /
   
     >
   
     
    
   
     <
   
     /ConnectionFactories
   
     >
   
     
  
   
     <
   
     /Connector
   
     >
   
     
  
   
     <
   
     Connector scheme="tcp"
   
     >
   
     
    
   
     <
   
     ConnectionFactories
   
     >
   
     
      
   
     <
   
     QueueConnectionFactory name="TCPQueueConnectionFactory" /
   
     >
   
     
      
   
     <
   
     TopicConnectionFactory name="TCPTopicConnectionFactory" /
   
     >
   
     
    
   
     <
   
     /ConnectionFactories
   
     >
   
     
  
   
     <
   
     /Connector
   
     >
   
     

   
     <
   
     /Connectors
   
     >
   
     
          
   
      

update

Simplified URLs for the RMI connector. The server path no longer needs to be specified in the URL.

E.g, when specifying the Context.PROVIDER_URL, rmi://myhost:1099/   is equivalent to rmi://myhost:1099/JndiServer

When specifying the administration URL, rmi://myhost:1099/ is equivalent to rmi://myhost:1099/JmsAdminServer

update

Simplified the Context.PROVIDER_URL for the HTTP and HTTPS connectors. The server path no longer needs to be specified in the URL.

E.g, http://myhost:8080/   is equivalent to http://myhost:8080/openjms/OpenJMSJndi

and https://myhost:8443/   is equivalent to https://myhost:8443/openjms/OpenJMSJndi

update

Changed the behaviour of the http connector. Previously, if the JndiConstants.HTTP_CLIENT_URL_PROPERTY property wasn't set, the value would default to http://localhost:8080/openjms/OpenJMSClient , which isn't very useful for most applications. It now defaults to the host and port of the server's web server.

fix Fixed bug 669033 - Can't shutdown embedded server via admin API
fix Fixed bug which prevented the use of an external JNDI provider
fix Fixed bug which prevented the registration of heirarchical topics
fix Fixed bug which prevented messages created via Session.createMessage() from being made persistent if their JMSType was null.
fix Fixed memory leak of Connection instances for the rmi and embedded connectors.
fix Fixed bug in the SSL connector, which wasn't requiring clients to authenticate themselves.
update Added code to support realtime database garbage collecti on for topics and queues. Previously we only supported queues. This option means that we can deprecate the garbage collection options on the DatabaseConfiguration element. This is only supported for JDBC since we will be deprecate support for JDBM in the near future
fix Made changes to JMSServerSession so that a message is only made persistent if the delivery mode is PERSISTENT and the destination is an administered destination
fix Added support for administered wildcard destinations and durable consumers. So a destination such as "*" can be defined and durable subscribers attached to it. Such a consumer will receive all messages destined for single level destinations (i.e topic1, jima, exolab etc) The existing wild carding mechanism is too limited.
fix Made a change to the connection garbage collection algorithm. Now a connection will only be cleaned up if there are 3 consecutive failures to a ping request. Connection GC is scheduled every minute. Previously, the server was occasionally, prematurely cleaning up connections even if the client was still active. This would be seen with the error "No consumer registered with Id XX".
fix Previously, when a client terminated abnormally while it has a receiver waiting on a synchronous receive, the server would display an error indicating that it could not send the notification when a message for that receiver became available. This would only happen if a message arrived almost at the same time as the client was terminated. This error message is not displayed at the moment.
update Modi fied the factory binding so that if "localhost" is specified as the server host name, it will be replaced with the IP address. This enables clients to connect from a different host, even if the server host name is configured with "localhost"
add Added the method JmsAdminServerIfc.destinationExists(String name) so a client can query whether a destination exists.

Release 0.7.4 - January 24, 2003

TypeChangesBy
update Refactored the OpenJMS startup, shutdown and administration scripts. There is now a single script to perform these tasks: openjms.bat   ( openjms.sh   for unix). Helper scripts are provided:
  • startup.sh - invokes openjms.sh start
  • shutdown.sh - invokes openjms.sh stop
  • admin.sh - invokes openjms.sh admin
  • startup.bat - invokes openjms.bat start
  • shutdown.bat - invokes openjms.bat stop
  • admin.bat - invokes openjms.bat admin
The original startjms script now invokes openjms run .
update The scripts now ignore the global CLASSPATH environment variable.

In order to specify JDBC driver jars, create a script named setenv.bat   ( setenv.sh   for Unix) in $OPENJMS_HOME/bin, and set the CLASSPATH in it. This will be called by the openjms script.

Eg, to configure the CLASSPATH for Oracle on Windows, setenv.bat might look like:
        
     
  rem set up the classpath to include the Oracle JDBC drivers            
   
     
  set CLASSPATH=c:/oracle/jdbc/lib/classes12.zip
   
     
        
   
      
update Made the -config switch to JmsServer and AdminMgr optional. If not specified, the configuration file:

${openjms.home}/config/openjms.xml

will be used
fix Fixed memory leak in the server's handling of QueueBrowsers
fix Updated to ANTLR 2.7.2a2. ANTLR 2.7.1 was producing code in SelectorLexer which when compiled exceeded the JVM method size limit of 65535 bytes, resulting in a java.lang.ClassFormatError exception at runtime.
fix Fixed NPE in the intravm client. It wasn't handling 'is-alive' pings from the server.
update The < TcpsConfiguration > is now used to determine the port and jndiPort when the tcps connector is configured. In previous releases, it was ignored and the < TcpConfiguration > used instead.

Note : the default port for the tcps connector is 3031.
fix Fixed bug 665495: " receive blocks all sessions on tcp "

This bug, introduced in 0.7.3, also impacted the http connector.
fix Fixed bug 667595: " InvalidDestinationException for null destination "
fix Fixed bug 667590: " Incorrect default delivery mode "

NOTE: this may break existing clients which expect NON_PERSISTENT to be the default delivery mode .

Clients which specify the delivery mode will be unaffected.
fix Fixed bug 667581: " Incorrect default priority "

The priority previously defaulted to 0. It now defaults to Message.DEFAULT_PRIORITY (4)
fix Fixed bug 667597: " IllegalStateException for non-transacted commit "

Previously a JMSException was thrown if Session.commit() or Session.rollback() were invoked for a non-transacted session. It now throws a javax.jms.IllegalStateException
update Refactored the message cache in the engine. Messages are no longer cached at the MessageMgr level. Now they are cached at the DestinationCache level for queues and the CosumerEndpoint level for topics. This also reduces contention to single data structure and improves performance of the overall server.
update Modified the build.xml file and openjms so that it now compiles and runs under both JDK1.3 and JDK1.4.
update Modified the HTTP configuration so that the URL is now in the form of /openjms/[name-of-servlet ] . This changes simplifies the deployment of the openjms.war in Jakarta Tomcat since you do not to change the server.xml configuration file. This was tested against Tomcat v4.1.18
add Add create_informix.sql script, which was provided by Ludovic Pourrat.

Release 0.7.3.1 - November 15, 2002

TypeChangesBy
fix Fixed a FATAL issue with TCP, which preventing it from working in v0.7.3.

Build v0.7.3 is invalid for TCP.
add Added a sample openjms-wrapper.conf, which can be used with http://wrapper.sourceforge.net, to install it as an NT service. Modify the configuration file to suit your environment and then execute Wrapper.exe -i config-file to install the service.

Release 0.7.3 - November 10, 2002

TypeChangesBy
fix Applied a patch by Christer Homer to fix bug #915
fix Fixed a problem with transacted sessions, queues and asynchronous listener. Messages were being acked more than once.
fix Fixed a problem with client ack mode and Qeueues. Messages were not being acknowledged correctly.
fix Messages for Queues are now removed from the database once they have been acknowledged. If your JMS application is simply using Queues there is no need to run the database garbage collection service.
fix Fixed bug 889 - Rollback on transacted session does not work correctly. If the session was rolled back the messages were never resent.
fix Fixed bug 669 - Receiving from a temporary topic within the scope of the same connection as the publisher does not work.
update Changed garbage collection policy so that when memory is low, persistent messages are removed from transient memory. They are then retrieved as required.
fix Fixed a bug with receive(time).
fix Fixed bug 966, which prevented the creation of a publisher with a null queue.

Release 0.7.2b14 - June 8, 2002

TypeChangesBy
fix Fixed bug 888, rolling back a transaction with an asynchronous consumer.
fix Fixed the intermittent client disconnection problem for RMI. The problem was evident under heavy load and led to the client failing to contact t he server and assuming the server was unavailable. The solution was to retry the request.