From: Anders B. O. <ab...@ds...> - 2011-07-25 14:33:10
|
Dear mailing list, I am tasked with setting up eXist for production for a few small web projects of ours. In order to do this I want to setup an installation of eXist configured to only contain exactly what is needed for one project and completely tailored to that one project. For the first project I am configuring it for a thesaurus that we are going to put online as part of the danish language resource website sproget.dk. The project is relatively simple and consists of the following structure in the database: /synordbog/css/syn.css /synordbog/xml/syn.xml /synordbog/xql/index.xql /synordbog/xql/search.xql /synordbog/xsl/syn.xsl index.xql produces a complete listing of all entries in the thesaurus and search.xql produces a listing of entries matching a search phrase. search.xql uses a lucene index. I want to cut things down to the bare minimum so first thing I do is run standalone (bin/server.sh for testing and the wrapper for actual production usage). At this point all XQueries run fine when called directly. I want to setup URL rewriting such that /search?q=X will be rewritten to /synordbog/xql/search.xql?query=X and / will be rewritten to /synordbog/xql/index.xql. In order to do this I first of all enable the URL rewriting filter in server.xml by setting these lines: <filter enabled="yes" path="/*" class="org.exist.http.urlrewrite.XQueryURLRewrite"> <param name="config" value="controller-config.xml"/> </filter> Next I copy webapp/WEB-INF/controller-config.xml and webapp/controller.xql to the same dir as server.xml. Doing this I am hoping to have a fully working setup that I can then shave down to the bare minimum. Unfortunately it will no longer execute XQueries nor do XSLT. I have set the log4j level to trace for urlrewriting. These are the messages given in the console: 25 Jul 2011 15:53:38,618 [SocketListener0-4] WARN (ServletHandler.java [handle]:595) - /synordbog/xql/search.xql?query=begynderbog: javax.servlet.ServletException: Failed to initialize request dispatcher to forward request to /synordbog/xql/search.xql at org.exist.http.urlrewrite.Forward.doRewrite(Forward.java:42) at org.exist.http.urlrewrite.XQueryURLRewrite.doRewrite(XQueryURLRewrite.java:432) at org.exist.http.urlrewrite.XQueryURLRewrite.doFilter(XQueryURLRewrite.java:303) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) 25 Jul 2011 15:53:38,621 [SocketListener0-4] WARN (HttpConnection.java [exception]:784) - GET /synordbog/xql/search.xql?query=begynderbog HTTP/1.1 java.lang.NullPointerException at org.mortbay.jetty.servlet.WebApplicationHandler.getErrorPage(WebApplicationHandler.java:381) at org.mortbay.jetty.servlet.ServletHttpResponse.sendError(ServletHttpResponse.java:375) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:622) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) And these are the messages given in webapp/WEB-INF/logs/urlurlrewrite.log: 2011-07-25 15:53:38,201 [SocketListener0-4] DEBUG (XQueryURLRewrite.java [configure]:476) - Initialized database 2011-07-25 15:53:38,206 [SocketListener0-4] DEBUG (RewriteConfig.java [configure]:140) - Loading XQueryURLRewrite configuration from controller-config.xml 2011-07-25 15:53:38,218 [SocketListener0-4] TRACE (XQueryURLRewrite.java [doFilter]:178) - /synordbog/xql/search.xql 2011-07-25 15:53:38,225 [SocketListener0-4] DEBUG (XQueryURLRewrite.java [configure]:476) - Initialized database 2011-07-25 15:53:38,228 [SocketListener0-4] TRACE (XQueryURLRewrite.java [doFilter]:206) - Processing request URI: /synordbog/xql/search.xql 2011-07-25 15:53:38,230 [SocketListener0-4] TRACE (XQueryURLRewrite.java [findSource]:671) - Found controller file: /home/abo/programs/eXist/controller.xql 2011-07-25 15:53:38,405 [SocketListener0-4] DEBUG (XQueryURLRewrite.java [declareVariables]:752) - exist:path = /synordbog/xql/search.xql exist:resource = search.xql exist:controller = 2011-07-25 15:53:38,613 [SocketListener0-4] TRACE (XQueryURLRewrite.java [logResult]:508) - <ignore xmlns="http://exist.sourceforge.net/NS/exist"> <cache-control cache="yes"/> </ignore> 2011-07-25 15:53:38,614 [SocketListener0-4] TRACE (XQueryURLRewrite.java [doFilter]:292) - URLRewrite took 396ms. 2011-07-25 15:53:38,614 [SocketListener0-4] TRACE (XQueryURLRewrite.java [doRewrite]:427) - Forwarding to target: null url: /synordbog/xql/search.xql 2011-07-25 15:53:38,617 [SocketListener0-4] ERROR (XQueryURLRewrite.java [doFilter]:359) - Failed to initialize request dispatcher to forward request to /synordbog/xql/search.xql javax.servlet.ServletException: Failed to initialize request dispatcher to forward request to /synordbog/xql/search.xql at org.exist.http.urlrewrite.Forward.doRewrite(Forward.java:42) at org.exist.http.urlrewrite.XQueryURLRewrite.doRewrite(XQueryURLRewrite.java:432) at org.exist.http.urlrewrite.XQueryURLRewrite.doFilter(XQueryURLRewrite.java:303) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) I am aware that it is probably controller-config.xml and/or controller.xql that is incorrectly set up, but after having read all of the documentation for URL rewriting and search google for help multiple times all I have left now is to ask for help here. What I really don't understand is that it seems to not know what to do with XQueries now, despite controller-config.xml having a forward for them configured as: <forward pattern=".*\.(xql|xqy|xquery)$" servlet="XQueryServlet"/> Can anybody help me understand why this doesn't work? -- Anders Bruun Olsen It-ansvarlig Det Danske Sprog- og Litteraturselskab (Society for Danish Language and Literature) |