2016-09-27 10 views
1

私は約1年間javaSEアプリケーションでうまくいきました。つまり、sqliteデータベースからブロブとテキストメタデータを抽出し、大きなRDBMSに移入します。sqlite jdbcによってWildflyが殺される

私がこのタスクをWildfly(10.0と昨日10.1を試しました)に移動したときに、奇妙なことが発生しました。非常に多くのWildflyだけで完全に孤立したメッセージ

java: src/main/java/org/sqlite/core/NativeDB.c:521: 
Java_org_sqlite_core_NativeDB_column_1blob: Assertion `jBlob' failed. 
/opt/wildfly-10.1.0.Final/bin/standalone.sh: line 307: 36275 Aborted     "java" -D"[Standalone]" -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true "-Dorg.jboss.boot.log.file=/opt/wildfly-10.1.0.Final/standalone/log/server.log" "-Dlogging.configuration=file:/opt/wildfly-10.1.0.Final/standalone/configuration/logging.properties" -jar "/opt/wildfly-10.1.0.Final/jboss-modules.jar" -mp "/opt/wildfly-10.1.0.Final/modules" org.jboss.as.standalone -Djboss.home.dir="/opt/wildfly-10.1.0.Final" -Djboss.server.base.dir="/opt/wildfly-10.1.0.Final/standalone" 

他のすべてのEJB、サーブレットで死に、その停止のどちらかに取り組んでいます。

sqlite-filesを処理する私のシングルトンEJBはtry-catchでラップされますが、それは役に立ちません。だからそれは非常にイライラする問題です。

OSは、最新の株価があるCentOS7です。 sqlite jdbcは最新の3.8.11.2です。

ヒープを1024と2048メガバイトに増やそうとしましたが、それは役に立ちませんでした。

この問題を調査して解決するにはどうすればよいですか? javaSEに戻すことは望ましくありません。

は私が を見ることができるので、wildfly」、GetBytesメソッド()にしないで死ぬ(のtry-catchで包み、その後はnullをチェックする)私の知る限りデバッグするよう

System.out.print("getting data... "); 
byte[] rawData = rs.getBytes("data"); 
System.out.println("ok"); 

このコードでブロブを取得しますデータを取得しています... ok "コンソールで。その後、私はバイト配列でのみ動作しますが、wildfly アサーション `jBlob」で死ぬが

答えて

3

を失敗した私はNativeDB.cのコードのこの不幸な作品を見つけました:

length = sqlite3_column_bytes(toref(stmt), col); 
jBlob = (*env)->NewByteArray(env, length); 
assert(jBlob); // out-of-memory 

したがって、あなたも指定してみてくださいすることができます問題を解決しようとするメモリが増えているか、おそらく別のsqlite JDBCドライバがあります。

このコード全体でassertを使用した場合、私は誰もそれをサーバーベースのソリューションの近くに置かないといけないと思います。 Cアサーションの失敗のデフォルトの動作は、現在のプロセスを中止することです。

+0

うわー!良い点! –

+0

JVMのヒープが増えていくと、何とかしてC++のコードが不安定になる可能性があるのではないでしょうか。しかし、答えてくれてありがとう、今何が起こっているの明確です!ちなみに、私はCentOS6を使って回避策の問題を起こすことができました。だから、おそらくそれはJava SE/EEとは関係ありませんが、最新のJavaのいくつかのバグはわずかに異なります1.8.0.102対1.8.0.102 –

+0

[xerial sqlite jdbc](https://bitbucket.org/xerial/sqlite-jdbc)ドライバを使用します。アサーションエラーで落ちるのではなく、例外をスローする –

関連する問題