Tips on when to use different Spring RPC remoting models
Spring 2.5 supports 4 remoting models, namely:
- Remote Method Invocation (RMI)
- Hessian or Burlap
- HTTP Invoker
- JAX-RPC/SOAP
So a question arises which method is best suited and when. Here is a very basic "Spring Remoting Model X useful when..." list
Remote Method Invocation (RMI)
RMI is useful when:
- Accessing/exposing Java based services over a network and network constraints are not a factor (for example: firewalls)
- Objects being transferred over the network are very complex.
RMI is NOT useful when:
- When client or server side is not using Java programming language.
Hessian or Burlap
Hessian/Burlap is useful when:
- Accessing/exposing Java based services over a network/internet with firewalls
- Your service must communicate with other programming languages such as: PHP, Python, C++, etc.
- You need a light weight container (consider handheld devices)
- You need small message sizes.
Hessian/Burlap is NOT useful when:
- When you are using complex objects. They might not be serialized correctly since Hessian/Burlap is using proprietary serialization mechanism.
HTTP Invoker
HTTP Invoker is useful when:
- Accessing/exposing Java based services over a network/internet with firewalls
- Objects being transferred over the network are very complex
HTTP Invoker is NOT useful when:
- When client or server side is not using Java programming language and Spring Framework
- When you don't want to couple you code to Spring Framework.
JAX-RPC/SOAP
JAX-RPC/SOAP is useful when:
- Accessing/exposing services over a network/internet with firewalls
- You want to communicate with any programming language.