Nimbusは、SIerによるSIerのためのSI部品ライブラリです。 基盤としてDIコンテナを持ち、サービス(POJO)をホスティングし、アプリケーションに提供します。 また、ライフサイクルの概念があり、サービス間の依存関係の解決を行いながらライフサイクルを制御します。
バグFIX、機能追加、機能改善、動作変更を行いました。
1. バグFIX
(1)jp.ossc.nimbus.beans.SimplePropertyの不具合を修正
リフレクションのキャッシュが効かない場合があり、性能が向上しない問題を修正した。
(2)jp.ossc.nimbus.beans.IndexedPropertyの不具合を修正
リフレクションのキャッシュが効かない場合があり、性能が向上しない問題を修正した。
(3)jp.ossc.nimbus.beans.dataset.DataSetの不具合を修正
setNestedRecordListSchemaメソッドを使用すると、直列化できなくなる不具合を修正した。
(4)jp.ossc.nimbus.service.aop.interceptor.MethodMetricsInterceptorServiceの不具合を修正
平均値の誤差が徐々に大きくなる不具合を修正した。
(5)jp.ossc.nimbus.service.aop.interceptor.MetricsInfoの不具合を修正
平均値の誤差が徐々に大きくなる不具合を修正した。
(6)jp.ossc.nimbus.service.aop.interceptor.servlet.ExceptionHandlingInterceptorServiceの不具合を修正
・圧縮する際に、文字化けが発生する不具合を修正した。
・HTTPレスポンスヘッダのContent-Lengthが設定されない不具合を修正した。
(7)jp.ossc.nimbus.service.http.httpclient.HttpClientFactoryServiceの不具合を修正
・HttpResponseが生成される前に例外が発生した場合、NullPointerExceptionが発生してしまう不具合を修正した。
・HTTPレスポンスにConnectionヘッダも、Content-Lengthヘッダもない場合に、executeRequestメソッド内でレスポンスのストリームを閉じてしまう不具合を修正した。
(8)jp.ossc.nimbus.service.http.httpclient.HttpResponseImplの不具合を修正
HTTPレスポンスが圧縮されていて、HTTPレスポンスヘッダにConnectionヘッダがない、またはcloseである、またはContent-Lengthヘッダがない場合に、圧縮が解凍されない不具合を修正した。
(9)jp.ossc.nimbus.service.http.proxy.ProxyServerServiceの不具合を修正
クライアント側で稀にIOExceptionが発生する問題を修正した。
(10)jp.ossc.nimbus.service.queue.DefaultQueueServiceの不具合を修正
取得待ちスレッドがいる状態で、release()メソッドを呼び出すと、CPUが高負荷になって、処理に時間が掛かる問題を修正した。
(11)jp.ossc.nimbus.service.queue.QueueHandlerContainerServiceの不具合を修正
ハンドリング中に例外が発生して、リトライを開始すると、ハンドリング処理が正常応答しても、リトライアウトするまでリトライしてしまう不具合を修正した。
(12)jp.ossc.nimbus.service.queue.DistributedQueueHandlerContainerServiceの不具合を修正
ハンドリング中に例外が発生して、リトライを開始すると、ハンドリング処理が正常応答しても、リトライアウトするまでリトライしてしまう不具合を修正した。
(13)jp.ossc.nimbus.service.repository.JNDIRepositoryServiceの不具合を修正
複数階層の存在しないJNDIコンテキストで、register(String, Object)を呼び出すと、正しく登録できない不具合を修正した。
(14)jp.ossc.nimbus.service.queue.MemorySemaphoreの不具合を修正
・一斉にfreeResource()されたタイミングで、稀にリソースが余っているのに、貸し出せない状況が発生する不具合を修正した。
・取得待ちスレッドがいる状態で、release()メソッドを呼び出すと、CPUが高負荷になって、処理に時間が掛かる問題を修正した。
2. 変更
(1)jp.ossc.nimbus.beans.Propertyの変更
以下のメソッドを追加した。
・setIgnoreNullProperty(boolean)
・isIgnoreNullProperty()
(2)jp.ossc.nimbus.beans.SimplePropertyの変更
・以下のメソッドを追加した。
・setIgnoreNullProperty(boolean)
・isIgnoreNullProperty()
(3)jp.ossc.nimbus.beans.IndexedPropertyの変更
・以下のメソッドを追加した。
・setIgnoreNullProperty(boolean)
・isIgnoreNullProperty()
(4)jp.ossc.nimbus.beans.MappedPropertyの変更
以下のメソッドを追加した。
・setIgnoreNullProperty(boolean)
・isIgnoreNullProperty()
(5)jp.ossc.nimbus.beans.NestedPropertyの変更
以下のメソッドを追加した。
・setIgnoreNullProperty(boolean)
・isIgnoreNullProperty()
(6)jp.ossc.nimbus.beans.NimbusPropertyEditorManagerの変更
java.sql.TimestampのPropertyEditorとして、jp.ossc.nimbus.beans.TimestampEditorを登録した。
(7)jp.ossc.nimbus.beans.Recordの変更
省メモリ対策のために、インスタンス変数valuesをMapからObject[]に変更した。
(8)jp.ossc.nimbus.beans.RecordListの変更
・RecordList内のRecordの置換や、削除を行った場合にも、蓄積型検索の検索結果に反映されるようにした。
・以下のメソッドを追加した。
・setStockKeySearch(String, String[])
・setStockKeySearch(String, int[])
・stockKeySearch(String, Record)
(9)jp.ossc.nimbus.daemon.Daemonの変更
デーモンスレッドの開始前及び停止後でも、suspend()、resume()を呼び出すと、内部状態を変更するようにした。
(10)jp.ossc.nimbus.io.UnicodeHexBufferedReaderの変更
以下のメソッドを追加した。
・convertUnicode(char, StringBuffer)
・convertUnicode(char)
(11)jp.ossc.nimbus.service.aop.interceptor.MethodMetricsInterceptorServiceの変更
以下のメソッドを追加した。
・setResetByOutput(boolean)
・isResetByOutput()
(12)jp.ossc.nimbus.service.aop.interceptor.MetricsInfoの変更
reset()メソッドを追加した。
(13)jp.ossc.nimbus.service.connection.DataSourceConnectionFactoryServiceMBeanの変更
ConnectionFactoryインタフェースを実装しないようにした。
(14)jp.ossc.nimbus.service.connection.JDBCConnectionFactoryServiceMBeanの変更
ConnectionFactoryインタフェースを実装しないようにした。
(15)jp.ossc.nimbus.service.connection.WrappedConnectionFactoryServiceMBeanの変更
ConnectionFactoryインタフェースを実装しないようにした。
(16)jp.ossc.nimbus.service.http.httpclient.HttpResponseImplの変更
・レスポンスヘッダのContent-Lengthが0以上の時だけ、レスポンスを読み込むようにした。
・HTTPレスポンスヘッダのヘッダ名を大文字小文字無視して、getHeader(String)、getHeaders(String)できるようにした。
(17)jp.ossc.nimbus.service.http.proxy.TestHttpProcessServiceの変更
・HTTPプロトコルのCONNECTメソッドに対応した。
・内部クラスActionにsetProcessTime(long)メソッドを追加した。
(18)jp.ossc.nimbus.service.jms.JMSConnectionFactoryServiceMBeanの変更
JMSConnectionFactoryインタフェースを実装しないようにした。
(19)jp.ossc.nimbus.service.jms.JMSMessageConsumerFactoryServiceMBeanの変更
JMSMessageConsumerFactoryインタフェースを実装しないようにした。
(20)jp.ossc.nimbus.service.jms.JMSMessageProducerFactoryServiceMBeanの変更
JMSMessageProducerFactoryインタフェースを実装しないようにした。
(21)jp.ossc.nimbus.service.jms.JMSSessionFactoryServiceMBeanの変更
JMSSessionFactoryインタフェースを実装しないようにした。
(22)jp.ossc.nimbus.service.journal.ThreadManagedJournalServiceの変更
・以下のメソッドを追加した。
・setWriteDaemonSize(int)
・getWriteDaemonSize()
・ジャーナル出力デーモンスレッドが、出力キューからget待ちする処理を、無限待ちしないようにした。
(23)jp.ossc.nimbus.service.journal.editor.ItemJournalEditorServiceBaseの変更
以下のメソッドを追加した。
・setOutputItemName(boolean)
・isOutputItemName()
(24)jp.ossc.nimbus.service.keepalive.AbstractKeepAliveCheckerSelectorServiceの変更
利用可能なKeepAliveCheckerを更新する際に、ロックを掛ける動作をやめて、性能を向上させた。
(25)jp.ossc.nimbus.service.proxy.RemoteClientServiceの変更
出口でInterceptorChainのインデックスをリセットするようにした。
(26)jp.ossc.nimbus.service.proxy.RemoteServiceServerServiceの変更
出口でInterceptorChainのインデックスをリセットするようにした。
(27)jp.ossc.nimbus.service.proxy.RemoteServiceServerSessionBeanの変更
出口でInterceptorChainのインデックスをリセットするようにした。
(28)jp.ossc.nimbus.service.proxy.invoker.ClusterInvokerServiceの変更
リトライ機能の追加に伴い、以下のメソッドを追加した。
・setExceptionConditions(String[])
・getExceptionConditions()
・setMaxRetryCount(int)
・getMaxRetryCount()
・setRetryInterval(long)
・getRetryInterval()
(28)jp.ossc.nimbus.service.publish.DefaultPublisherServiceの変更
・チャネルのaccept及びreadを監視しているスレッドで、CancelledKeyExceptionが発生した場合、無視するようにした。
・以下のメソッドを追加した。
・setServerSocketSoTimeout(int)
・getServerSocketSoTimeout()
・setServerSocketReceiveBufferSize(int)
・getServerSocketReceiveBufferSize()
・setSocketSoTimeout(int)
・getSocketSoTimeout()
・setSocketReceiveBufferSize(int)
・getSocketReceiveBufferSize()
・setSocketSendBufferSize(int)
・getSocketSendBufferSize()
・setSocketTcpNoDelay(boolean)
・isSocketTcpNoDelay()
・setSocketSoLinger(int)
・getSocketSoLinger()
・setAnalyzeQueueServiceName(ServiceName)
・getAnalyzeQueueServiceName()
・setAnalyzeThreadSize(int)
・getAnalyzeThreadSize()
(29)jp.ossc.nimbus.service.queue.DefaultQueueServiceの変更
以下のメソッドを追加した。
・setMaxThresholdSize(int)
・getMaxThresholdSize()
(30)jp.ossc.nimbus.service.repository.MBeanServerRepositoryServiceの変更
JBossを起動する時に、JConsoleでリモートから接続できるようにしておくと、JMXサーバが2つになり、JBossのJMXサーバに登録できなくなる問題に対応するために、MBeanServerDefaultDomain属性を追加した。
(31)jp.ossc.nimbus.service.scheduler2.Scheduleの変更
以下のメソッドを追加した。
・getExecuteStartTime()
・setExecuteStartTime(Date)
(32)jp.ossc.nimbus.service.scheduler2.DefaultScheduleの変更
以下のメソッドを追加した。
・getExecuteStartTime()
・setExecuteStartTime(Date)
(33)jp.ossc.nimbus.service.scheduler2.DatabaseScheduleManagerServiceの変更
スケジュールの実行開始時刻と実行終了時刻を出力するようにした。このため、スケジュールテーブルに、実行開始時刻と実行終了時刻のカラムを追加する必要がある。
(34)jp.ossc.nimbus.service.scheduler2.DefaultScheduleManagerServiceの変更
スケジュールの実行開始時刻と実行終了時刻を設定するようにした。このため、既存のスケジュール状態保存ファイルとの互換性がなくなったので、既存のスケジュール状態保存ファイルは、削除して導入する必要がある。
(35)jp.ossc.nimbus.servlet.InterceptorChainCallFilterの変更
出口でInterceptorChainのインデックスをリセットするようにした。
(36)jp.ossc.nimbus.servlet.ServiceManagerFactoryServletの変更
・初期化パラメータIgnoreMethodsを追加した。
・Nimbusのサービスで、nimbus-consoleから呼ばれたら困るメソッドは、デフォルトでIgnoreMethodsに登録するようにした。
(37)jp.ossc.nimbus.util.converter.StreamConverterの変更
以下のメソッドを、サブインタフェースStreamStringConverterに移動。
・setCharacterEncodingToStream(String)
・setCharacterEncodingToObject(String)
(38)jp.ossc.nimbus.util.converter.DataSetHtmlConverterの変更
以下のメソッドを追加した。
・setSynchronizedDomParse(boolean)
・isSynchronizedDomParse()
(39)jp.ossc.nimbus.util.converter.DataSetXMLConverterの変更
・StreamStringConverterインタフェースを実装した。
・以下のメソッドを追加した。
・setSynchronizedDomParse(boolean)
・isSynchronizedDomParse()
(40)jp.ossc.nimbus.util.converter.DataSetXpathConverterの変更
・StreamStringConverterインタフェースを実装した。
・以下のメソッドを追加した。
・setSynchronizedDomParse(boolean)
・isSynchronizedDomParse()
(41)jp.ossc.nimbus.util.converter.DOMHTMLConverterの変更
・StreamStringConverterインタフェースを実装した。
・以下のメソッドを追加した。
・setSynchronizedDomParse(boolean)
・isSynchronizedDomParse()
(42)jp.ossc.nimbus.util.converter.RecordListCSVConverterの変更
・StreamStringConverterインタフェースを実装した。
(43)jp.ossc.nimbus.util.converter.StringStreamConverterの変更
・StreamStringConverterインタフェースを実装した。
3. 追加
(1)jp.ossc.nimbus.beans.TimestampEditorを追加
TimestampのPropertyEditorを新規追加した。
(2)jp.ossc.nimbus.service.connection.TableCreatorServiceを追加
データベースのテーブルの準備を行うサービスを新規追加した。
(3)jp.ossc.nimbus.service.http.httpclient.ConnectHttpRequestImplを追加
HTTPプロトコルのCONNECTリクエストを行うHttpRequestインタフェース実装クラスを新規追加した。
(4)jp.ossc.nimbus.util.converter.DataSetJSONConverterを追加
DataSetとJSON(JavaScript Object Notation)の相互変換を行うCoverterインタフェース実装クラスを新規追加した。
(5)jp.ossc.nimbus.util.converter.StreamStringConverterを追加
StreamConverterの一部のメソッドをサブインタフェース化した。
(6)jp.ossc.nimbus.util.converter.SerializeStreamConverterを追加
直列化可能オブジェクトとストリームの相互変換を行うCoverterインタフェース実装クラスを新規追加した。
(7)jp.ossc.nimbus.util.cryptパッケージを追加
暗号化ユーティリティパッケージを追加し、パラメータの暗号化をサポートするクラスを新規追加した。