XmlRpcException:没有这样的处理程序:执行 XQuery 时 Default.queryPT

XmlRpcException: No Such Handler: Default.queryPT while executing XQuery

我想对现有数据库启动 XQuery。代码看起来够简单

String driver = "org.exist.xmldb.DatabaseImpl";
Database database = (Database) Class.forName(driver).newInstance();
DatabaseManager.registerDatabase(database);
Collection col = DatabaseManager.getCollection(mydburi, login, pass);
XQueryService service = (XQueryService) collection.getService("XQueryService", "3.0");
String query="xquery version \"1.0\";let $message := 'Hello World!'return <results><message>{$message}</message></results>";
ResourceSet result = service.query(query);`

问题是最后一行抛出异常,例如

org.xmldb.api.base.XMLDBException: No such handler: Default.queryPT at org.exist.xmldb.RemoteXPathQueryService.query(RemoteXPathQueryService.java:115) at org.exist.xmldb.RemoteXPathQueryService.query(RemoteXPathQueryService.java:72) at server.DatabaseManagerExist.doQuery(DatabaseManagerExist.java:230) at server.DatabaseManagerExist.main(DatabaseManagerExist.java:327)

Caused by: org.apache.xmlrpc.XmlRpcException: No such handler: Default.queryPT at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:197) at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:156) at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:143) at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:69) at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:56) at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:167) at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:158) at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:147) at org.exist.xmldb.RemoteXPathQueryService.query(RemoteXPathQueryService.java:100) ... 3 more

我无法找到有关此异常或它引用的 Default.queryPT 的任何信息,而且我不知道它可能是什么原因造成的。

该集合存在,我可以访问给定的集合来执行其他操作,例如存储或读取资源。我可以在 Exide 中复制查询,它工作得很好。我还尝试了最基本的 Hello World 查询,结果相同。我也使用过 XQueryService 1.0,但没有任何运气。

我正在使用 exist-db v4.0.0 库连接到数据库。

知道什么是处理程序 Default.queryPT 和 how/where 我要更改它吗?

XmlRpcException 是 eXist-db 4.0.0 中更改 XML-RPC API 的结果(由 eXist 开发团队的@adamretter 确认)和您在某些较旧的数据库上使用 4.0.0 库的事实。我认为最好的做法是始终使用相同版本的数据库和库,这样可以避免由于它们的不一致而引起的问题,例如 API.

中可能发生的变化