Chapter 4. Remoting libraries and thirdparty dependancies

Remoting partitions its functionality into several different libraries to allow the size of the footprint to be controlled according to the features that will be used. Remoting distribution will include the following remoting binaries (found in the lib directory of the distribution).

jboss-remoting.jar - this binary contains all the remoting classes. This is the only remoting jar that is needed to perform any remoting function within JBoss Remoting. Of course, third party jars will be required.

Since some may want to better control size of the binary footprint needed to use remoting, the remoting classes have been broken out into multiple remoting binaries based on their function. There are four categories of these binaries; core, detection, transport, and other.

core

jboss-remoting-core.jar - contains all the core remoting classes needed for remoting to function. If not using jboss-remoting.jar, then jboss-remoting.core.jar will be required.

detection

jboss-remoting-detection - contains all the remoting classes needed to perform automatic discovery of remoting servers. It includes both the jndi and multicast detector classes as well as the network registry classes.

transport

jboss-remoting-socket.jar - contains all the classes needed for the socket and sslsocket transports to function as both a client and a server.

jboss-remoting-socket-client.jar - contains all the classes needed for the socket and sslsocket transports to function as a client only. This means will not be able to perform any push callbacks or sending of streams using this jar.

jboss-remoting-http.jar - contains all the classes needed for the http and https transports to function as a client and a server.

jboss-remoting-http-client.jar - contains all the classes needed for the http, https, servlet, and sslservlet transports to function as a client only. This means will not be able to perform any push callbacks or sending of streams using this jar.

jboss-remoting-servlet.jar - contains all the classes needed for the servlet or sslservlet transports to function as a server only (also requires servlet-invoker.war be deployed within web container as well).

jboss-remoting-rmi.jar - contains all the classes needed for the rmi and sslrmi transports to function as a client and a server.

jboss-remoting-multiplex.jar - contains all the classes needed for the multiplex and sslmultiplex transports to function as a client and a server.

jboss-remoting-bisocket.jar - contains all the classes needed for the bisocket and sslbisocket transports to function as both a client and a server.

jboss-remoting-bisocket-client.jar - contains all the classes needed for the bisocket and sslbisocket transports to function as a client only. This means will not be able to perform any push callbacks or sending of streams using this jar.

other

jboss-remoting-serialization.jar - contains just the remoting serialization classes (and serialization manager implementations for java and jboss).

jboss-remoting-samples.jar - all the remoting samples showing example code for different remotng functions.

4.1. Third party libraries

This section covers which thirdparty jars are required based on the feature or transport to be used. Remember, any jboss-remoting-XXX.jar can be replaced with just the jboss-remoting.jar.

Table 1 gives the direct dependencies of the Remoting jars on third party jars (and jboss-remoting-core.jar, in most cases). Table 2 gives the transitive closure of Table 1.

The information in Tables 1 and 2 was derived with the use of the extremely useful Tattletale tool, available on the jboss.org website: http://www.jboss.org/tattletale

Table 4.1. Jar dependencies.

jar

depends on

jboss-remoting-bisocket-client.jar:

concurrent.jar, jboss-common.jar, jboss-remoting-core.jar, jboss-serialization.jar

jboss-remoting-bisocket.jar:

concurrent.jar, jboss-common.jar, jboss-remoting-core.jar, jboss-serialization.jar

jboss-remoting-core.jar:

concurrent.jar, jboss-common.jar, jboss-jmx.jar, jboss-serialization.jar, log4j.jar, saxon.jar

jboss-remoting-detection.jar:

jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, jnpserver.jar, log4j.jar, saxon.jar

jboss-remoting-http-client.jar:

jboss-common.jar, jboss-remoting-core.jar

jboss-remoting-http.jar:

commons-httpclient.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, tomcat-coyote.jar, tomcat-util.jar

jboss-remoting-multiplex.jar:

concurrent.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, jboss-serialization.jar, log4j.jar

jboss-remoting-rmi.jar:

jboss-common.jar, jboss-remoting-core.jar

jboss-remoting-samples.jar:

dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, jboss-remoting-detection.jar, jboss-remoting-multiplex.jar, jnpserver.jar, junit.jar, saxon.jar, servlet-api.jar

jboss-remoting-serialization.jar:

jboss-common.jar, jboss-remoting-core.jar, jboss-serialization.jar

