The purpose of JBoss Remoting is to provide a single API for most network based invocations and related service that uses pluggable transports and data marshallers. The JBossRemoting API provides the ability for making synchronous and asynchronous remote calls, push and pull callbacks, and automatic discovery of remoting servers. The intention is to allow for the use of different transports to fit different needs, yet still maintain the same API for making the remote invocations and only requiring configuration changes, not code changes.
JBossRemoting is a standalone project, separate from the JBoss Application Server project, but will be the framework used for many of the JBoss projects and components when making remote calls. JBossRemoting is included in the recent releases of the JBoss Application Server and can be run as a service within the container as well. Service configurations are included in the configuration section below.
The features available with JBoss Remoting are:
Server identification – a simple url based identifier which allows for remoting servers to be identified and called upon.
Pluggable transports – can use different protocol transports the same remoting API.
Provided transports:
Socket (SSL Socket)
RMI (SSL RMI)
HTTP(S)
Servlet (SSL Servlet)
Bisocket (SSL Bisocket)
Pluggable data marshallers – can use different data marshallers and unmarshallers to convert the invocation payloads into desired data format for wire transfer.
Pluggable serialization - can use different serialization implementations for data streams.
Provided serialization implementations:
Java serialization
JBoss serialization
Automatic discovery – can detect remoting servers as they come on and off line.
Provided detection implementations:
Multicast
JNDI
Server grouping – ability to group servers by logical domains, so only communicate with servers within specified domains.
Callbacks – can receive server callbacks via push and pull models. Pull model allows for persistent stores and memory management.
Asynchronous calls – can make asynchronous, or one way, calls to server.
Local invocation – if making an invocation on a remoting server that is within the same process space, remoting will automatically make this call by reference, to improve performance.
Remote classloading – allows for classes, such as custom marshallers, that do not exist within client to be loaded from server.
Sending of streams – allows for clients to send input streams to server, which can be read on demand on the server.
Clustering - seamless client failover for remote invocations.
Connection failure notification - notification if client or server has failed
Data Compression - can use compression marshaller and unmarshaller for compresssion of large payloads.
All the features within JBoss Remoting were created with ease of use and extensibility in mind. If you have a suggestion for a new feature or an improvement to a current feature, please log in our issue tracking system at http://jira.jboss.com
The JBossRemoting distribution can be downloaded from http://www.jboss.org/jbossremoting/ . This distribution contains everything needed to run JBossRemoting stand alone. The distribution includes binaries, source, documentation, javadoc, and sample code.
Version 2.5.0 represents the process of upgrading the jars with which Remoting is tested and shipped. In particular, the jars are now equivalent to the jars found in the JBoss Application Server version 5.0.0.CR2 (as of 9/6/08, before its release). Changes to jbossweb (the JBoss version of Tomcat) have necessitated dropping the use of Apache Tomcat, which means that the "http" transport will no longer function with jdk 1.4.
Other features of Remoting 2.5.0.GA should function with jdk 1.4. However, it is the policy of JBoss, a division of Red Hat, no longer to support jdk 1.4.
Introduction of "connection identity" concept
Introduction of write timeout facility;
improved reliability for callbacks in bisocket transport;
improved treatment of invocation retries in socket and bisocket transports;
More flexible configuration (see, for example, org.jboss.remoting.Remoting.CONFIG_OVERRIDES_LOCATOR)
Added immediate shutdown option for socket transport
Multiple bug fixes.
Security fix (JBREM-1116 "Remove SecurityUtility")
More flexible configuration (see org.jboss.remoting.Client.USE_ALL_PARAMS)
Jars updated to conform to Application Server 5.1.0.CR1
Multiple bug fixes.
CoyoteInvoker adds the URL query to the InvocationRequest request map.
A leak in Java serialization output marshalling has been fixed.
The remote classloading facility can be configured with lists of classloaders.
Classloading in the client can optionally start with the thread context classloader.
Leasing can be enabled declaratively.
JBossRemoting 2.4.0.GA is an incremental release, with dozens of bug fixes and several new features:
servers can be bound to multiple IP addresses
can run in the presence of a security manager
greater configurability
supports IPv6 addresses
improved connection monitoring
server gets client address in invocations