nimbus (1.2.4) | 2018-01-25 20:02 |
nimbus-sample (1.2.4) | 2018-01-26 17:06 |
アプリケーション開発において、ユーザに対して表示するメッセージ、運用者に対してログ出力するメッセージなど、様々なメッセージが必要とされます。
それらのメッセージは、開発者が無作為にソースに埋め込んでいくと、文言の修正や統一などの要件が出た場合に、大きな修正コストが発生します。
メッセージにIDを付与して一元的に管理し、ソースにはIDのみを埋め込む事で、上記の問題は解決できます。
このように、アプリケーション開発で何らかのメッセージ出力を行う場合、必要となる要件を以下に列挙します。
Nimbusでは、これらの要件を満たすメッセージ管理サービスを提供します。
関連するパッケージは、以下です。
アプリケーション向けインタフェースMessageRecordFactoryを使った簡単なアプリケーションのサンプルを示します。
- import java.util.Locale;
- import jp.ossc.nimbus.core.ServiceManagerFactory;
- import jp.ossc.nimbus.service.message.MessageRecordFactory;
- // MessageRecordFactoryを取得
- MessageRecordFactory factory = (MessageRecordFactory)ServiceManagerFactory.getServiceObject("MessageRecordFactory");
- // メッセージを取得
- String message1 = factory.findMessage("MSG_001");
- System.out.println(message1);
- // 埋め込みメッセージを取得
- String message2 = factory.findEmbedMessage("MSG_002", "太郎");
- System.out.println(message2);
- // ロケール指定メッセージを取得
- String message3 = factory.findEmbedMessage(Locale.ENGLISH, "MSG_003", new Object[]{"Tarou", "Hanako"});
- System.out.println(message3);
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.message.MessageRecordFactoryService | CSV形式のメッセージ定義ファイルで、メッセージを管理する |
メッセージ管理機能は、Nimbus自体にとっても必須機能であるため、Nimbus自体が内部にデフォルトのMessageRecordFactoryを持っています。
このMessageRecordFactoryは、内部で生成しているため、自由な設定はできません。Nimbus自体が持つメッセージ定義のみ管理しています。
このデフォルトのMessageRecordFactoryは、以下のように取得できます。
デフォルトMessageRecordFactory自体に設定を行う事はできませんが、デフォルトMessageRecordFactoryを差し替える事で、任意のMessageRecordFactoryを使用する事ができます。
デフォルトMessageRecordFactoryを差し替えるには、サービス定義で以下のように設定します。
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE server PUBLIC
- "-//Nimbus//DTD Nimbus 1.0//JA"
- "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
- <server>
- <message>MessageRecordFactory</message>
- <manager>
- <!-- ユーザ定義の任意のMessageRecordFactoryサービス -->
- <service name="MessageRecordFactory"
- code="jp.ossc.nimbus.service.message.MessageRecordFactoryService">
- :
メッセージ管理機能は、サービスの実装においても必須機能となります。
サービスを実装する場合に、jp.ossc.nimbus.core.ServiceBaseを継承すると、デフォルトMessageRecordFactoryを以下のように使用する事ができます。
上記のServiceBaseを継承したサービスから取得できるMessageRecordFactoryは、サービス毎に差し替える事もでき、以下のように定義します。
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE server PUBLIC
- "-//Nimbus//DTD Nimbus 1.0//JA"
- "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
- <server>
- <manager>
- <!-- ServiceBaseを継承したサービス -->
- <service name="Sample"
- code="SampleService">
- <!-- Loggerサービスのサービス名を指定する。 -->
- <attribute name="SystemMessageRecordFactoryServiceName">#MessageRecordFactory</attribute>
- <depends>MessageRecordFactory</depends>
- </service>
- <!-- ユーザ定義の任意のMessageRecordFactoryサービス -->
- <service name="MessageRecordFactory"
- code="jp.ossc.nimbus.service.message.MessageRecordFactoryService">
- :
また、特定のサービスマネージャ配下の全てのServiceBaseを継承したサービスのMessageRecordFactoryを差し替える事もでき、以下のように定義します。
- <?xml version="1.0" encoding="Shift_JIS"?>
- <!DOCTYPE server PUBLIC
- "-//Nimbus//DTD Nimbus 1.0//JA"
- "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
- <server>
- <manager>
- <message>MessageRecordFactory</message>
- <!-- ServiceBaseを継承したサービス -->
- <service name="Sample1"
- code="SampleService"/>
- <!-- ServiceBaseを継承したサービス -->
- <service name="Sample2"
- code="SampleService"/>
- <!-- ユーザ定義の任意のMessageRecordFactoryサービス -->
- <service name="MessageRecordFactory"
- code="jp.ossc.nimbus.service.message.MessageRecordFactoryService">
- :
サンプルは、以下。