【问题标题】:MarkLogic Java XCC exceptionMarkLogic Java XCC 异常
【发布时间】:2015-10-01 15:30:44
【问题描述】:

我正在尝试使用 XCC 通过 JAVA 连接到 MarkLogic。

URI uri = new URI("xcc://admin:admin123@localhost:8011/Documents");
ContentSource contentSource = ContentSourceFactory.newContentSource(uri);
Session session = contentSource.newSession();
Request request = session.newAdhocQuery("\"Hello World\"");
ResultSequence rs = session.submitRequest(request);
System.out.println(rs.asString());
session.close();

我得到以下异常。

Exception in thread "main" com.marklogic.xcc.exceptions.ServerConnectionException: Premature End-Of-Stream on flush.  Server connection lost?

这个错误似乎是因为 XDBC 服务器配置。我无法弄清楚我在这里做错了什么。

XDBC 参数很少,

authentication = basic,
threads = 100,
timeout = 1000
keep alive time count = 5

【问题讨论】:

  • 您的代码适用于 MarkLogic 8.0-3、当前的 XCC jar 文件和 Java 1.7。只是为了检查简单的事情,您能否确认端口 8011 上的应用程序服务器是 XDBC 服务器,而不是 HTTP 服务器?
  • 实际上,在 MarkLogic 8 中它也可以是 HTTP。你能告诉我们你正在使用的版本吗? MarkLogic、Java 以及使用的 XCC 库。 MarkLogic 8 需要最新的 XCC 库。
  • re: "HTTP Server" - XCC 只能用于通过 XML 重写器配置为支持 XDBC 协议的“HTTP”服务器端口。创建为“REST”服务器的服务器添加了这种支持,以其他方式创建的 HTTP 服务器没有。回复:“需要最新的 xcc 库”——这并不完全正确,如果您仅使用 XCC 库版本支持的功能,则早期版本的 XCC 库应该适用于 ML 8。 IE。如果您的客户端应用程序在 V7 中运行,您应该能够在 V8 中使用与在 V7 中相同的 XCC 库。
  • 我用的是marklogic 8.0-3,XCC jar版本是5.0.6。 XDBC 在 8011 而非 HTTP 上运行。
  • 理论上 5.0.6 版应该可以工作,但是您不使用 8.0-3 库有什么原因吗?您可以从developer.marklogic.com/maven2/com/marklogic/marklogic-xcc/… 下载。此外,如果您使用的是 Gradle(我强烈推荐它),这里有一个依赖于 XCC 的 Gradle 脚本示例 - github.com/rjrudin/ml-xcc-util/blob/master/build.gradle

标签: java marklogic xcconfig


【解决方案1】:

是的。问题在于 XCC jar 的版本。我将 jar 更新到最新版本 8,问题已解决。

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    相关资源
    最近更新 更多