Jackrabbit

From Resin 3.0

Jump to: navigation, search

Step by Step (JCA)

[Tested with Resin 3.1.5 and Jackrabbit 1.4]

The JCA deployment style of Jackrabbit integrates Jackrabbit sessions with any Resin transactions, including transactions started by EJBs or UserTransaction. The webapp style of Jackrabbit deployment will work with Resin, but will not automatically be transaction-enabled.

  1. Download Resin from http://caucho.com/download
  2. Unzip Resin into /usr/local/share/resin
  3. Download the JCR API from http://www.day.com/maven/jsr170/jars/jcr-1.0.jar
  4. Put the JCR .jar in resin/ext-lib (it will be shared for all web-apps)
  5. Download the jackrabbit .rar file from http://jackrabbit.apache.org/downloads.cgi
  6. Put the jackrabbit .rar in resin/deploy
  7. Make sure resin-support.jar is in resin/ext-webapp-lib (to enable the uri="jackrabbit:" syntax below)
  8. Create a webapp in resin/webapps/jackrabbit
  9. Create or copy a repository.xml to WEB-INF/repository.xml (look inside the .rar for a sample)
  10. Create a resin/webapps/jackrabbit/WEB-INF/resin-web.xml to configure the Jackrabbit session factory:
      <web-app xmlns="http://caucho.com/ns/resin">
        
        <resource-adapter uri="jackrabbit:"/>
     
        <connection-factory uri="jackrabbit:" name="jcr/test">
          <init>
            <home-dir>${webApp.root}/WEB-INF/repository</home-dir>
            <config-file>${webApp.root}/WEB-INF/repository.xml</config-file>
          </init>
        </connection-factory>
     
        <servlet-mapping url-pattern="demo" servlet-class="demo.FirstHopServlet"/>
     
      </web-app>
    

    Note: you can specify the driver classnames directly (and skip the uri="...") with

      <resource-adapter class="org.apache.jackrabbit.jca.JCAResourceAdapter"/>
    
      <connection-factory class="org.apache.jackrabbit.jca.JCAManagedConnectionFactory">
    
  11. Create a demo servlet to test JCA in WEB-INF/classes/demo/FirstHopServlet.java (Resin will compile the servlet for you):
      package demo;
     
      import java.io.*;
      import javax.servlet.*;
      import javax.jcr.*;
      import javax.webbeans.*;
     
      public class FirstHopServlet extends GenericServlet {
        @In private Repository _repository;
     
        public void service(ServletRequest req, ServletResponse res)
          throws IOException, ServletException
        {
          PrintWriter out = res.getWriter();
     
          try {
            testJackrabbit(out);
          } catch (Exception e) {
            throw new ServletException(e);
          }
       }
     
       public void testJackrabbit(PrintWriter out)
         throws Exception
       {
         Session session = _repository.login();
     
         try {
            String user = session.getUserID();
            String name = _repository.getDescriptor(Repository.REP_NAME_DESC);
       
            out.println("Logged in " + user + " to " + name + " repository");
        } finally {
          session.logout();
        }
      }
     }
    
  12. Start Resin with java -jar resin/lib/resin.jar
  13. Browse http://localhost:8080/jackrabbit
Personal tools