Hi,
I've downloaded last BaseX version from the download page and what I've done it is just put the BaseX76.war into webapps deployment directory of Tomcat.
As far as I know, it has deployed correctly, since I can make REST requests successfully like http://MiServer/BaseX76/rest?command=show+users.
The problem comes when I try to access it from my Java Application, where I've tried with two methods: JavaClient and XQJ. With JavaClient it works, but with XQJ the response is always the same (log from [TOMCAT_DEPLOYMENT_DIRECTORY]/BaseX76/data/.logs):
13:32:40.053 172.24.41.93:59521 admin ERROR Improper use? Potential bug? Your feedback is welcome: Contact: basex-talk@mailman.uni-konstanz.de Version: BaseX 7.6 Java: Oracle Corporation, 1.7.0 OS: Linux, i386 Stack Trace: java.lang.NoClassDefFoundError: org/basex/index/value/DiskValues org.basex.data.DiskData.<init>(DiskData.java:88) org.basex.core.cmd.Open.open(Open.java:70) org.basex.core.cmd.Open.run(Open.java:36) org.basex.core.Command.run(Command.java:342) org.basex.core.Command.exec(Command.java:321) org.basex.core.Command.execute(Command.java:78) org.basex.server.ClientListener.run(ClientListener.java:145) 453.12 ms
The block of Java code where the Exception is thrown is the following (for the case of XQJ):
log.debug("[BaseX] executing query:"+query);
XQDataSource xqs = new BaseXXQDataSource();
xqs.setProperty("databaseName", dbName);
xqs.setProperty("serverName", serverNameBaseX);
xqs.setProperty("port", portBaseX);
xqs.setProperty("user", usuario);
xqs.setProperty("password", clave);
xqs.setLogWriter(new PrintWriter(System.out, true));
XQConnection xqc = xqs.getConnection(); ß Here is where the Exception is thrown
XQExpression xqe = xqc.createExpression();
XQSequence xq = xqe.executeQuery(query);
StringBuilder res = new StringBuilder();
while (xq.next()) {
res.append(xq.getItemAsString(null));
}
log.debug("[BaseX] result:"+res);
xqc.close();
It seems that it is not finding the jars inside the WAR where DiskData class is located, but I've entered into the Tomcat directory where the WAR has been deployed (/BaseX76/WEB-INF/lib) and all of them are there:
-rw-rw---- 1 2558399 2013-02-05 18:22 basex-7.6.jar
-rw-rw---- 1 295821 2013-01-30 11:42 basex-xqj-1.2.3.jar
-rw-rw---- 1 58160 2013-01-30 11:42 commons-codec-1.4.jar
-rw-rw---- 1 59590 2013-01-30 11:42 commons-fileupload-1.2.2.jar
-rw-rw---- 1 109043 2013-01-30 11:42 commons-io-1.4.jar
-rw-rw---- 1 153115 2013-01-30 11:42 jdom-1.1.jar
-rw-rw---- 1 794991 2013-01-31 15:34 jts-1.13.jar
-rw-rw---- 1 410933 2013-01-30 11:42 milton-api-1.7.2.jar
-rw-rw---- 1 119180 2013-01-30 11:42 mime-util-2.1.3.jar
-rw-rw---- 1 23445 2013-01-30 11:42 slf4j-api-1.5.8.jar
-rw-rw---- 1 5284 2013-01-30 11:42 slf4j-nop-1.5.8.jar
-rw-rw---- 1 9260 2013-01-30 11:42 xmldb-api-1.0.jar
-rw-rw---- 1 7188 2013-01-30 11:45 xmlpull-1.1.3.1.jar
-rw-rw---- 1 24956 2013-01-30 11:45 xpp3_min-1.1.4c.jar
-rw-rw---- 1 4578 2013-01-30 11:42 xqj2-0.1.0.jar
-rw-rw---- 1 16221 2013-01-30 11:42 xqj-api-1.0.jar
-rw-rw---- 1 481672 2013-01-30 11:42 xstream-1.4.2.jar
Any ideas?. Other projects deployed into that server worked without any problem. I know that I could use JavaClient method for accessing but then the problem is that I cannot recover the result of the query execution, while with XQJ I can:
JavaClient:
log.debug("[BaseX] executing query:"+query);
ClientSession cSes = new ClientSession(serverNameBaseX, Integer.valueOf(portBaseX), user, pass);
cSes.setOutputStream(System.out);
ClientQuery cQuery = cSes.query(query);
cQuery.execute();
String res = cQuery.info(); ß This res only stores the execution time and not the result of the query, so it is useless (for me :-) )
cQuery.close();
XQJ:
XQSequence xq = xqe.executeQuery(query); ß Instead, this do stores the result of the query (exactly what I want)
Thank you and best regards,
C.
Carlos Marcos Lagunar
Health Technical Consultant
Research & Innovation
carlos.marcos@atosresearch.eu mailto:carlos.marcos@atosresearch.eu
Valladolid - Spain
www.atosresearch.eu http://www.atosresearch.eu/
es.atos.net
------------------------------------------------------------------ This e-mail and the documents attached are confidential and intended solely for the addressee; it may also be privileged. If you receive this e-mail in error, please notify the sender immediately and destroy it. As its integrity cannot be secured on the Internet, the Atos group liability cannot be triggered for the message content. Although the sender endeavours to maintain a computer virus-free network, the sender does not warrant that this transmission is virus-free and will not be liable for any damages resulting from any virus transmitted.
Este mensaje y los ficheros adjuntos pueden contener informacion confidencial destinada solamente a la(s) persona(s) mencionadas anteriormente pueden estar protegidos por secreto profesional. Si usted recibe este correo electronico por error, gracias por informar inmediatamente al remitente y destruir el mensaje. Al no estar asegurada la integridad de este mensaje sobre la red, Atos no se hace responsable por su contenido. Su contenido no constituye ningun compromiso para el grupo Atos, salvo ratificacion escrita por ambas partes. Aunque se esfuerza al maximo por mantener su red libre de virus, el emisor no puede garantizar nada al respecto y no sera responsable de cualesquiera danos que puedan resultar de una transmision de virus. ------------------------------------------------------------------