Remoting 2
-
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)
-
Bisocket (SSL Bisocket)
-
Servlet (SSL Servlet)
-
-
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
-
-
Multihome servers: servers can bind to any subset of available IP addresses
-
Security manager safe: security sensitive calls are made through java.security.AccessController.doPrivileged() calls
- 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.