【问题标题】:Servlet and XQueryServlet 和 XQuery
【发布时间】:2014-08-22 15:15:35
【问题描述】:

我编写了一个 java 类来在 XML 数据库上运行一个简单的 XQuery(使用 Saxon xqj)。该查询在此类中运行良好。但我想从 servlet 访问这个类。问题是 servlet 没有找到 java 类,当我运行 servlet 时它得到java.lang.ClassNotFoundException: javax.xml.xquery.XQException。请问有什么想法吗?

Java 类就这么简单:

import java.util.Properties;
import javax.xml.xquery.XQConnection;
import javax.xml.xquery.XQException;
import javax.xml.xquery.XQPreparedExpression;
import javax.xml.xquery.XQResultSequence;
import javax.xml.xquery.XQSequence;
import javax.xml.namespace.QName;
import net.sf.saxon.xqj.SaxonXQDataSource;
import org.xml.sax.SAXException;

public class XMLClass {
public static String xmldata() throws XQException{
    XQConnection con;
    String output = null;
    final String sep = System.getProperty("line.separator");
    String fileName= "cd_book.xml";
        con = new SaxonXQDataSource().getConnection();
        System.out.println("Connected");
    String queryString = "declare variable $docName as xs:string external;"+sep +
   "for $x in doc($docName)/*" +
   " return $x";
   XQPreparedExpression expr = con.prepareExpression(queryString);
   expr.bindObject(new QName("docName"), fileName, null);
   XQResultSequence rs = expr.executeQuery();
   String result =rs.getSequenceAsString(new Properties());
   return result;

    }
   }

Servlet 是:

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.xquery.XQException;
public class ServletXML extends HttpServlet {
private static final long serialVersionUID = 1L;

public ServletXML() {
    super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {

try {
        XMLClass.xmldata();
        } catch (XQException e) {
            e.printStackTrace()
 }

}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}

【问题讨论】:

    标签: servlets exception-handling xquery saxon


    【解决方案1】:

    然后你的类可能会从你的类路径中丢失。你是如何编译和运行它的?

    另外,最好将两者都放入一个或多个包中,如果您的类位于不同的包中,则从您的 servlet 导入您的类。

    【讨论】:

    • 所有文件都在同一个包中。如果我删除调用 xmlData() 方法的行(在 ServletXML 中),那么它不会出现任何异常。所以我认为问题在于 servlet 无法访问其中写入了 XQuery 的方法。
    • 目前您还没有指定一个包。那么如何将所有文件放在同一个包中呢?此外,您粘贴的代码中的方法称为xmldata() 而不是xmlData()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    相关资源
    最近更新 更多