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

Java XmlRpcException:在执行XQuery时没有这样的处理程序:Default.queryPT,java,xquery,xml-rpc,exist-db,Java,Xquery,Xml Rpc,Exist Db,我想对一个exist数据库启动一个XQuery。代码似乎很简单 String driver = "org.exist.xmldb.DatabaseImpl"; Database database = (Database) Class.forName(driver).newInstance(); DatabaseManager.registerDatabase(database); Collection col = DatabaseManager.getCollection(mydburi, lo

我想对一个exist数据库启动一个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);`
String driver=“org.exist.xmldb.DatabaseImpl”;
数据库=(数据库)类.forName(驱动程序).newInstance();
DatabaseManager.registerDatabase(数据库);
Collection col=DatabaseManager.getCollection(mydburi,login,pass);
XQueryService服务=(XQueryService)collection.getService(“XQueryService”,“3.0”);
String query=“xquery version\”1.0\“let$message:='Hello World!'return{$message}”;
ResourceSet结果=service.query(查询)`
问题是最后一行抛出一个异常,例如

org.xmldb.api.base.XMLDBException:没有这样的处理程序:Default.queryPT 位于org.exist.xmldb.RemoteXPathQueryService.query(RemoteXPathQueryService.java:115) 位于org.exist.xmldb.RemoteXPathQueryService.query(RemoteXPathQueryService.java:72) 在server.databasemanagerexst.doQuery(databasemanagerexst.java:230)上 在server.DatabaseManagerExist.main(DatabaseManagerExist.java:327)

原因:org.apache.xmlrpc.XmlRpcException:没有这样的处理程序:Default.queryPT 位于org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:197) 位于org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:156) 位于org.apache.xmlrpc.client.xmlrpchtttptransport.sendRequest(xmlrpchtttptransport.java:143) 位于org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:69) 位于org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:56) 位于org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:167) 位于org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:158) 位于org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:147) 位于org.exist.xmldb.RemoteXPathQueryService.query(RemoteXPathQueryService.java:100) ... 3个以上

我无法找到有关此异常或它引用的Default.queryPT的任何信息,我不知道是什么导致了它

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

我正在使用existdbv4.0.0库连接到数据库


任何关于什么是处理程序Default.queryPT以及如何/在何处更改它的想法?

XmlRpcException
是由于eXist db 4.0.0中更改了XML-RPC API(由开发团队的@adamretter确认)以及您在某些旧数据库上使用4.0.0库这一事实。我相信最佳实践是始终使用同一版本的数据库和库,这样可以避免由于它们之间的不一致而导致的问题,例如API中可能发生的更改。

我不是exist db的架构师,因此我相信对于所有像我一样的人来说,如果您提供更多的代码将非常有用:java,xQuery以及exist db日志中的stacktrace。为了得到答案,最好是问题可以重现。重现错误所需的唯一其他行是获取集合,我将添加完整的stacktrace并完成示例当前,我已经在我的机器上安装了exist db v3.6.0,我正在使用相同版本的库。在我的设置中,我无法再现异常。您是否安装了与您正在使用的库不同版本的数据库?谢谢@milijan似乎这就是问题所在,我使用的是4.0.0库而不是3.X数据库。我假设数据库没有问题,因为除了查询之外,我可以连接并访问所有操作。如果你想提出这个解决方案,我会接受。@milijan确实,XML-RPC API在eXist db 3.6.0和eXist db 4.0.0之间发生了更改