Nimbusは、SIerによるSIerのためのSI部品ライブラリです。 基盤としてDIコンテナを持ち、サービス(POJO)をホスティングし、アプリケーションに提供します。 また、ライフサイクルの概念があり、サービス間の依存関係の解決を行いながらライフサイクルを制御します。
バグFIX、機能追加、機能改善、動作変更を行いました。
1. バグFIX
(1)jp.ossc.nimbus.beans.ServiceNameEditorの不具合を修正
システムプロパティによる置換処理が正しく行われない不具合を修正した。
(2)jp.ossc.nimbus.beans.StringArrayEditorの不具合を修正
setValue(String[])されたString配列の要素にカンマを含む文字がある場合に、
getAsText()で正しくエスケープされない不具合を修正した。
(3)jp.ossc.nimbus.core.ServiceBaseの不具合を修正
finalize時に、同名の別インスタンスのサービスを停止・破棄してしまう不具合を
修正した。
(4)jp.ossc.nimbus.io.CSVReaderの不具合を修正
空行を読み込むと、空文字の1要素を含んだCSVリストが取得される不具合を修正した。
(5)jp.ossc.nimbus.io.RecurciveSearchFileの不具合を修正
java.io.FilenameFilterにフルパスを渡していた不具合を修正した。
(6)jp.ossc.nimbus.service.aop.DefaultInvocationContextの不具合を修正
setAttribute(String,Object)を一度も呼ばずに、getAttributeNames()を呼ぶと、
NullPointerExceptionが発生する不具合を修正した。
(7)jp.ossc.nimbus.service.aop.ServletFilterInvocationContextの不具合を修正
javax.servlet.FilterChainの実装クラスの実装の仕方によって、
getTargetMethod()がnullになってしまう不具合を修正した。
(8)jp.ossc.nimbus.service.aop.interceptor.ExceptionConsumeInterceptorServiceの不具合を修正
サービス定義ファイルからロードせずに使用する場合で、setReturnValue(Object)で
戻り値文字列を設定し、戻り値の型に合わせて設定された値を編集する際に、
ServiceNotFoundExceptionが発生する不具合を修正した。
(9)jp.ossc.nimbus.service.aop.interceptor.MethodAsynchronousInterceptorServiceの不具合を修正
呼び出しスレッドと、非同期実行スレッドで、同じInterceptorChainを共有しているため、インターセプタの連鎖が正しく動作しない不具合を修正した。
(10)jp.ossc.nimbus.service.http.httpclient.HttpClientFactoryServiceの不具合を修正
HttpClientの生成に失敗した場合に、Semaphoreのリソースを開放漏れしてしまう不具合を修正した。
(11)jp.ossc.nimbus.service.journal.editor.ByteArrayJournalEditorServiceの不具合を修正
負の値となるバイト値が含まれている場合に、4バイトの文字列になってしまう不具合を修正した。
(12)jp.ossc.nimbus.service.resource.jmsqueue.JmsQueueSessionServiceの不具合を修正
Sessionの生成に失敗した場合に、Semaphoreのリソースを開放漏れしてしまう不具合を修正した。
(13)jp.ossc.nimbus.service.writer.mail.MailWriterServiceの不具合を修正
宛先アドレスなどをWritableRecord内に、Collectionや配列等の形式で複数指定した場合に、正しく設定できない不具合を修正した。
2. 変更
(1)jp.ossc.nimbus.beans.ArrayEditorの変更
getAsText()をサポートした。
(2)jp.ossc.nimbus.beans.ClassArrayEditorの変更
jp.ossc.nimbus.beans.ArrayEditorを継承した。
(3)jp.ossc.nimbus.beans.MapEditorの変更
・空白だけの行は、無視するようにした。
・getAsText()で、最後に改行を入れないようにした。
(4)jp.ossc.nimbus.beans.MethodArrayEditorの変更
getAsText()をサポートした。
(5)jp.ossc.nimbus.beans.PropertiesEditorの変更
ユニコード文字をサポートした。
(6)jp.ossc.nimbus.beans.ServiceNameArrayEditorの変更
getAsText()で、最後に改行を入れないようにした。
(7)jp.ossc.nimbus.beans.ServiceNameRefArrayEditorの変更
getAsText()で、最後に改行を入れないようにした。
(8)jp.ossc.nimbus.beans.SortedMapEditorの変更
空白だけの行は、無視するようにした。
(9)jp.ossc.nimbus.core.AttributeMetaDataの変更
attribute要素にtype="org.w3c.dom.Element"と指定する事で、DOMのElementを
設定できるようにした。
(10)jp.ossc.nimbus.core.ServiceLoaderの変更
以下のメソッドを追加した。
・setServerMetaData(ServerMetaData)
・setServiceMetaData(String, ServiceMetaData)
(11)jp.ossc.nimbus.core.DefaultServiceLoaderServiceの変更
jp.ossc.nimbus.core.ServiceLoaderインタフェースの変更に伴い、
以下のメソッドを実装した。
setServerMetaData(ServerMetaData)
setServiceMetaData(String, ServiceMetaData)
(12)jp.ossc.nimbus.core.ServiceManagerの変更
registerService(ServiceMetaData)メソッドを追加した。
(13)jp.ossc.nimbus.core.DefaultServiceManagerServiceの変更
jp.ossc.nimbus.core.ServiceManagerインタフェースの変更に伴い、
registerService(ServiceMetaData)メソッドを実装した。
(14)jp.ossc.nimbus.core.ServiceManagerFactoryの変更
以下のメソッドを追加した。
・registerManager(String)
・registerService(String,ServiceMetaData)
(15)jp.ossc.nimbus.core.ServiceMetaDataの変更
コンストラクタServiceMetaData(String,String)を追加した。
(16)jp.ossc.nimbus.core.ServiceNameRefの変更
・equals(Object)、hashCode()を実装した。
・Serializableをimplementsした。
・Comparableを実装した。
(17)jp.ossc.nimbus.io.CSVWriterの変更
writeCSV(List)メソッドを追加した。
(18)jp.ossc.nimbus.io.RecurciveSearchFileの変更
・ファイルを検索するか、ディレクトリを検索するか、全て検索するかの
検索種別を引数で指定できるように、以下のメソッドを追加した。
listAllTree(int)
listAllTree(FilenameFilter, int)
listAllTree(FilenameFilter[], int)
listAllTreeFiles(int)
listAllTreeFiles(FilenameFilter, int)
listAllTreeFiles(FilenameFilter[], int)
・正規表現によるパス検索を行えるように、以下のメソッドを追加した。
listAllTree(String)
istAllTree(String, int)
listAllTreeFiles(String)
listAllTreeFiles(String, int)
・listAllTree(String)、listAllTree(String, int)の戻り値を絶対パスに変更した。
(19)jp.ossc.nimbus.service.aop.InterceptorChainの変更
以下のメソッドを追加した。
cloneChain()
setCurrentInterceptorIndex(int)
(20)jp.ossc.nimbus.service.aop.DefaultInterceptorChainの変更
以下のメソッドを実装した。
cloneChain()
setCurrentInterceptorIndex(int)
(21)jp.ossc.nimbus.service.aop.DefaultThreadLocalInterceptorChainの変更
cloneChain()メソッドを実装した。
(22)jp.ossc.nimbus.service.aop.SelectableServletFilterInterceptorChainListServiceの変更
EnabledPathMapping属性と、DisabledPathMapping属性の対象となるパスを以下のように変更した。
変更前:javax.servlet.http.HttpServletRequest#getServletPath()
変更後:javax.servlet.http.HttpServletRequest#getPathInfo()
getPathInfo()がnullの場合は、
javax.servlet.http.HttpServletRequest#getServletPath()
(23)jp.ossc.nimbus.service.aop.interceptor.AsynchronousResponseの変更
getInvocationContext()メソッドを追加した。
(24)jp.ossc.nimbus.service.aop.interceptor.ExceptionConsumeInterceptorServiceの変更
・setLogger(Logger)をsetLoggerService(Logger)に変更した。
・setLoggerServiceName(ServiceName)やSetLoggerService(Logger)でLoggerが指定されていない場合は、ServiceBase#getLogger()のLoggerを使用するようにした。
(25)jp.ossc.nimbus.service.aop.interceptor.ExceptionThrowInterceptorServiceの変更
・setMessageRecordFactory(MessageRecordFactory)→setMessageRecordFactoryService(MessageRecordFactory)に変更した。
・setMessageRecordFactoryServiceName(ServiceName)やSetMessageRecordFactoryService(MessageRecordFactory)で
MessageRecordFactoryが指定されていない場合は、ServiceBase#getMessageRecordFactory()の
MessageRecordFactoryを使用するようにした。
(26)jp.ossc.nimbus.service.aop.interceptor.ExceptionWrapInterceptorServiceの変更
・setMessageRecordFactory(MessageRecordFactory)→setMessageRecordFactoryService(MessageRecordFactory)に変更した。
・setMessageRecordFactoryServiceName(ServiceName)やSetMessageRecordFactoryService(MessageRecordFactory)で
MessageRecordFactoryが指定されていない場合は、ServiceBase#getMessageRecordFactory()の
MessageRecordFactoryを使用するようにした。
(26)jp.ossc.nimbus.service.aop.interceptor.MethodAsynchronousInterceptorServiceの変更
非同期応答キューを待ち合わせてレスポンスを返すようにするかどうかを設定する
ReturnResponse属性を追加した。
(27)jp.ossc.nimbus.service.aop.interceptor.MethodJournalInterceptorServiceの変更
RequestIdKey属性のデフォルト値をjp.ossc.nimbus.service.aop.interceptor.ThreadContextKey#REQUEST_IDにした。
(28)jp.ossc.nimbus.service.aop.interceptor.MethodMetricsInterceptorServiceの変更
MethodAndCategoryServiceNameMapping属性、CategoryServiceName属性の両方が
指定されていない場合、出力用のデーモンスレッドを起動しないようにした。
(29)jp.ossc.nimbus.service.beancontrol.interfaces.BeanFlowInvokerの変更
invokeFlow(Object, BeanFlowMonitor)メソッドを追加した。
(30)jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerAccessImplの変更
invokeFlow(Object, BeanFlowMonitor)メソッドを実装した。
(31)jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerAccessImpl2の変更
・invokeFlow(Object, BeanFlowMonitor)メソッドを実装した。
・result要素の子要素にvar要素を指定できるようにした。
・attribute要素にtype="org.w3c.dom.Element"と指定する事で、DOMのElementを設定できるようにした。
・BeanFlowMonitorで、一時停止や強制終了をできるステップを制御するために、step要素にsuspend属性とstop属性を追加した。
(32)jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerFactoryCallBackの変更
以下のメソッドのシグニチャ変更を行った。
・removeExecList(String)→removeExecFlow(BeanFlowMonitor)
・addExcecFlow(String)→addExcecFlow(BeanFlowMonitor)
(33)jp.ossc.nimbus.service.beancontrol.DefaultBeanFlowInvokerFactoryServiceの変更
インタフェースBeanFlowInvokerFactoryCallBackの変更に伴い修正した。
(34)jp.ossc.nimbus.service.beancontrol.JobStepの変更
インタフェースBeanFlowInvokerの変更に伴い修正した。
(35)jp.ossc.nimbus.service.journal.editorfinder.ObjectMappedEditorFinderServiceの変更
以下のメソッドを追加した。
・getParentEditorfinderServiceName()
・getEditorProperties()
以下のメソッドを削除した。
・setEditorMap(Map)
(35)jp.ossc.nimbus.service.scheduler.DatabaseScheduleFactoryServiceの変更
クラス名をDatabaseTimerScheduleFactoryServiceに変更した。
(36)jp.ossc.nimbus.service.scheduler.Schedulerの変更
以下のメソッドの戻り値をTimerScheduleからScheduleに変更した。
・getSchedule(Object, String)
・getSchedules(Object)
・getSchedule(String)
・getSchedules()
(37)jp.ossc.nimbus.service.scheduler.TimerSchedulerServiceの変更
jp.ossc.nimbus.service.scheduler.Schedulerインタフェースの変更を反映した。
(38)jp.ossc.nimbus.service.semaphore.Semaphoreの変更
セマフォの開放漏れを定期的にチェックして、開放するデーモンスレッドの起動間隔
を設定・取得する以下のメソッドを追加した。
・setCheckInterval(long)
・getCheckInterval()
(39)jp.ossc.nimbus.service.semaphore.DefaultSemaphoreServiceの変更
jp.ossc.nimbus.service.semaphore.Semaphoreインタフェースの変更に伴い、
以下のメソッドを実装した。
・setCheckInterval(long)
・getCheckInterval()
(40)jp.ossc.nimbus.service.semaphore.MemorySemaphoreの変更
・jp.ossc.nimbus.service.semaphore.Semaphoreインタフェースの変更に伴い、
以下のメソッドを実装した。
setCheckInterval(long)
getCheckInterval()
・リソース開放待ちのスレッドの優先順位を一時的に上げるようにした。
3. 追加
(1)jp.ossc.nimbus.io.RegexFileFilterを追加
正規表現でファイルをフィルタするjava.io.FilenameFilter実装を追加した。
(2)jp.ossc.nimbus.service.beancontrol.BeanFlowMonitorを追加
BeanFlowの実行状態を監視・制御する機能を追加した。