nimbus (1.2.4) | 2018-01-25 20:02 |
nimbus-sample (1.2.4) | 2018-01-26 17:06 |
アプリケーション開発において、サーバを跨ってサービスを呼び出したい場合があります。
リモートのJVM上のサービスを、あたかもローカルのサービスのように呼び出す機能がプロキシ機能です。
呼び出したいサービスのインタフェースに見せかけてリモートのJVM上のサービスを呼び出すクライアント側のサービスと、リモートのJVM上に存在しクライアント側のサービスから呼び出されてローカルのサービスを呼び出すサーバ側のサービスが必要になります。
クライアント側のサービスは、本来呼び出したいサービスのインタフェースに見せかけるRemoteClientServiceサービスと、本来呼び出したいサービスを呼び出すInvokerサービスで構成されます。
リモートの呼び出し方法は、Invokerサービスの実装によって、提供されます。
サーバ側のサービスは、クライアント側のInvokerサービスと対になっているため、その実体はInvokerの実装に依存します。
また、Invokerをクラスタ化するために、死活監視機能付きのInvokerとしてKeepAliveCheckInvokerインタフェースがあります。
関連するパッケージは、以下です。
本来、呼び出したいサービスのインタフェースに見せかけて、実際の呼び出しを行うInvokerサービスへの橋渡しを行うjp.ossc.nimbus.service.proxy.RemoteClientServiceサービスです。
以下に、このプロキシ機能を使ってサービスを呼び出すコードを示します。
- import jp.ossc.nimbus.core.ServiceManagerFactory;
- import sample.service.Messenger;
- // サービス定義を読み込む
- ServiceManagerFactory.loadManager("client-service-definition.xml");
- // プロキシされたサービスを取得する
- Messenger messenger = (Messenger)ServiceManagerFactory.getServiceObject("Messenger");
- // サービスを呼び出す
- System.out.println(messenger.getMessage());
RemoteClientService向けインタフェースInvokerは、呼び出し対象の呼び出しを実行するインタフェースです。
このインタフェースを実装したサービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.proxy.invoker.RemoteClientMethodCallInvokerService | RMIでリモートのサービスを呼び出す |
jp.ossc.nimbus.service.proxy.invoker.RemoteClientEJBCallInvokerService | EJBでリモートのサービスを呼び出す |
jp.ossc.nimbus.service.proxy.invoker.JMXClientRMICallInvokerService | JMXでリモートのサービスを呼び出す |
jp.ossc.nimbus.service.proxy.invoker.HttpRemoteClientMethodCallInvokerService | HTTPでリモートのサービスを呼び出す |
jp.ossc.nimbus.service.proxy.invoker.LocalClientMethodCallInvokerService | ローカルのサービスを呼び出す |
jp.ossc.nimbus.service.proxy.invoker.ClusterInvokerService | Invokerサービスをクラスタ化する |
RemoteClientService向けインタフェースKeepAliveCheckInvokerは、呼び出し対象の呼び出しを実行する機能に加え、対象の死活監視及びリソース使用状況を取得する機能を持ったインタフェースです。
このインタフェースを実装したサービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.proxy.invoker.RemoteClientMethodCallInvokerService | RMIでリモートのサービスを呼び出す |
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 | リモートから業務フローを呼び出す受付窓口となる |
サンプルは、以下。