Index: pom.xml
===================================================================
--- pom.xml (revision 668156)
+++ pom.xml (working copy)
@@ -79,6 +79,16 @@
jackrabbit-jcr-rmi
+ org.apache.jackrabbit
+ jackrabbit-spi-rmi
+ 1.5-SNAPSHOT
+
+
+ org.apache.jackrabbit
+ jackrabbit-spi2jcr
+ 1.5-SNAPSHOT
+
+
org.slf4j
slf4j-log4j12
Index: src/main/java/org/apache/jackrabbit/j2ee/SPIServerStartupServlet.java
===================================================================
--- src/main/java/org/apache/jackrabbit/j2ee/SPIServerStartupServlet.java (revision 0)
+++ src/main/java/org/apache/jackrabbit/j2ee/SPIServerStartupServlet.java (revision 0)
@@ -0,0 +1,90 @@
+package org.apache.jackrabbit.j2ee;
+
+import java.rmi.AlreadyBoundException;
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+import java.util.Hashtable;
+
+import javax.jcr.Repository;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.RepositoryService;
+import org.apache.jackrabbit.spi.rmi.server.ServerRepositoryService;
+import org.apache.jackrabbit.spi2jcr.BatchReadConfig;
+import org.apache.jackrabbit.spi2jcr.RepositoryServiceImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SPIServerStartupServlet extends HttpServlet {
+ /**
+ * the default logger
+ */
+ private static final Logger log = LoggerFactory.getLogger(SPIServerStartupServlet.class);
+
+ private ServerRepositoryService remoteService;
+
+ public void init() throws ServletException {
+ super.init();
+
+ ServletContext servletContext = getServletContext();
+ RepositoryStartupServlet repoServlet = RepositoryStartupServlet.getInstance(servletContext);
+
+ BootstrapConfig bootConfig = repoServlet.getConfig();
+
+ Hashtable env = new Hashtable();
+ env.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory");
+ env.put(Context.PROVIDER_URL, "http://www.apache.org/jackrabbit");
+ try {
+ InitialContext ctx = new InitialContext(env);
+ Repository repository = (Repository) ctx.lookup("jackrabbit.repository");
+ log.info("Found repository: " + repository);
+
+ RepositoryService repoService = new RepositoryServiceImpl(repository, new BatchReadConfig(){
+ // increase the default depth for efficiency
+ public int getDepth(Name ntName) {
+ int defaultDepth = super.getDepth(ntName);
+ if(defaultDepth == DEPTH_DEFAULT){
+ return 1;
+ }
+ return defaultDepth;
+ }
+ });
+ log.info("Wrapped with SPI2JCR");
+
+ // create spi server
+ remoteService = new ServerRepositoryService(repoService);
+ log.info("Wrapped with SPI-RMI");
+
+ // register server
+ Registry reg = LocateRegistry.getRegistry(bootConfig.getRmiConfig().getRmiHost(), Registry.REGISTRY_PORT);
+ reg.bind("jackrabbit.spi-server", remoteService);
+ log.info("Bound to RMI Registry");
+
+ String[] list = reg.list();
+ String listStr = "";
+ for (int i=0; i