[応用機能]プロキシ

アプリケーション開発において、サーバを跨ってサービスを呼び出したい場合があります。
リモートのJVM上のサービスを、あたかもローカルのサービスのように呼び出す機能がプロキシ機能です。

呼び出したいサービスのインタフェースに見せかけてリモートのJVM上のサービスを呼び出すクライアント側のサービスと、リモートのJVM上に存在しクライアント側のサービスから呼び出されてローカルのサービスを呼び出すサーバ側のサービスが必要になります。

クライアント側のサービスは、本来呼び出したいサービスのインタフェースに見せかけるRemoteClientServiceサービスと、本来呼び出したいサービスを呼び出すInvokerサービスで構成されます。
リモートの呼び出し方法は、Invokerサービスの実装によって、提供されます。

サーバ側のサービスは、クライアント側のInvokerサービスと対になっているため、その実体はInvokerの実装に依存します。

また、Invokerをクラスタ化するために、死活監視機能付きのInvokerとしてKeepAliveCheckInvokerインタフェースがあります。

関連するパッケージは、以下です。

クライアント側サービスRemoteClientService

本来、呼び出したいサービスのインタフェースに見せかけて、実際の呼び出しを行うInvokerサービスへの橋渡しを行うjp.ossc.nimbus.service.proxy.RemoteClientServiceサービスです。
以下に、このプロキシ機能を使ってサービスを呼び出すコードを示します。

  1. import jp.ossc.nimbus.core.ServiceManagerFactory;
  2. import sample.service.Messenger;
  3. // サービス定義を読み込む
  4. ServiceManagerFactory.loadManager("client-service-definition.xml");
  5. // プロキシされたサービスを取得する
  6. Messenger messenger = (Messenger)ServiceManagerFactory.getServiceObject("Messenger");
  7. // サービスを呼び出す
  8. System.out.println(messenger.getMessage());

RemoteClientService向けインタフェースInvoker

RemoteClientService向けインタフェースInvokerは、呼び出し対象の呼び出しを実行するインタフェースです。

このインタフェースを実装したサービスの一覧は以下のとおりです。

実装サービス実装概要
jp.ossc.nimbus.service.proxy.invoker.RemoteClientMethodCallInvokerServiceRMIでリモートのサービスを呼び出す
jp.ossc.nimbus.service.proxy.invoker.RemoteClientEJBCallInvokerServiceEJBでリモートのサービスを呼び出す
jp.ossc.nimbus.service.proxy.invoker.JMXClientRMICallInvokerServiceJMXでリモートのサービスを呼び出す
jp.ossc.nimbus.service.proxy.invoker.HttpRemoteClientMethodCallInvokerServiceHTTPでリモートのサービスを呼び出す
jp.ossc.nimbus.service.proxy.invoker.LocalClientMethodCallInvokerServiceローカルのサービスを呼び出す
jp.ossc.nimbus.service.proxy.invoker.ClusterInvokerServiceInvokerサービスをクラスタ化する

RemoteClientService向けインタフェースKeepAliveCheckInvoker

RemoteClientService向けインタフェースKeepAliveCheckInvokerは、呼び出し対象の呼び出しを実行する機能に加え、対象の死活監視及びリソース使用状況を取得する機能を持ったインタフェースです。

このインタフェースを実装したサービスの一覧は以下のとおりです。

実装サービス実装概要
jp.ossc.nimbus.service.proxy.invoker.RemoteClientMethodCallInvokerServiceRMIでリモートのサービスを呼び出す
jp.ossc.nimbus.service.proxy.invoker.LocalClientMethodCallInvokerServiceローカルのサービスを呼び出す
jp.ossc.nimbus.service.proxy.RemoteServiceServerServiceリモートからサービスを呼び出す受付窓口となる
jp.ossc.nimbus.service.aop.invoker.MethodReflectionCallInvokerServiceローカルの呼び出し対象のメソッドをリフレクションで呼び出す
jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerServerServiceリモートから業務フローを呼び出す受付窓口となる

サンプルは、以下。