Java 通过 Globals API 的连接导致 StackOverflowError
Java connection via Globals API causes a StackOverflowError
我正在尝试通过 Globals API 将 Java 应用程序连接到 InterSystems Caché 数据库。
import com.intersys.globals.*;
public class Assignment {
public static void main(String[] args) {
final String user = "Andrew";
final String password = "Tobilko";
Connection connection = ConnectionContext.getConnection();
connection.connect("USER", user, password);
}
}
堆栈跟踪:
Exception in thread "main" java.lang.WhosebugError
at com.intersys.globals.internal.GlobalsConnectionJNI.connectImpl(Native Method)
at com.intersys.globals.internal.GlobalsConnectionJNI.connect(GlobalsConnectionJNI.java:107)
at com.tobilko.a3.Assignment.main(Assignment.java:12)
- 凭据和命名空间正确。
- Cache 实例已按指令正确初始化。
- 包括
GLOBALS_HOME
和DYLD_LIBRARY_PATH
在内的所有全局环境变量都已设置。
以下库已被软链接:
ln -s $GLOBALS_HOME/bin/libisccache.dylib /usr/local/lib
ln -s $GLOBALS_HOME/bin/liblcbjni.dylib /usr/local/lib
ln -s $GLOBALS_HOME/bin/liblcbindnt.dylib /usr/local/lib
ln -s $GLOBALS_HOME/bin/liblcbclientnt.dylib /usr/local/lib
ln -s $GLOBALS_HOME/bin/libmdsjni.dylib /usr/local/lib
-Djava.library.path=/usr/local/lib
已指定。
- 罐子已经包含在内。
这些步骤让我遇到了 WhosebugError
异常。
我不知道我在哪里可能犯了错误。
如有任何帮助,我们将不胜感激。
Andrew,我对 GlobalsAPI 不太熟悉。但是,我做了一些研究,发现这个 GlobalsAPI 在 Java CacheExtreme 库 cacheextreme.jar
的早期版本中,在 Caché lib
文件夹中。在您尝试使用的版本中,GlobalsAPI 已经消失,只有 Event Persistent 仍然存在。有了 IRIS,这个旧库将完全消失。并在 IRIS documentation nothing more about GlobalsAPI. I think it would be better if you ask about GlobalsAPI future on the Developer Community 门户中。
我跳过了 Window 配置部分,因为它不是我的 OS。
显然,所有系统都需要下一个配置:
Configuration for Windows
The default stack size of the Java Virtual Machine on Windows is too small for running eXTreme applications (running them with the
default stack size causes Java to report EXCEPTION_STACK_OVERFLOW
). To
optimize performance, heap size should also be increased.
To
temporarily modify the stack size and heap size when running an
eXTreme application, add the following command line arguments:
-Xss1024k -Xms2500m -Xmx2500m
增加堆栈大小已解决问题。
我正在尝试通过 Globals API 将 Java 应用程序连接到 InterSystems Caché 数据库。
import com.intersys.globals.*;
public class Assignment {
public static void main(String[] args) {
final String user = "Andrew";
final String password = "Tobilko";
Connection connection = ConnectionContext.getConnection();
connection.connect("USER", user, password);
}
}
堆栈跟踪:
Exception in thread "main" java.lang.WhosebugError
at com.intersys.globals.internal.GlobalsConnectionJNI.connectImpl(Native Method)
at com.intersys.globals.internal.GlobalsConnectionJNI.connect(GlobalsConnectionJNI.java:107)
at com.tobilko.a3.Assignment.main(Assignment.java:12)
- 凭据和命名空间正确。
- Cache 实例已按指令正确初始化。
- 包括
GLOBALS_HOME
和DYLD_LIBRARY_PATH
在内的所有全局环境变量都已设置。 以下库已被软链接:
ln -s $GLOBALS_HOME/bin/libisccache.dylib /usr/local/lib ln -s $GLOBALS_HOME/bin/liblcbjni.dylib /usr/local/lib ln -s $GLOBALS_HOME/bin/liblcbindnt.dylib /usr/local/lib ln -s $GLOBALS_HOME/bin/liblcbclientnt.dylib /usr/local/lib ln -s $GLOBALS_HOME/bin/libmdsjni.dylib /usr/local/lib
-Djava.library.path=/usr/local/lib
已指定。- 罐子已经包含在内。
这些步骤让我遇到了 WhosebugError
异常。
我不知道我在哪里可能犯了错误。
如有任何帮助,我们将不胜感激。
Andrew,我对 GlobalsAPI 不太熟悉。但是,我做了一些研究,发现这个 GlobalsAPI 在 Java CacheExtreme 库 cacheextreme.jar
的早期版本中,在 Caché lib
文件夹中。在您尝试使用的版本中,GlobalsAPI 已经消失,只有 Event Persistent 仍然存在。有了 IRIS,这个旧库将完全消失。并在 IRIS documentation nothing more about GlobalsAPI. I think it would be better if you ask about GlobalsAPI future on the Developer Community 门户中。
我跳过了 Window 配置部分,因为它不是我的 OS。
显然,所有系统都需要下一个配置:
Configuration for Windows
The default stack size of the Java Virtual Machine on Windows is too small for running eXTreme applications (running them with the default stack size causes Java to report
EXCEPTION_STACK_OVERFLOW
). To optimize performance, heap size should also be increased.To temporarily modify the stack size and heap size when running an eXTreme application, add the following command line arguments:
-Xss1024k -Xms2500m -Xmx2500m
增加堆栈大小已解决问题。