我目前正在使用托管在 Weblogic 和 SQLite DB 中的 Java Web 应用程序开发一个非常简单的项目。(范围很小,只有两个表)
Developpement 运行良好并且仍然可以工作,但是在部署到 staging 时,我遇到了一些意想不到的问题。
每当应用程序必须从数据库中读取(选择)时,我可以读取以下堆栈跟踪:
Root cause of ServletException.java.lang.Error: in _syscall()
at org.ibex.nestedvm.Runtime.syscall(Runtime.java:1086)
at org.sqlite.SQLite.run_0x171800(target/build/SQLite.mips:???)
at org.sqlite.SQLite.trampoline(target/build/SQLite.mips:???)
at org.sqlite.SQLite._execute(target/build/SQLite.mips:???)
at org.ibex.nestedvm.Runtime.__execute(Runtime.java:506)
at org.ibex.nestedvm.Runtime.call(Runtime.java:678)
at org.ibex.nestedvm.Runtime.call(Runtime.java:647)
at org.sqlite.NestedDB.call(NestedDB.java:568)
at org.sqlite.NestedDB.call(NestedDB.java:563)
at org.sqlite.NestedDB.prepare(NestedDB.java:130)
at org.sqlite.DB.prepare(DB.java:123)
at org.sqlite.Stmt.executeQuery(Stmt.java:121)
如果我错了,请告诉我,但我理解的是 target/build/SQLite.mips 指的是驱动程序的本机实现。但是,我确实指定它应该坚持纯 java 使用:
Connection con;
//Load the JDBC driver class dynamically.
Driver d = (Driver)Class.forName("org.sqlite.JDBC").newInstance();
DriverManager.registerDriver(d);
//init the connection
System.setProperty("sqlite.purejava", "true");
con = DriverManager.getConnection(getConnectionString());
我的理解正确吗?我怎样才能进一步强制使用纯 java 实现?还有什么能导致这样的堆栈跟踪吗?
作为记录,开发和临时环境都是 linux / bea weblogic。
谢谢你的时间:)