彼の新しい記事であるCRISPY Webサービスでは、Sachin Mahajan氏が新しいフレームワークであるCRISPY (Communication per Remote Invocation for different kinds of Services via ProxYs) について議論している。CRISPYは数多くのトランサポート、例えばRMI、EJB、JAX-RPC、REST、XML-RPC、Java直接呼び出しなどに対応したリモート呼び出しのための統合APIを提供する。 すべての呼び出しは同期もしくは非同期での実行が可能である。CRISPYプロジェクトサイトによれば CRISPYは
... リモートAPIを呼び出して利用するサービスマネージャをプロパティファイルの設定を行い動作させます。CRISPYはユーザの記述するコードとアクセスしなければいけないサービスを結ぶ、シンプルなJavaベースのAPIになります。それはクライアントコードをアクセスするサービス、位置、実装から切り離すことができる抽象レイヤを提供しています。特別なことはメソッド呼び出しが単純なJavaオブジェクトの呼び出しと変わらないということです。 (リモートかローカル呼び出しなのかは透過的)。
CRISPYの主な利点は
- .. 簡単に使えます。
- ...設定が少ない。
- Javaオブジェクトからローカル呼び出しのようにリモートメソッドを呼び出せます。
- どのように(リモート) テクノロジが機能しているか知らなくていい。
- 簡単にトランスポートを変更できます (例えば XML-RPCからRMIに)。
- サービスはリモートインタフェースやRemoteException (どのようにRMIが機能するか)を知る必要はありません。
- パラメータは複雑なオブジェクトも可能です (Serializabler (マーシャリング) もしくは Deserializabler (アンマーシャリング)のプログラミングをすることなく)
CRISPYはインターセプタ/モディファイヤをとおして洗練したメソッド呼び出しが制御ができる。インターセプタはメソッド呼び出しの前後で呼び出せ、例えばロギング、タイミング呼び出しなどである。モディファイヤもメソッド前後で呼び出せる。それらは呼び出しメソッドのパラメタ変換/拡張/情報付加 で利用し、例えばセキュリティヘッダの追加や実行結果の変換/拡張/情報追加になる。
主なCRISPYフレームワークのコンポーネントは
- ServiceManager - サービスを生成するファクトリ。
- Properties - ServiceManagerを設定するためのクラス。
- Service インタフェース - 純粋なjavaクラス。
- Proxy/Executor - Service Interfaceからのすべての呼び出しはProxy/Executorに委譲される。
CRISPY 他の人気のあるフレームワークとあわせて利用することもできます。現在、実装されているインテグレーションとしては SpringFramework、HiveMind (Jakarta)、PicoContainer (codehaus)、OSGi、AspectJなどである。
TheServerSide.comディスカッション ではCRISPY を同じような機能を提供しているApache WSIF、Springリモーティング、他フレームワークと比較し - 複数のトランサポートを同様に扱える統合呼び出しモデルについても言及されている。
CRISPYは呼び出し時のプロトコル、サービス位置を意識せずに切り離して実装したい、たくさんのケースで利用できる。