ClientConnectionFactory、ServerConnectionFactory実装サービス jp.ossc.nimbus.service.publish.GroupConnectionFactoryService

jp.ossc.nimbus.service.publish.GroupConnectionFactoryServiceは、物理的に複数の接続を論理的には1つの接続に集約させて送受信を簡易化させるClientConnectionFactory及びServerConnectionFactory実装サービスです。
このサービスは、物理的な通信を司るClientConnectionFactory及びServerConnectionFactory実装サービスを複数使用して、それぞれのClientConnection及びServerConnectionを取得し、それらをまとめてラップしたClientConnection及びServerConnectionを提供するサービスです。そのため、このサービスとは別に、実体となるClientConnectionFactory及びServerConnectionFactory実装サービスが複数必要となります。

このサービスは、送信側サーバに定義します。
そのため、送信側のアプリケーションは、このサービスを取得して、ServerConnectionFactoryとして使用できます。
しかし、受信側のアプリケーションは、このサービスが定義されたサーバと異なるリモートサーバ上で稼働するため、このサービスを直接取得する事はできません。このサービスは、JNDIサーバ(RMIサーバも可)にClientConnectionFactoryのリモートオブジェクトを登録するので、受信側のアプリケーションは、JNDIサーバからClientConnectionFactoryをlookupして、使用します。

このサービスは、複合的なサービスで、以下のサービスを下位サービスとして使用します。

下位サービスインタフェース用途
jp.ossc.nimbus.service.publish.ClientConnectionFactory物理的な通信を司るClientConnectionFactoryとして使用する。
jp.ossc.nimbus.service.publish.ServerConnectionFactory物理的な通信を司るServerConnectionFactoryとして使用する。
jp.ossc.nimbus.service.repository.RepositoryJNDIサーバにClientConnectionFactoryのリモートオブジェクトをバインドするために使用する。

以下に簡単なサービス定義を示します。

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE server PUBLIC
  3. "-//Nimbus//DTD Nimbus 1.0//JA"
  4. "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
  5. <server>
  6. <manager>
  7. <!-- グループコネクションファクトリサービス -->
  8. <service name="ConnectionFactory"
  9. code="jp.ossc.nimbus.service.publish.GroupConnectionFactoryService">
  10. <!-- クライアントコネクションファクトリを登録するRMIサーバリポジトリサービスを設定する -->
  11. <attribute name="JndiRepositoryServiceName">#LocalRMIRepository</attribute>
  12. <!-- サブジェクト hoge への配信を行うコネクションファクトリを設定する -->
  13. <invoke name="addSubjectMapping">
  14. <argument>
  15. <object code="jp.ossc.nimbus.service.publish.GroupConnectionFactoryService$SubjectMapping">
  16. <!-- 関連付けるサブジェクトを設定する -->
  17. <attribute name="Subject">hoge</attribute>
  18. <!-- クライアントコネクションファクトリを設定する -->
  19. <attribute name="ClientConnectionFactoryServiceName">#ConnectionFactory1</attribute>
  20. <!-- サーバコネクションファクトリを設定する -->
  21. <attribute name="ServerConnectionFactoryServiceName">#ConnectionFactory1</attribute>
  22. </object>
  23. </argument>
  24. </invoke>
  25. <!-- サブジェクト fuga への配信を行うコネクションファクトリを設定する -->
  26. <invoke name="addSubjectMapping">
  27. <argument>
  28. <object code="jp.ossc.nimbus.service.publish.GroupConnectionFactoryService$SubjectMapping">
  29. <!-- 関連付けるサブジェクトを設定する -->
  30. <attribute name="Subject">fuga</attribute>
  31. <!-- クライアントコネクションファクトリを設定する -->
  32. <attribute name="ClientConnectionFactoryServiceName">#ConnectionFactory2</attribute>
  33. <!-- サーバコネクションファクトリを設定する -->
  34. <attribute name="ServerConnectionFactoryServiceName">#ConnectionFactory2</attribute>
  35. </object>
  36. </argument>
  37. </invoke>
  38. <depends>ConnectionFactory1</depends>
  39. <depends>ConnectionFactory2</depends>
  40. <depends>LocalRMIRepository</depends>
  41. </service>
  42. <!-- TCPコネクションファクトリサービス -->
  43. <service name="ConnectionFactory1"
  44. code="jp.ossc.nimbus.service.publish.tcp.ConnectionFactoryService"/>
  45. <!-- TCPコネクションファクトリサービス -->
  46. <service name="ConnectionFactory2"
  47. code="jp.ossc.nimbus.service.publish.tcp.ConnectionFactoryService"/>
  48. <!-- RMIサーバに登録するリポジトリサービス -->
  49. <service name="LocalRMIRepository"
  50. code="jp.ossc.nimbus.service.repository.RMIRepositoryService">
  51. <attribute name="CreateRegistry">true</attribute>
  52. <attribute name="Port">1099</attribute>
  53. </service>
  54. </manager>
  55. </server>


メッセージ配信/ServerConnectionFactory
メッセージ配信/ClientConnectionFactory