Nimbusは、SIerによるSIerのためのSI部品ライブラリです。 基盤としてDIコンテナを持ち、サービス(POJO)をホスティングし、アプリケーションに提供します。 また、ライフサイクルの概念があり、サービス間の依存関係の解決を行いながらライフサイクルを制御します。
バグFIX、機能追加、機能改善、動作変更を行いました。
1. バグFIX
(1)jp.ossc.nimbus.core.DefaultServiceLoaderServiceの不具合を修正
manager要素のshutdown-hook属性をtrueと指定している場合に、シャットダウン中にIllegalStateExceptionが発生する不具合を修正した。
(2)jp.ossc.nimbus.core.DefaultServiceManagerServiceの不具合を修正
unloadManager()実行時に、java.util.ConcurrentModificationExceptionが発生する場合がある不具合を修正した。
(3)jp.ossc.nimbus.core.FactoryServiceBaseの不具合を修正
management属性がtrueのFactoryServiceにマルチスレッドで、サービスを生成させると、サービス名が同一のサービスが生成されてしまう事がある不具合を修正した。
(4)jp.ossc.nimbus.core.ServiceManagerFactoryの不具合を修正
unloadManager()実行時に、java.util.ConcurrentModificationExceptionが発生する場合がある不具合を修正した。
(5)jp.ossc.nimbus.service.queue.DefaultQueueServiceの不具合を修正
キューから引き抜いたスレッドがinterruptされている事がある不具合を修正した。
(6)jp.ossc.nimbus.service.scheduler2.DatabaseScheduleManagerServiceの不具合を修正
日跨ぎで依存する過去のスケジュールが終わってなくても、スケジュールが実行されてしまう不具合を修正した。
(7)jp.ossc.nimbus.service.scheduler2.DefaultScheduleManagerServiceの不具合を修正
期間を指定するfindSchedulesメソッドで、同じ時間のスケジュールが存在する場合、正しく検索できない不具合を修正した。
(8)jp.ossc.nimbus.service.semaphore.MemorySemaphoreの不具合を修正
セマフォを獲得したスレッドがinterruptされている事がある不具合を修正した。
2. 変更
(1)jp.ossc.nimbus.beans.NimbusPropertyEditorManagerの変更
java.io.FileのPropertyEditorとして、jp.ossc.nimbus.beans.FileEditorを登録した。
(2)jp.ossc.nimbus.beans.dataset.DataSetの変更
以下のメソッドを追加した。
・public static RecordSchema getInstance(PropertySchema[] schemata)
・public void setPropertySchemata(PropertySchema[] schemata)
・public void setHeaderSchema(RecordSchema schema)
・public void setHeaderSchema(String name, RecordSchema schema)
・public void setRecordListSchema(RecordSchema schema)
・public void setRecordListSchema(String name, RecordSchema schema)
・public void setNestedRecordListSchema(String name, RecordSchema schema)
・public void setSchema(RecordSchema headerSchema, RecordSchema recordListSchema)
・public void setSchema(String name, RecordSchema headerSchema, RecordSchema recordListSchema)
(3)jp.ossc.nimbus.beans.dataset.DefaultPropertySchemaの変更
以下のコンストラクタを追加した。
・public DefaultPropertySchema(String schema)
(4)jp.ossc.nimbus.beans.dataset.Headerの変更
以下のコンストラクタを追加した。
・public Header()
・public Header(String)
・public Header(String name, RecordSchema recordSchema)
(5)jp.ossc.nimbus.beans.dataset.Recordの変更
・以下のコンストラクタを追加した。
・public Record()
・以下のメソッドを追加した。
・public void setSchema(String)
・public void setRecordSchema(RecordSchema)
・コンストラクタの引数を以下のように変更した。
public Record(String schema, RecordSchema recordSchema)
↓
public Record(RecordSchema recordSchema)
(6)jp.ossc.nimbus.beans.dataset.RecordListの変更
・以下のコンストラクタを追加した。
・public RecordList()
・public RecordList(String)
・以下のメソッドを追加した。
・public void setSchema(String)
・public void setRecordSchema(RecordSchema)
(7)jp.ossc.nimbus.beans.dataset.RecordListPropertySchemaの変更
・以下のコンストラクタを追加した。
・public RecordListPropertySchema(String schema)
・set(Object)の時のチェックとして、レコードリストのスキーマ名をチェックするようにした。
(8)jp.ossc.nimbus.beans.dataset.RecordSchemaの変更
以下のメソッドを追加した。
・public static RecordSchema getInstance(PropertySchema[] schemata)
・public void setPropertySchemata(PropertySchema[] schemata)
(9)jp.ossc.nimbus.beans.dataset.ValidatorPropertySchemaの変更
以下のコンストラクタを追加した。
・public ValidatorPropertySchema(String schema)
(10)jp.ossc.nimbus.beans.dataset.XpathPropertySchemaの変更
以下のコンストラクタを追加した。
・public XpathPropertySchema(String schema)
(11)jp.ossc.nimbus.io.CSVReaderの変更
以下のメソッドを追加した。
・public void setNullValue(String)
・public String getNullValue()
(12)jp.ossc.nimbus.io.CSVWriterの変更
CSV要素を囲み文字で囲まない場合に、CSV要素にCR、LFが含まれているとエスケープするようにした。
(13)jp.ossc.nimbus.service.aop.interceptor.MethodAsynchronousInterceptorServiceの変更
非同期呼び出しスレッドをデーモンスレッドにするかどうかを設定する以下のInvokerThreadDaemon属性を追加した。
(14)jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerAccessImpl2の変更
・for要素にjournal属性を指定できるようにした。
・reource-ref要素で、存在しないリソースを指定された場合に、NullPointerExceptionが発生するのを、nullを返すように変更した。
(15)jp.ossc.nimbus.service.interpreter.BeanShellInterpreterServiceの変更
コマンドベースで実行する場合に、-fileオプションで複数のソースコードファイルを指定可能にした。
(16)jp.ossc.nimbus.service.keepalive.ClusterServiceの変更
クラスタの状態が切り替わった場合にログを出力するようにした。
(17)jp.ossc.nimbus.service.publish.DefaultPublishContainerServiceの変更
Servantが存在しない場合に、JMSメッセージを受信すると、即座に空振りするようにした。(性能対策)
(18)jp.ossc.nimbus.service.scheduler2.DefaultScheduleの変更
・以下のメソッドを追加した。
・public long getMaxDelayTime()
・public int getCheckState()
・public void setCheckState(int)
・以下のメソッドを削除した。
・public boolean isAbort()
・public void setAbort(boolean)
・toString()メソッドの実装を修正した。
(19)jp.ossc.nimbus.service.scheduler2.DatabaseScheduleManagerServiceの変更
・TimeoverCheckInterval属性を追加した。
・スケジュールマスタテーブルに、MAX_DELAY_TIMEカラムを追加した。
・スケジュールテーブルに、MAX_DELAY_TIME、CHECK_STATEカラムを追加した。
(20)jp.ossc.nimbus.service.scheduler2.DefaultScheduleManagerServiceの変更
TimeoverCheckInterval属性を追加した。
(21)jp.ossc.nimbus.service.scheduler2.DefaultScheduleMasterの変更
・以下のメソッドを追加した。
・public long getMaxDelayTime()
・public void setMaxDelayTime(long)
・toString()メソッドの実装を修正した。
(22)jp.ossc.nimbus.service.scheduler2.Scheduleの変更
・以下のメソッドを追加した。
・public long getMaxDelayTime()
・public int getCheckState()
・public void setCheckState(int)
・以下のメソッドを削除した。
・public boolean isAbort()
・public void setAbort(boolean)
(23)jp.ossc.nimbus.service.scheduler2.ScheduleMasterの変更
以下のメソッドを追加した。
・public long getMaxDelayTime()
(24)jp.ossc.nimbus.service.writer.mail.MailWriterServiceの変更
ToAddressKey、ToAddress属性を指定しなくてもエラーにならないようにした。
(25)jp.ossc.nimbus.util.converter.DataSetXMLConverterの変更
BindingStreamConverterインタフェースを実装した。
3. 追加
(1)jp.ossc.nimbus.beans.FileEditorを追加
パス文字列とjava.io.File間の相互変換を行うPropertyEditorクラスを追加した。
(2)jp.ossc.nimbus.util.converter.RecordListCSVConverterを追加
レコードリスト⇔CSVストリーム間の相互変換を行うBindingStreamConverterインタフェース実装クラスを追加した。