我有一個任務,在javaSE應用程序中工作正常約一年。即:從sqlite數據庫中提取blob和文本元數據並填充大型RDBMS。Wild being被sqlite殺死jdbc
當我把這個任務移動到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,servlet等都停止工作。
我的singleton EJB處理sqlite-files包裝在try-catch中,但它沒有幫助。所以這是非常令人沮喪的問題。
操作系統是CentOS7與最新股票jre。 sqlite jdbc是3.8.11.2 - 最新版本。
我試圖增加堆1024和2048兆字節,它沒有幫助。
我該如何調查和解決這個問題?回到javaSE是不可取的。
我得到的斑點與此代碼(包裹在try-catch代碼和檢查後空)
System.out.print("getting data... ");
byte[] rawData = rs.getBytes("data");
System.out.println("ok");
至於我調試,wildfly不是死上的getBytes(),因爲我可以看到 「獲取數據...確定「在控制檯中。從那以後,我與字節數組只工作,而是斷言`jBlob wildfly死」失敗
哇!好地方! –
我懷疑增加JVM堆可能會以某種方式修復不整齊的C++代碼。但是,謝謝你的回答,現在更清楚發生了什麼事情!順便說一句,我可以通過使用CentOS6解決問題。所以,可能它並不重要的Java SE/EE,但一些錯誤與最新的Java它略有不同1.8.0.101 vs 1.8.0.102 –
也許看看[xerial sqlite jdbc](https://bitbucket.org/xerial/sqlite-jdbc)驅動程序作爲替代。它會拋出異常,而不會因斷言失敗而崩潰 –