[基本機能]出力

アプリケーション開発において、任意のオブジェクトを任意のフォーマットで任意の出力先に出力する必要があります。 Nimbusでは、このような要件を満たす出力サービスを提供します。

出力するという機能を具体化すると、「どこにどのように出力するか」ということでしょう。
「どのように出力するか」という機能を具体化すると、順序性とマッピングが考えられます。こういう順番で、この項目とこの項目を出力したいといった感じです。この機能を具象化したクラスがWritableRecordです。
ここで、任意のオブジェクトを出力するためには、任意のオブジェクトを入力として受け取って、 特定のフォーマットに従ったWritableRecordに変換する必要があります。この機能を抽象化したインタフェースがWritableRecordFactoryです。
次は、任意のオブジェクトからWritableRecordFactoryによってフォーマットされたWritableRecordを「どこに出力するか」となります。その機能を抽象化したインタフェースがMessageWriterです。
さらに、「どのように出力するか」と「どこに出力するか」をまとめて抽象化したインタフェースがCategoryです。

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

アプリケーション向けインタフェース WritableRecordFactory

アプリケーション向けインタフェースWritableRecordFactoryを使った簡単なアプリケーションのサンプルを示します。

  1. import java.util.Date;
  2. import java.util.Map;
  3. import java.util.HashMap;
  4. import jp.ossc.nimbus.core.ServiceManagerFactory;
  5. import jp.ossc.nimbus.service.writer.WritableRecordFactory;
  6. // WritableRecordFactoryを取得
  7. WritableRecordFactory factory = (WritableRecordFactory)ServiceManagerFactory.getServiceObject("WritableRecordFactory");
  8. // 出力情報を生成する
  9. Map map = new HashMap();
  10. map.put("DATE", new Date());
  11. map.put("MESSAGE", "テストのメッセージです。");
  12. // 出力情報をフォーマットして、WritableRecordに変換する
  13. WritableRecord record = factory.createRecord(map);
  14. System.out.println(record);

実装サービスの一覧は以下のとおりです。

実装サービス実装概要
jp.ossc.nimbus.service.writer.WritableRecordFactoryServicejava.util.MapからWritableRecordへのフォーマットをサポートする
jp.ossc.nimbus.service.writer.PropertyWritableRecordFactoryServicePOJOからWritableRecordへのフォーマットをサポートする
jp.ossc.nimbus.service.writer.LogWritableRecordFactoryServiceLoggerサービス専用の実装

アプリケーション向けインタフェース MessageWriter

アプリケーション向けインタフェースMessageWriterを使った簡単なアプリケーションのサンプルを示します。

  1. import java.util.Date;
  2. import java.util.Map;
  3. import java.util.HashMap;
  4. import jp.ossc.nimbus.core.ServiceManagerFactory;
  5. import jp.ossc.nimbus.service.writer.MessageWriter;
  6. import jp.ossc.nimbus.service.writer.WritableRecord;
  7. import jp.ossc.nimbus.service.writer.WritableRecordFactory;
  8. // WritableRecordFactoryを取得
  9. WritableRecordFactory factory = (WritableRecordFactory)ServiceManagerFactory.getServiceObject("WritableRecordFactory");
  10. // 出力情報を生成する
  11. Map map = new HashMap();
  12. map.put("DATE", new Date());
  13. map.put("MESSAGE", "テストのメッセージです。");
  14. // 出力情報をフォーマットして、WritableRecordに変換する
  15. WritableRecord record = factory.createRecord(map);
  16. // MessageWriterを取得
  17. MessageWriter writer = (MessageWriter)ServiceManagerFactory.getServiceObject("MessageWriter");
  18. // 出力する
  19. writer.write(record);

実装サービスの一覧は以下のとおりです。

実装サービス実装概要
jp.ossc.nimbus.service.writer.ConsoleWriterServiceコンソールへ出力する
jp.ossc.nimbus.service.writer.OneWriteFileMessageWriterServiceファイルへ出力する。ファイル名を出力の都度、動的に決める事ができる。
jp.ossc.nimbus.service.writer.log4j.ConsoleAppenderWriterServiceLog4Jを利用してコンソールへ出力する。
jp.ossc.nimbus.service.writer.log4j.FileAppenderWriterServiceLog4Jを利用してファイルへ出力する。
jp.ossc.nimbus.service.writer.log4j.RollingFileAppenderWriterServiceLog4Jを利用してファイルへ出力する。ファイルをサイズでローリングできる。
jp.ossc.nimbus.service.writer.log4j.CustomizedRollingFileAppenderWriterServiceLog4Jを利用してファイルへ出力する。ファイルをサイズでローリングできる。ローリングの際に元ファイルを削除しないようにカスタマイズされている。
jp.ossc.nimbus.service.writer.log4j.DailyRollingFileAppenderWriterServiceLog4Jを利用してファイルへ出力する。ファイルを日付でローリングできる。
jp.ossc.nimbus.service.writer.db.DatabaseWriterServiceデータベースへ出力する。
jp.ossc.nimbus.service.writer.mail.MailWriterServiceJavaMailを利用してメールへ出力する。
jp.ossc.nimbus.service.writer.jms.DestinationWriterServiceJMSを利用してTopicまたはQueueへMessageを出力する。
jp.ossc.nimbus.service.writer.publish.ServerConnectionWriterServiceServerConnectionへ出力する。

アプリケーション向けインタフェース Category

アプリケーション向けインタフェースCategoryを使った簡単なアプリケーションのサンプルを示します。

  1. import java.util.Date;
  2. import java.util.Map;
  3. import java.util.HashMap;
  4. import jp.ossc.nimbus.core.ServiceManagerFactory;
  5. import jp.ossc.nimbus.service.writer.Category;
  6. // Categoryを取得
  7. Category category = (Category)ServiceManagerFactory.getServiceObject("Category");
  8. // 出力情報を生成する
  9. Map map = new HashMap();
  10. map.put("DATE", new Date());
  11. map.put("MESSAGE", "テストのメッセージです。");
  12. // 出力する
  13. category.write(map);

実装サービスの一覧は以下のとおりです。

実装サービス実装概要
jp.ossc.nimbus.service.writer.SimpleCategoryServiceサービス定義で指定されたWritableRecordFactoryとMessageWriterを使って出力する。
jp.ossc.nimbus.service.writer.EvaluateCategoryServiceサービス定義で指定された条件に応じてCategoryを振り分けて出力する。
jp.ossc.nimbus.service.writer.GroupCategoryServiceサービス定義で指定された複数のCategoryに出力する。
jp.ossc.nimbus.service.writer.DistributedCategoryServiceサービス定義で指定された複数のCategoryに分散して出力する。
jp.ossc.nimbus.service.log.SimpleCategoryServiceサービス定義で指定されたWritableRecordFactoryとMessageWriterを使って出力する。Loggerサービス専用の実装
jp.ossc.nimbus.service.log.GroupCategoryServiceサービス定義で指定された複数のCategoryに出力する。Loggerサービス専用の実装

サンプルは、以下。