Release 0.7.7-dev - in CVS

Type

Changes

By

OpenJMS now supports version 1.1 of the JMS API.

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).

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
.

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.

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.

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

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

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

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

serverName

jndiName

adminName

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

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.

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 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

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.

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"

Added the method JmsAdminServerIfc.destinationExists(String name) so a
client can query whether a destination exists.

Release 0.7.4 - January 24, 2003

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 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 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 create_informix.sql script, which was provided by Ludovic
Pourrat.

Release 0.7.3.1 - November 15, 2002

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.

Release 0.7.3 - November 10, 2002

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.

Release 0.7.2b14 - June 8, 2002

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 t
he server and assuming the server was
unavailable. The solution was to retry the request.