|
Type
|
Changes
|
By
|
|
Added authentication support, contributed by Knut Lerpold.
For details, see the
Configuring Security
document.
|
|
|
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
|
|
|
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
|
|
|
Replaced logging API with
Commons-Logging
|
|
|
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.
|
|
|
Added create_sapdb.sql script, contributed by Elias Martenson
|
|
|
Added JmsServer(Configuration) constructor, as per RFE 865658
|
|
|
Fixed bug 746875 - QueueBrowser fails to select messages
|
|
|
Fixed bug 759752 - Resumed durable subcriber after network outage
fails to receive messages
|
|
|
Fixed bug 744331 - messages.messageBlob using wrong field type in
PostgreSQL, contributed by Juan Carlos Estibariz
|
|
|
Fixed bug 753216 - Null pointer in connection.close()
|
|
|
Fixed bug 682160 - Connection.close() behaviour not compliant
|
|
|
Fixed bug 755234 - Discrepancy in LeaseManager conf
iguration
|
|
|
Fixed bug 768543 - Deadlock btw LeaseManager and
DestinationManager.collectGarb
|
|
|
Fixed bug 774128 - QueueDestinationCaches not gc'ed for temp
destinations
|
|
|
Fixed bug 777419 - Deadlock in the tcp connector
|
|
|
Fixed bug 785039 - Client shutdown problem
|
|
|
Fixed bug 786163 - bad JMSDeliveryMode should cause
InvalidSelectorException
|
|
|
Fixed bug 786622 - Invalid string literal in selector should throw
exception
|
|
|
Fixed bug 788029 - Could not get message for handle error
|
|
|
Fixed bug 737037 - http transport ignores servlet path
|
|
|
Fixed bug 782209 - JMSMessageID generation inadequate.
|
|
|
Fixed bug 796633 - openjms.bat script terminates command prompt
|
|
|
Fixed bug 797284 - http connector: Failed to process request
|
|
|
Fixed bug 806378 - HTTPS connector configuration documentation
incomplete
|
|
|
Fixed bug 806377 - HTTPS connector shouldn't convert host names
|
|
|
Fixed bug 811702 - Can administratively remove active durable consumer
|
|
|
Fixed bug 819212 - Failed to delete the message with id=ID:..
|
|
|
Fixed bug 823331 - Can't acknowledge message after republishing
|
|
|
Fixed bug 827545 - non-persistent msgs to non durable subscriber not
expiring
|
|
|
Fixed bug 826378 - errors in oracle table script
|
|
|
Fixed bug 816895 - Exception in purgeMessages.
|
|
|
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.
|
|
|
Fixed bug 832157 - Remove LeaseManagerConfiguration.
As a consequence, the
<
LeaseManagerConfiguration/
>
element is no longer required in openjms.xml (specifying it
will cause a FailedToCreateServerException).
|
|
|
Fixed bug 867522 - Non OpenJMS messages not supported.
Messages from other JMS providers may now be sent via OpenJMS.
|
|
|
Fixed bug 854819 - getAllDestinations() return value is documented
incorrectly
|
|
|
Fixed bug 866885 - ConcurrentModificationException in server during
sync recv
|
|
|
Fixed bug 856383 - queue names longer then 50 chars
|
|
|
Fixed bug 831469 - ClassCastException when using MDBs in Sun ONE AS7
|
|
|
Fixed bug 879302 - tcp connector threads remain active
|
|
|
Fixed bug 875922 - time to wait for retrieving message is incorrect
|
|
|
Fixed bug 875841 - Error performing JNDI lookups from Sun ONE App
Server 7, contributed by Bo Min Jiang.
|
|
Type
|
Changes
|
By
|
|
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.
|
|
|
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>
|
|
|
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
|
|
|
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
|
|
|
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.
|
|
|
Fixed bug 669033 - Can't shutdown embedded server via admin API
|
|
|
Fixed bug which prevented the use of an external JNDI provider
|
|
|
Fixed bug which prevented the registration of heirarchical topics
|
|
|
Fixed bug which prevented messages created via
Session.createMessage() from being made persistent if their JMSType
was null.
|
|
|
Fixed memory leak of Connection instances for the rmi and embedded
connectors.
|
|
|
Fixed bug in the SSL connector, which wasn't requiring clients
to authenticate themselves.
|
|
|
Added code to support realtime database garbage collection 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
|
|
|
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
|
|
|
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.
|
|
|
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".
|
|
|
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.
|
|
|
Modified 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"
|
|
|
Added the method JmsAdminServerIfc.destinationExists(String name) so a
client can query whether a destination exists.
|
|
Type
|
Changes
|
By
|
|
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
.
|
|
|
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
|
|
|
Made the -config switch to JmsServer and AdminMgr optional.
If not specified, the configuration file:
${openjms.home}/config/openjms.xml
will be used
|
|
|
Fixed memory leak in the server's handling of QueueBrowsers
|
|
|
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.
|
|
|
Fixed NPE in the intravm client. It wasn't handling 'is-alive' pings
from the server.
|
|
|
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.
|
|
|
Fixed bug 665495: "receive blocks all sessions on tcp"
This bug, introduced in 0.7.3, also
impacted the http connector.
|
|
|
Fixed bug 667595: "InvalidDestinationException for null
destination"
|
|
|
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.
|
|
|
Fixed bug 667581: "Incorrect default priority"
The priority previously defaulted to 0. It now defaults to
Message.DEFAULT_PRIORITY (4)
|
|
|
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
|
|
|
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.
|
|
|
Modified the build.xml file and openjms so that it now compiles and
runs under both JDK1.3 and JDK1.4.
|
|
|
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 openjm
s.war in Jakarta Tomcat since you do not to change the
server.xml configuration file. This was tested against Tomcat v4.1.18
|
|
|
Add create_informix.sql script, which was provided by Ludovic
Pourrat.
|
|
Type
|
Changes
|
By
|
|
Fixed a FATAL issue with TCP, which preventing it from working in
v0.7.3.
Build v0.7.3 is invalid for TCP.
|
|
|
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.
|
|
Type
|
Changes
|
By
|
|
Applied a patch by Christer Homer to fix bug #915
|
|
|
Fixed a problem with transacted sessions, queues and asynchronous
listener. Messages were being acked more than once.
|
|
|
Fixed a problem with client ack mode and Qeueues. Messages were not
being acknowledged correctly.
|
|
|
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.
|
|
|
Fixed bug 889 - Rollback on transacted session does not work correctly.
If the session was rolled back the messages were never resent.
|
|
|
Fixed bug 669 - Receiving from a temporary topic within the scope of
the same connection as the publisher does not work.
|
|
|
Changed garbage collection policy so that when memory is low,
persistent messages are removed from transient memory. They are then
retrieved as required.
|
|
|
Fixed a bug with receive(time).
|
|
|
Fixed bug 966, which prevented the creation of a publisher with a null
queue.
|
|
Type
|
Changes
|
By
|
|
Fixed bug 888, rolling back a transaction with an asynchronous
consumer.
|
|
|
Fixed the intermittent client disconnection problem for RMI. The
problem was evident under heavy load and led to the client
failing to contact the server and assuming the server was
unavailable. The solution was to retry the request.
|
|
|