Jackrabbit

From Resin 3.0

(Difference between revisions)
Jump to: navigation, search
Line 1: Line 1:
 
== Step by Step (JCA) ==
 
== Step by Step (JCA) ==
 +
 +
''[Tested with Resin 3.1.5 and Jackrabbit 1.4]''
  
 
# Download Resin from http://caucho.com/download
 
# Download Resin from http://caucho.com/download
Line 7: Line 9:
 
# Download the jackrabbit .rar file from http://jackrabbit.apache.org/downloads.cgi
 
# Download the jackrabbit .rar file from http://jackrabbit.apache.org/downloads.cgi
 
# Put the jackrabbit .rar in resin/deploy
 
# Put the jackrabbit .rar in resin/deploy
 +
# Make sure resin-support.jar is in resin/ext-webapp-lib (to enable the uri="jackrabbit:" syntax below)
 +
# Create a webapp in resin/webapps/jackrabbit
 +
# Create or copy a repository.xml to WEB-INF/repository.xml (look inside the .rar for a sample)
 +
# 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>
 +
 +
# 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();
 +
    }
 +
  }
 +
}
 +
# Start Resin with java -jar resin/lib/resin.jar
 +
# Browse http://localhost:8080/jackrabbit

Revision as of 19:55, 27 January 2008

Step by Step (JCA)

[Tested with Resin 3.1.5 and Jackrabbit 1.4]

  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>
  1. 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();
   }
 }
}
  1. Start Resin with java -jar resin/lib/resin.jar
  2. Browse http://localhost:8080/jackrabbit
Personal tools