RMIが使用可能ならば、Axis(SOAP)よりRMI

高いパフォーマンスを求められるようなシステムの場合、SOAP(Axis1.xを使用)だと、全体の処理時間に対してSOAP通信でのオーバヘッドがどうしても大きくなりがちです。(Axis2は何かと改善されて、Axis1系に比べて速くはなっているらしい)
特に、送受信するデータの構造が複雑かつ量が多くなると、XMLの組み立て/パースといったとこでのパフォーマンスが低くなりがち(メモリを大量に使用→GC頻発→パフォーマンスが落ちる)な気がします。
(パースはSAX使ってるらしいので、どちらかというと組み立ての方でメモリ食いまくり??)


SOAP は、標準化された仕様により、Javaのみならず他のアプリケーションとの通信が可能であり、またHTTP(S)のポートさえ空いていれば通信できるので、とても便利なのですが、、JavaJavaのアプリケーション連携であるならば、RMIの方が(少なくともパフォーマンス的には)良いと思ってます。
# RMI用にポートを空ける必要があるなどの、セキュリティ的なとこは、SOAPより面倒な感じですが、、


クライアントがJavaじゃないのでRMIも使えない、、となったら、REST(もしくはRESTぽい)のようなHTTP(S)上での軽量?なインタフェースを用意せざるを得ないのではと思います。
そうすると、SOAPRMIのように単なるリモートメソッドの呼び出しのようには扱えなくなるので、サーバ/クライアント間でのデータフォーマット仕様をあわせるのが面倒ですね…


参考: