This topic has not yet been written. The content below is from the topic description.
Remoting will load client and server invoker (transport) implementations (within the InvokerRegistry) using factories. The factory class to be loaded will always be either TransportClientFactory (for loading client invoker) or TransportServerFactory (for loading server invoker). These classes must implement org.jboss.remoting.transport.ClientFactory and org.jboss.remoting.transport.ServerFactory interfaces respectively. The package under which the TransportClientFactory and TransportServerFactory will always start with org.jboss.test.remoting.transport, then the transport protocol type. For example, the 'socket' transport factories are org.jboss.remoting.transport.socket.TransportClientFactory and org.jboss.remoting.transport.socket.TransportServerFactory. The API for org.jboss.remoting.transport.ClientFactory is: public ClientInvoker createClientInvoker(InvokerLocator locator, Map config) throws IOException; public boolean supportsSSL(); The API for org.jboss.remoting.transport.ServerFactory is: public ServerInvoker createServerInvoker(InvokerLocator locator, Map config) throws IOException; public boolean supportsSSL(); An example of a transport client factory for the socket transport (org.jboss.remoting.transport.socket.TransportClientFactory) is: public class TransportClientFactory implements ClientFactory { public ClientInvoker createClientInvoker(InvokerLocator locator, Map config) throws IOException { return new SocketClientInvoker(locator, config); } public boolean supportsSSL() { return false; } } The packages used within the factory does not matter as long as they are on the classpath. Note that the transport factories are only loaded upon request for that protocol. Also, the client and server factories have been separated so that only the one requested is loaded (and thus the corresponding classes needed for that invoker implementation). So if only ask for a particular client transport invoker, only those classes are loaded and the ones needed for the server are not required to be on the classpath. The biggest reason for taking this approach is allows users ability to plugin custom transport implementation with zero config. Remoting comes with the following transports: socket, sslsocket, bisocket, sslbisocket, http, https, multiplex, sslmultiplex, servlet, sslservlet, rmi, sslrmi.