Giter VIP home page Giter VIP logo

nimbus's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

nimbus's Issues

テストリソースのxmlエスケープ文字問題

テストリソースのresourceタグ内に、xmlエスケープ対象文字を書きたい時に、エスケープするのが面倒なので、BeanFlowと同じようにXMLコメントアウトをresourceタグに書けるようにして欲しい。

NimbusExternalizerServiceでClassオブジェクトを非直列化できない

以下のように実行すると、例外が発生する。

bsh % import jp.ossc.nimbus.service.io.*;
bsh % NimbusExternalizerService ext = new NimbusExternalizerService();
bsh % ext.create();
bsh % ext.start();
bsh % import java.io.*;
bsh % ByteArrayOutputStream baos = new ByteArrayOutputStream();
bsh % ext.writeExternal(String.class, baos);
bsh % ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
bsh % print(ext.readExternal(bais));

java.lang.IllegalAccessError: java.lang.Class
        at sun.reflect.GeneratedSerializationConstructorAccessor4.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at jp.ossc.nimbus.service.io.NimbusExternalizerService$MetaClass.newInstance(NimbusExternalizerService.java:1081)
        at jp.ossc.nimbus.service.io.NimbusExternalizerService$NimbusObjectInputStream.readObjectOverride(NimbusExternalizerService.java:522)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:421)
        at jp.ossc.nimbus.service.io.SerializableExternalizerService.readInternal(SerializableExternalizerService.java:490)
        at jp.ossc.nimbus.service.io.SerializableExternalizerService.readExternal(SerializableExternalizerService.java:428)
        at jp.ossc.nimbus.service.io.SerializableExternalizerService.readExternal(SerializableExternalizerService.java:404)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at bsh.Reflect.invokeMethod(Unknown Source)
        at bsh.Reflect.invokeObjectMethod(Unknown Source)
        at bsh.Name.invokeMethod(Unknown Source)
        at bsh.BSHMethodInvocation.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHArguments.getArguments(Unknown Source)
        at bsh.BSHMethodInvocation.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.Interpreter.run(Unknown Source)
        at bsh.Interpreter.main(Unknown Source)

HttpClientFactoryで、HTTP応答ステータスに対して、例外を上げる機能が欲しい

相手のシステムによって、HTTPの応答ステータスを例外扱い(システムエラー相当)して良い場合がある。
但し、どのステータスが、例外扱いして良いかは、システムにより異なる。
また、URLによって異なる場合もある。
それらを加味したうえで、サービスの定義レベルで、このステータスは、例外扱いにして良い(または、このステータス以外は例外扱いして良い)という設定ができるようにして欲しい。

Java7ソートアルゴリズム仕様変更に伴いエラーが発生する場合がある

「Comparison method violates its general contract!」のエラーが発生する場合がある。
調べたところ、「Java6ではこのエラーは出なかったが、Java7へバージョンアップした際にソートアルゴリズムが変わりこのエラーが出るようになる」とのこと。

JBOSS起動時のオプションで1.6相当のソートアルゴリズムを使用するオプションに変更することで対策をとっているが、根本的な対策はあるか?

以下、エラーログです。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2018-03-11 11:35:00,982 INFO [STDOUT] 2018/03/11 11:35:00,UNKNOWN,FRAMEWORK_ERROR,[TPS_00002]Topic publish error. Retry out.
java.lang.IllegalArgumentException: Comparison method violates its general contract!
 java.util.ComparableTimSort.mergeHi(ComparableTimSort.java:835)
 java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:453)
 java.util.ComparableTimSort.mergeCollapse(ComparableTimSort.java:376)
 java.util.ComparableTimSort.sort(ComparableTimSort.java:182)
 java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
 java.util.Arrays.sort(Arrays.java:472)
 java.util.Collections.sort(Collections.java:155)
 jp.ossc.nimbus.service.publish.DistributedServerConnectionImpl.selectConnection(DistributedServerConnectionImpl.java:71)
 jp.ossc.nimbus.service.publish.DistributedServerConnectionImpl.send(DistributedServerConnectionImpl.java:80)
 jp.co.nri.its.feed.service.publisher.ServerConnectionPublisherService.publish(ServerConnectionPublisherService.java:85)
 jp.co.nri.its.feed.service.publisher.CulledPublisherService$Checker.consume(CulledPublisherService.java:147)
 jp.ossc.nimbus.daemon.Daemon.run(Daemon.java:505)
 java.lang.Thread.run(Thread.java:745)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

