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)
  1. 凭据和命名空间正确。
  2. Cache 实例已按指令正确初始化。
  3. 包括GLOBALS_HOMEDYLD_LIBRARY_PATH在内的所有全局环境变量都已设置。
  4. 以下库已被软链接:

    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
    
  5. -Djava.library.path=/usr/local/lib 已指定。

  6. 罐子已经包含在内。

这些步骤让我遇到了 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

增加堆栈大小已解决问题。