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.
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.
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.
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.
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-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.
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.
This section covers which thirdparty jars are required based on the feature or transport to be used. Remember, whenever see jboss-remoting-XXX.jar mentioned, they can all be replaced with just the jboss-remoting.jar.
All remoting servers: jboss-remoting-core.jar, jboss-common.jar, jboss-jmx.jar, log4j.jar
All remoting clients: jboss-remoting-core.jar, jboss-common.jar, jboss-jmx.jar, log4j.jar, concurrent.jar
Note: concurrent.jar needed because of org.jboss.util.id.GUID used to create session id within Client (http://jira.jboss.com/jira/browse/JBREM-549)
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).
Multicast detection: jboss-remoting-detection.jar, concurrent.jar, dom4j.jar
JNDI detection: jboss-remoting-detection.jar, concurrent.jar, dom4j.jar, jnpserver.jar (for jndi api classes)
The dom4j.jar for use of detection is required because using jboss-jmx.jar.
Socket server: jboss-remoting-socket.jar
Socket client: jboss-remoting-socket-client.jar
HTTP server: jboss-remoting-http.jar, tomcat-coyote.jar, tomcat-util.jar, tomcat-http.jar, commons-logging-api.jar; alternatively, the tomcat jars can be replaced by jbossweb.jar
Note: need tomcat-apr.jar (if using tomcat jars) and tcnative-1.dll/tcnative-1.so on system path to use APR based tomcat connector
HTTP client: jboss-remoting-http-client.jar
Servlet server: servlet-invoker.war (deployed in web container), jboss-remoting-servlet.jar
Servlet client: jboss-remoting-http-client.jar
RMI server and client: jboss-remoting-rmi.jar
JBoss serialization: jboss-serialization.jar, trove.jar