サーバクラスタ構成について、複数台ともに正系(main=True)としたいが、そうならない

nimbus-20170308.061046
nimbus-20170814.105659
の差分において、

クラス名:jp.ossc.nimbus.service.keepalive.ClusterService
設定・確認:

  • 上記クラスを使用して、サーバのクラスタを生成(4台)
  • その際、クラスタへjoinさせる、「jp.ossc.nimbus.service.publish.ClusterConnectionFactoryService」にて、multiple =trueを指定
  • 起動したサーバのクラスタについて、全台ともに、main=Trueとなる想定であったが、1号機のmain=True、それ以外はmain=Falseであった(1号機から順に起動)
  • 全台ともに、メッセージ送信自体はできるため機能的には問題がなさそう

Java9でNimbusExternalizerServiceが動かない

以下のエラーが発生します。急いで改修をお願いします。

java.lang.NoClassDefFoundError: sun/reflect/ReflectionFactory$GetReflectionFactoryAction
at jp.ossc.nimbus.service.io.NimbusExternalizerService$MetaClass.(NimbusExternalizerService.java:848)
at jp.ossc.nimbus.service.io.NimbusExternalizerService$NimbusObjectOutputStream.writeObjectOverride(NimbusExternalizerService.java:244)
at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:345)

Websocket関連のClassを別Jarに分ける

nimbus-websocketのリポジトリを作成し、そっちに移動する。
jarを別にすることで、Tomcatなどのアプリケーションサーバで自動でWebsocketがホスティングされることを防ぐ。
現在は、jarを作成する際に、websocket.enableのプロパティをON/OFFしているが、jarにWebsocketのClassが含まれているかは展開しないとわからない。

DataSetJSONConverterでBigDecimal型のnullを0に変換するようにした修正について

【null は null のまま扱いたいです】
現行利用しているバージョン:nimbus-20120203.075817.jar

新しいバージョンのNimbusを利用しているのですが、下記の現新差異が出ております。
現行のままnullで取得可能は代替手段はありますでしょうか?
────────────────────────────────────────────────────────────
Beanflowから返却されたDataSet(レスポンスオブジェクト)を java.io.InputStream に変換している箇所があり、その変換最中に null → 0 が起こっていました。
 InputStream に変換: jp.ossc.nimbus.util.converter.StreamConverter#convertToStream(responseObj) を呼び出し InputStream を取得。
  取得する InputStream は DataSet → JSON形式の文字列 → byte[] → InputStream と変化され生成されていました。
  DataSet → JSON形式の文字列 の最中に起こっており、該当するメソッドは
  クラス:jp.ossc.nimbus.util.converter.DataSetJSONConverter
  メソッド:private StringBuilder appendValue(StringBuilder buf, Class type, Object value)
 となります。
 このメソッド内で、値がnullの場合、型を判定しその判定結果に応じて、値を補完していました。

 現行と比較すると下記のような判定方法となっております。
 ・現行 :nimbus-20120203.075817.jar
  581行目:

   }else if(type.isPrimitive()
     && (Byte.TYPE.equals(type) || Short.TYPE.equals(type) || Integer.TYPE.equals(type) || Long.TYPE.equals(type) || Float.TYPE.equals(type) || Double.TYPE.equals(type))
   ){
     buf.append('0');

 ・新:nimbus-20180223.014811.jar
  935行目:

   }else if(Number.class.isAssignableFrom(type) || (type.isPrimitive()
     && (Byte.TYPE.equals(type) || Short.TYPE.equals(type) || Integer.TYPE.equals(type) || Long.TYPE.equals(type) || Float.TYPE.equals(type) || Double.TYPE.equals(type)))
   ){
     buf.append('0');

原因:Number.class.isAssignableFrom(type) の条件が追加された為、BigDecimal の場合、判定結果が true となり、null → 0 と補完されたようです。 

BeanJSONConverterの改修

・プロパティのセッター、ゲッターがジェネリクスを使用してる場合の対応
・変換対象のブジェクトのインスタンスが存在する場合の対応

NimbusExternalizerServiceを使って、巨大なオブジェクトをRMI通信すると遅い

おそらく、内部でBufferedOutputStreamを使っているが、バッファサイズが1024固定なため、大きなオブジェクトを直列化すると、TCPの書き込み回数が増えて、遅くなるものと思われる。
バッファサイズを、設定できる機能を追加するか、バッファサイズを自動的に拡張していくような仕組みが必要ではないか?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.