As of the time of writing, CouchDB-Lucene (v0.6.0) distribution was bundled with Jetty WebServer and runnable from command line. But if you dive a little bit into the code, you’ll find that the run script basically executes com.github.rnewson.couchdb.lucene.Main
, which in turn (1) reads the couchdb-lucene.ini config, (2) creates a Jetty Server, and (3) sets up com.github.rnewson.couchdb.lucene.LuceneServlet
on the server.
At work, we had to use Tomcat due to SOE reason, so I spent a bit of time trying to get CouchDB-Lucene running on Tomcat and get it deployed as a .war file. Here’s how we did it, please note that this is the tedious way of doing it, all because I had to integrate CouchDB-Lucene into an existing web app. There’s an easier way to build a .war file mentioned at the end of this post.
-
Unpack couchdb-lucene-.zip .
-
Create a standard web app directory structure with WEB-INF dir.
-
Configure LuceneServlet in your-app/WEB-INF/web.xml .
<web-app>
...
<servlet>
<servlet-name>lucene</servlet-name>
<servlet-class>com.github.rnewson.couchdb.lucene.LuceneServlet</servlet-class>
</servlet>
...
<servlet-mapping>
<servlet-name>lucene</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
...
</web-app>
-
Copy all jars from couchdb-lucene-/lib/ to your-app/WEB-INF/lib/ . The jetty-*.jar files can be excluded.
-
Copy couchdb-lucene-/conf/couchdb-lucene.ini and couchdb-lucene-/conf/log4j.xml to your-app/WEB-INF/classes/ .
-
Deploy your-app on Tomcat.
-
Configure the CouchDB external process hook script with the host name and port number where Tomcat is listening on.
There was one catch though, LuceneServlet did not have any no-argument constructor for the web.xml configuration, so that’s one of the changes I had to make. The other change was some file reorganisation so that you can use mvn war:war
to generate a target/couchdb-lucene-.war file. Too easy!
I’ll submit a pull request to master later, but in the mean time you can clone my fork to get the patched LuceneServlet and to easily generate the .war file.
Update (27/05/2011): It’s now part of couchdb-lucene master as of 0081272a30dc679effc1cf1298e365b953f568a5, should be included in v0.7.0 .