Journal実装サービス jp.ossc.nimbus.service.journal.ThreadManagedJournalService

jp.ossc.nimbus.service.journal.ThreadManagedJournalServiceは、スレッド単位でのジャーナル出力を実現するJournal実装サービスです。

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

下位サービスインタフェース用途
jp.ossc.nimbus.service.queue.Queue非同期に出力するためのキュー。
jp.ossc.nimbus.service.journal.editorfinder.EditorFinderジャーナルを編集するJournalEditorをみつける。
jp.ossc.nimbus.service.writer.Categoryジャーナルを出力する。
jp.ossc.nimbus.service.sequence.Sequence通番を取得する。

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

  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. ジャーナリングされたオブジェクトをスレッド毎に管理する。
  9. -->
  10. <service name="Journal"
  11. code="jp.ossc.nimbus.service.journal.ThreadManagedJournalService">
  12. <!-- EditorFinderサービスのサービス名を設定する -->
  13. <attribute name="EditorFinderName">#EditorFinder</attribute>
  14. <!-- WritableElementのキー名を設定する
  15. ジャーナルオブジェクトをJournalEditorによって編集した後、
  16. 編集後のオブジェクトをMapに詰めて、Categoryサービスへと渡す。
  17. その際の、Mapのキー名であり、最終的にはWritableElementのキーとなる。
  18. -->
  19. <attribute name="WritableElementKey">Journal</attribute>
  20. <!-- リクエスト通番を発番するSequenceサービスのサービス名を設定する -->
  21. <attribute name="SequenceServiceName">#Sequence</attribute>
  22. <!-- ジャーナルの出力先となるCategoryサービスのサービス名を設定する -->
  23. <attribute name="CategoryServiceNames">#Category</attribute>
  24. <depends>EditorFinder</depends>
  25. <depends>Sequence</depends>
  26. <depends>Category</depends>
  27. </service>
  28. <!-- ジャーナルを編集するJournalEditorを提供するEditorFinderサービス
  29. ジャーナルオブジェクトの型毎に、JournalEditorサービスをマッピングし
  30. 提供する。
  31. -->
  32. <service name="EditorFinder"
  33. code="jp.ossc.nimbus.service.journal.editorfinder.ObjectMappedEditorFinderService">
  34. <attribute name="EditorProperties">
  35. java.lang.Object=#ObjectJournalEditor
  36. java.util.Date=#DateJournalEditor
  37. jp.ossc.nimbus.service.journal.RequestJournal=#RequestJournalEditor
  38. </attribute>
  39. <depends>ObjectJournalEditor</depends>
  40. <depends>DateJournalEditor</depends>
  41. <depends>RequestJournalEditor</depends>
  42. </service>
  43. <!-- 任意のオブジェクトを文字列に変換するJournalEditorサービス
  44. 文字列への変換には、toString()メソッドを使用する
  45. -->
  46. <service name="ObjectJournalEditor"
  47. code="jp.ossc.nimbus.service.journal.editor.ObjectJournalEditorService"/>
  48. <!-- java.util.Dateオブジェクトを文字列に変換するJournalEditorサービス -->
  49. <service name="DateJournalEditor"
  50. code="jp.ossc.nimbus.service.journal.editor.DateJournalEditorService">
  51. <attribute name="Format">yyyy/MM/dd HH:mm:ss.SSS</attribute>
  52. </service>
  53. <!-- jp.ossc.nimbus.service.journal.RequestJournalオブジェクトを文字列に変換するJournalEditorサービス -->
  54. <service name="RequestJournalEditor"
  55. code="jp.ossc.nimbus.service.journal.editor.SimpleRequestJournalEditorService"/>
  56. <!-- 通番を発番するSequenceサービス -->
  57. <service name="Sequence"
  58. code="jp.ossc.nimbus.service.sequence.StringSequenceService">
  59. <attribute name="format">ID_;0,9;0,9;0,9;0,9;0,9;0,9;0,9</attribute>
  60. </service>
  61. <!-- ジャーナルを出力するCategoryサービス -->
  62. <service name="Category"
  63. code="jp.ossc.nimbus.service.writer.SimpleCategoryService">
  64. <attribute name="WritableRecordFactoryServiceName">#WritableRecordFactory</attribute>
  65. <attribute name="MessageWriterServiceName">#Writer</attribute>
  66. <depends>
  67. <!-- 出力情報をフォーマットするWritableRecordFactoryサービス -->
  68. <service name="WritableRecordFactory"
  69. code="jp.ossc.nimbus.service.writer.WritableRecordFactoryService">
  70. <attribute name="Format">%Journal%</attribute>
  71. </service>
  72. </depends>
  73. <depends>
  74. <!-- ファイルに出力するMessageWriterサービス -->
  75. <service name="Writer"
  76. code="jp.ossc.nimbus.service.writer.OneWriteFileMessageWriterService">
  77. <attribute name="Append">true</attribute>
  78. <attribute name="File">journal.log</attribute>
  79. </service>
  80. </depends>
  81. </service>
  82. </manager>
  83. </server>


ジャーナル/Journal