【发布时间】: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。