XmlRpcException:执行XQuery

时间:2018-03-13 17:09:10

标签: java xquery xml-rpc exist-db

我想在现有数据库中启动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:没有这样的处理程序:Default.queryPT       在org.exist.xmldb.RemoteXPathQueryService.query(RemoteXPathQueryService.java:115)       在org.exist.xmldb.RemoteXPathQueryService.query(RemoteXPathQueryService.java:72)       在server.DatabaseManagerExist.doQuery(DatabaseManagerExist.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.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.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。

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

知道什么是处理程序Default.queryPT以及如何/在哪里更改它?

1 个答案:

答案 0 :(得分:1)

XmlRpcException是eXist-db 4.0.0中更改的XML-RPC API的结果(由eXist开发团队的@adamretter确认)以及您使用4.0.0库的事实一些较旧的数据库。我认为最佳实践是始终使用数据库和相同版本的库,这样可以避免因其不连贯性而导致的问题,例如API中的可能更改。