jboss-remoting-servlet.jar:

jboss-common.jar, jboss-remoting-core.jar, servlet-api.jar

jboss-remoting-socket-client.jar:

concurrent.jar, jboss-common.jar, jboss-remoting-core.jar

jboss-remoting-socket.jar:

concurrent.jar, jboss-common.jar, jboss-remoting-core.jar, jboss-serialization.jar

jboss-remoting.jar:

commons-httpclient.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-serialization.jar, jnpserver.jar, junit.jar, log4j.jar, saxon.jar, servlet-api.jar, tomcat-coyote.jar, tomcat-util.jar

Table 4.2. Transitive closure of jar dependencies.

jar

depends on

jboss-remoting-bisocket-client.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, [jboss-remoting-detection.jar], jboss-serialization.jar, [jnpserver.jar], log4j.jar, trove.jar

jboss-remoting-bisocket.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, [jboss-remoting-detection.jar], jboss-serialization.jar, [jnpserver.jar], log4j.jar, trove.jar

jboss-remoting-core.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, [jboss-remoting-detection.jar], jboss-serialization.jar, [jnpserver.jar], log4j.jar, trove.jar

jboss-remoting-detection.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, jboss-serialization.jar, jnpserver.jar, log4j.jar, trove.jar

jboss-remoting-http-client.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, [jboss-remoting-detection.jar], jboss-serialization.jar, [jnpserver.jar], log4j.jar

jboss-remoting-http.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, [jboss-remoting-detection.jar], jboss-serialization.jar, [jnpserver.jar], log4j.jar, trove.jar

jboss-remoting-multiplex.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, [jboss-remoting-detection.jar], jboss-serialization.jar, [jnpserver.jar], log4j.jar, trove.jar

jboss-remoting-rmi.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, [jboss-remoting-detection.jar], jboss-serialization.jar, [jnpserver.jar], log4j.jar, trove.jar

jboss-remoting-samples.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, jboss-remoting-detection.jar, jboss-remoting-multiplex.jar, jboss-serialization.jar, jnpserver.jar, junit.jar, log4j.jar, servlet-api.jar, trove.jar

jboss-remoting-serialization.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, [jboss-remoting-detection.jar], jboss-serialization.jar, [jnpserver.jar], log4j.jar, trove.jar

jboss-remoting-servlet.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, [jboss-remoting-detection.jar], jboss-serialization.jar, [jnpserver.jar], log4j.jar, servlet-api.jar, trove.jar

jboss-remoting-socket-client.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, [jboss-remoting-detection.jar], jboss-serialization.jar, [jnpserver.jar], log4j.jar, trove.jar

jboss-remoting-socket.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-core.jar, [jboss-remoting-detection.jar], jboss-serialization.jar, [jnpserver.jar], log4j.jar, trove.jar

jboss-remoting.jar:

commons-httpclient.jar, commons-logging-api.jar, concurrent.jar, dom4j.jar, jboss-common.jar, jboss-jmx.jar, jboss-remoting-detection.jar, jboss-serialization.jar, jnpserver.jar, junit.jar, log4j.jar, servlet-api.jar, tomcat-apr.jar, tomcat-coyote.jar, tomcat-util.jar, trove.jar

Notes.

1. jboss-remoting-core contains the transporter classes, and some of those need jboss-remoting-detection.jar, which explains the proliferation of jboss-remoting-detection.jar in Table 2. If transporters are not used, then jboss-remoting-detection.jar can be omitted. Moreover, JNDI detection requires jnpserver.jar, so that, if transporters are not used, jnpserver.jar can be omitted.

2. jboss-common.jar needs commons-httpclient.jar, which explains the transitive dependency of all Remoting jars on commons-httpclient.jar. Also, commons-httpclient.jar needs commons-logging-api.jar.

3. Remoting requires the use of JMX classes. It does not require the JBoss implementation (jboss-jmx.jar) of JMX in order to function correctly, so can replace jboss-jmx.jar with another JMX implementation library (or exclude it if using jdk 1.5 or higher, which has JMX implementation built in).

4. Multicast detection requires jboss-remoting-detection.jar, concurrent.jar, dom4j.jar. JNDI detection: requires jboss-remoting-detection.jar, concurrent.jar, dom4j.jar, jnpserver.jar (for jndi api classes). dom4j.jar for use of detection is required by jboss-jmx.jar.