You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2005/07/12 16:04:25 UTC

svn commit: r215952 - in /incubator/jackrabbit/trunk/contrib/jcr-server: server/src/java/org/apache/jackrabbit/webdav/jcr/ server/src/java/org/apache/jackrabbit/webdav/jcr/property/ server/src/java/org/apache/jackrabbit/webdav/jcr/search/ webapp/src/ja...

Author: tripod
Date: Tue Jul 12 07:04:18 2005
New Revision: 215952

URL: http://svn.apache.org/viewcvs?rev=215952&view=rev
Log:
- adjusting to jackrabbit/commons changes
- removing static variables from servlets

Modified:
    incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java
    incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/ValuesProperty.java
    incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/search/SearchResultProperty.java
    incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/JCRWebdavServerServlet.java
    incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/RepositoryAccessServlet.java
    incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.java
    incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/SimpleWebdavServlet.java

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java?rev=215952&r1=215951&r2=215952&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java Tue Jul 12 07:04:18 2005
@@ -111,7 +111,7 @@
                 Value val = ValueHelper.deserialize(strVal, type, false);
                 prop.setValue(val);
             } else if (property.getName().equals(JCR_VALUES)) {
-                prop.setValue(new ValuesProperty(property).getValues(getRepositorySession().getValueFactory(), prop.getType()));
+                prop.setValue(new ValuesProperty(property).getValues(prop.getType()));
             } else {
                 throw new DavException(DavServletResponse.SC_CONFLICT);
             }

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/ValuesProperty.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/ValuesProperty.java?rev=215952&r1=215951&r2=215952&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/ValuesProperty.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/property/ValuesProperty.java Tue Jul 12 07:04:18 2005
@@ -24,7 +24,6 @@
 import javax.jcr.Value;
 import javax.jcr.ValueFormatException;
 import javax.jcr.RepositoryException;
-import javax.jcr.ValueFactory;
 import java.util.List;
 import java.util.Iterator;
 import java.util.ArrayList;
@@ -98,7 +97,7 @@
      * @return Array of Value objects
      * @throws RepositoryException
      */
-    public Value[] getValues(ValueFactory fac, int propertyType) throws ValueFormatException, RepositoryException {
+    public Value[] getValues(int propertyType) throws ValueFormatException, RepositoryException {
 	Element[] propValue = (Element[])getValue();
 	Value[] values = new Value[propValue.length];
 	for (int i = 0; i < propValue.length; i++) {

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/search/SearchResultProperty.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/search/SearchResultProperty.java?rev=215952&r1=215951&r2=215952&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/search/SearchResultProperty.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/search/SearchResultProperty.java Tue Jul 12 07:04:18 2005
@@ -26,7 +26,6 @@
 import javax.jcr.Value;
 import javax.jcr.RepositoryException;
 import javax.jcr.PropertyType;
-import javax.jcr.ValueFactory;
 import java.util.*;
 
 /**
@@ -62,7 +61,7 @@
      * @throws IllegalArgumentException if the specified property does have the
      * required form.
      */
-    public SearchResultProperty(ValueFactory fac, DavProperty property) throws RepositoryException {
+    public SearchResultProperty(DavProperty property) throws RepositoryException {
         super(SEARCH_RESULT_PROPERTY, true);
         if (!SEARCH_RESULT_PROPERTY.equals(property.getName())) {
 	    throw new IllegalArgumentException("SearchResultProperty may only be created with a property that has name="+SEARCH_RESULT_PROPERTY.getName());

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/JCRWebdavServerServlet.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/JCRWebdavServerServlet.java?rev=215952&r1=215951&r2=215952&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/JCRWebdavServerServlet.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/JCRWebdavServerServlet.java Tue Jul 12 07:04:18 2005
@@ -27,6 +27,7 @@
 import org.apache.jackrabbit.server.AbstractWebdavServlet;
 
 import javax.servlet.ServletException;
+import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.jcr.Repository;
 import javax.jcr.Credentials;
@@ -70,13 +71,15 @@
 	pathPrefix = getInitParameter(INIT_PARAM_PREFIX);
 	log.debug(INIT_PARAM_PREFIX + " = " + pathPrefix);
 
-	Repository repository = RepositoryAccessServlet.getRepository();
+        final ServletContext ctx = getServletContext();
+
+	Repository repository = RepositoryAccessServlet.getRepository(ctx);
 	if (repository == null) {
 	    throw new ServletException("Repository could not be retrieved. Check config of 'RepositoryAccessServlet'.");
 	}
         CredentialsProvider cp = new CredentialsProvider() {
             public Credentials getCredentials(HttpServletRequest request) throws LoginException, ServletException {
-                return RepositoryAccessServlet.getCredentialsFromHeader(request.getHeader(DavConstants.HEADER_AUTHORIZATION));
+                return RepositoryAccessServlet.getCredentialsFromHeader(ctx, request.getHeader(DavConstants.HEADER_AUTHORIZATION));
             }
         };
 

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/RepositoryAccessServlet.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/RepositoryAccessServlet.java?rev=215952&r1=215951&r2=215952&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/RepositoryAccessServlet.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/RepositoryAccessServlet.java Tue Jul 12 07:04:18 2005
@@ -24,6 +24,7 @@
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.ServletException;
+import javax.servlet.ServletContext;
 import javax.jcr.*;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
@@ -61,16 +62,9 @@
     /** Authorization header name */
     private static final String HEADER_AUTHORIZATION = "Authorization";
 
-    /** the configured repository name */
-    private static String repositoryName;
+    private static final String CTX_ATTR_REPOSITORY = "jcr.repository";
 
-    private static String rmiURI;
-
-    private static InitialContext jndiContext;
-
-    private static Repository repository;
-
-    private static String missingAuthMapping;
+    private String repositoryName;
 
     /**
      * Initializes this servlet
@@ -80,11 +74,33 @@
     public void init() throws ServletException {
 	initLog4J();
 	log.info("RepositoryAccessServlet initializing...");
-	initJNDI();
-	initRMI();
-	initRepository();
-        missingAuthMapping = getServletConfig().getInitParameter(INIT_PARAM_MISSING_AUTH_MAPPING);
-        log.info("  " + INIT_PARAM_MISSING_AUTH_MAPPING + " = " + missingAuthMapping);
+        repositoryName = getServletConfig().getInitParameter(INIT_PARAM_REPOSITORY_NAME);
+        if (repositoryName==null) {
+            repositoryName="default";
+        }
+        Repository repository = null;
+
+        // try to retrieve via rmi
+        if (repository == null) {
+            String rmiURI = getRMIUri();
+            if (rmiURI != null) {
+                repository = getRepositoryByRMI(rmiURI);
+            }
+        }
+        // try to retrieve via jndi
+        if (repository == null) {
+            InitialContext context = getInitialContext();
+            if (context != null) {
+                repository = getRepositoryByJNDI(context);
+            }
+        }
+        // error
+        if (repository == null) {
+            log.error("Unable to retrieve repository");
+            throw new ServletException("Unable to retrieve repository");
+        }
+        getServletContext().setAttribute(CTX_ATTR_REPOSITORY, repository);
+        log.info(repository.getDescriptor(Repository.REP_NAME_DESC) + " v" + repository.getDescriptor(Repository.REP_VERSION_DESC));
 
 	log.info("RepositoryAccessServlet initialized.");
     }
@@ -109,14 +125,7 @@
 	log = Logger.getLogger(RepositoryAccessServlet.class);
     }
 
-    private void initJNDI() throws ServletException {
-	// setup repository name
-	repositoryName = getServletConfig().getInitParameter(INIT_PARAM_REPOSITORY_NAME);
-	if (repositoryName==null) {
-	    repositoryName="default";
-	}
-	log.info("  repository-name = " + repositoryName);
-
+    private InitialContext getInitialContext() throws ServletException {
 	// retrieve JNDI Context environment
 	try {
 	    Properties env = new Properties();
@@ -128,78 +137,59 @@
 		    log.info("  adding property to JNDI environment: " + name + "=" + env.getProperty(name));
 		}
 	    }
-	    jndiContext = new InitialContext(env);
+	    return new InitialContext(env);
 	} catch (NamingException e) {
 	    log.error("Create initial context: " + e.toString());
 	    throw new ServletException(e);
 	}
     }
 
-    private void initRMI() {
+    private String getRMIUri() {
 	// setup repository name
-	rmiURI = getServletConfig().getInitParameter(INIT_PARAM_RMI_URI);
-	if (rmiURI != null) {
-	    log.info("  rmi-uri = " + rmiURI);
-	}
-    }
-
-    /**
-     * tries to retrieve the repository
-     */
-    private void initRepository() throws ServletException {
-	getRepositoryByRMI();
-	if (repository == null) {
-	    getRepositoryByJNDI();
-	}
-	if (repository == null) {
-	    log.error("Unable to retrieve repository");
-	    throw new ServletException("Unable to retrieve repository");
-	}
-	log.info(repository.getDescriptor(Repository.REP_NAME_DESC) + " v" + repository.getDescriptor(Repository.REP_VERSION_DESC));
+	return getServletConfig().getInitParameter(INIT_PARAM_RMI_URI);
     }
 
     /**
      * tries to retrieve the repository using RMI
      */
-    private void getRepositoryByJNDI() {
-	if (jndiContext != null) {
-	    // acquire via JNDI
-	    try {
-		repository = (Repository) jndiContext.lookup(repositoryName);
-	    } catch (NamingException e) {
-		log.error("Error while retrieving repository using JNDI: " + e);
-		return;
-	    }
-	    log.info("Acquired repository via JNDI.");
-	}
+    private Repository getRepositoryByJNDI(InitialContext jndiContext) {
+        // acquire via JNDI
+        try {
+            Repository r = (Repository) jndiContext.lookup(repositoryName);
+            log.info("Acquired repository via JNDI.");
+            return r;
+        } catch (NamingException e) {
+            log.error("Error while retrieving repository using JNDI (name=" + repositoryName +"): " + e);
+            return null;
+        }
     }
 
     /**
      * tries to retrieve the repository using RMI
      */
-    private void getRepositoryByRMI() {
-	if (rmiURI != null) {
-	    // acquire via RMI
-	    ClientFactoryDelegater cfd = null;
-	    try {
-		Class clazz = Class.forName("org.apache.jackrabbit.j2ee.RMIClientFactoryDelegater");
-		cfd = (ClientFactoryDelegater) clazz.newInstance();
-	    } catch (NoClassDefFoundError e) {
-		log.error("Unable to locate RMI ClientRepositoryFactory. jcr-rmi.jar missing? " + e.toString());
-		return;
-	    } catch (Exception e) {
-		log.error("Unable to locate RMI ClientRepositoryFactory. jcr-rmi.jar missing?" + e.toString());
-		return;
-	    }
-
-	    try {
-		repository = cfd.getRepository(rmiURI);
-	    } catch (Exception e) {
-		log.error("Error while retrieving repository using RMI: " + e);
-		return;
-	    }
-	    log.info("Acquired repository via RMI.");
-	}
+    private Repository getRepositoryByRMI(String rmiURI) {
+        // acquire via RMI
+        log.info("  trying to retrieve repository using rmi. uri=" + rmiURI);
+        ClientFactoryDelegater cfd = null;
+        try {
+            Class clazz = Class.forName("org.apache.jackrabbit.j2ee.RMIClientFactoryDelegater");
+            cfd = (ClientFactoryDelegater) clazz.newInstance();
+        } catch (NoClassDefFoundError e) {
+            log.error("Unable to locate RMI ClientRepositoryFactory. jcr-rmi.jar missing? " + e.toString());
+            return null;
+        } catch (Exception e) {
+            log.error("Unable to locate RMI ClientRepositoryFactory. jcr-rmi.jar missing?" + e.toString());
+            return null;
+        }
+
+        try {
+            Repository r = cfd.getRepository(rmiURI);
+            log.info("Acquired repository via RMI.");
+            return r;
+        } catch (Exception e) {
+            log.error("Error while retrieving repository using RMI: " + e);
+            return null;
+        }
     }
 
     /**
@@ -207,8 +197,8 @@
      *
      * @return a jsr170 repository
      */
-    public static Repository getRepository() {
-	return repository;
+    public static Repository getRepository(ServletContext ctx) {
+	return (Repository) ctx.getAttribute(CTX_ATTR_REPOSITORY);
     }
 
     /**
@@ -234,10 +224,10 @@
      * Authorization header.
      * @throws LoginException if no suitable auth header and missing-auth-mapping
      * is not present
-     * @see #getRepository()
-     * @see #login(HttpServletRequest)
+     * @see #getRepository(ServletContext)
      */
-    public static Credentials getCredentialsFromHeader(String authHeader)
+    public static Credentials getCredentialsFromHeader(ServletContext ctx,
+                                                       String authHeader)
 	    throws ServletException, LoginException {
 	try {
 	    if (authHeader != null) {
@@ -253,6 +243,7 @@
 		}
 	    }
             // check special handling
+            String missingAuthMapping = ctx.getInitParameter(INIT_PARAM_MISSING_AUTH_MAPPING);
             if (missingAuthMapping == null) {
                 throw new LoginException();
             } else if (missingAuthMapping.equals("")) {
@@ -280,21 +271,22 @@
      * login ({@link Repository#login(javax.jcr.Credentials)}), thus the default
      * workspace will be selected. In order to provide a specific workspace name,
      * manual {@link Repository#login(Credentials, String) login} is required (see
-     * also {@link #getRepository()}).
+     * also {@link #getRepository(ServletContext)}).
      *
      * @param request
      * @return  Session object obtained upon {@link Repository#login(javax.jcr.Credentials)}.
      * @throws ServletException
      * @throws LoginException if credentials are invalid
-     * @see #getRepository() in order to be able to login to a specific workspace.
-     * @see #getCredentialsFromHeader(String) for a utility method to retrieve
+     * @see #getRepository(ServletContext) in order to be able to login to a specific workspace.
+     * @see #getCredentialsFromHeader(ServletContext, String) for a utility method to retrieve
      * credentials from the Authorization header string.
      */
-    public static Session login(HttpServletRequest request)
+    public static Session login(ServletContext ctx, HttpServletRequest request)
             throws LoginException, ServletException {
         String authHeader = request.getHeader(HEADER_AUTHORIZATION);
 	try {
-	    return repository.login(getCredentialsFromHeader(authHeader));
+            Repository rep = getRepository(ctx);
+	    return rep.login(getCredentialsFromHeader(ctx, authHeader));
         } catch (LoginException e) {
             throw e;
 	} catch (RepositoryException e) {

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.java?rev=215952&r1=215951&r2=215952&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.java Tue Jul 12 07:04:18 2005
@@ -63,16 +63,16 @@
     public final static String INIT_PARAM_LOG4J_CONFIG = "log4j-config";
 
     /** the registered repository */
-    private static Repository repository;
+    private Repository repository;
 
     /** the name of the repository as configured */
-    private static String repositoryName;
+    private String repositoryName;
 
     /** the jndi context, created base on configuration */
-    private static InitialContext jndiContext;
+    private InitialContext jndiContext;
 
     /** the rmi uri, in the form of  '//:${rmi-port}/${repository-name}' */
-    private static String rmiURI;
+    private String rmiURI;
 
     /**
      * Initializes the servlet
@@ -115,7 +115,7 @@
     private void initLog4J() throws ServletException {
 	// setup log4j
 	String log4jConfig = getServletConfig().getInitParameter(INIT_PARAM_LOG4J_CONFIG);
-	InputStream in =getServletContext().getResourceAsStream(log4jConfig);
+	InputStream in = getServletContext().getResourceAsStream(log4jConfig);
 	if (in==null) {
 	    // try normal init
 	    PropertyConfigurator.configure(log4jConfig);

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/SimpleWebdavServlet.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/SimpleWebdavServlet.java?rev=215952&r1=215951&r2=215952&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/SimpleWebdavServlet.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/SimpleWebdavServlet.java Tue Jul 12 07:04:18 2005
@@ -43,6 +43,7 @@
 import javax.jcr.LoginException;
 import javax.jcr.Repository;
 import javax.servlet.ServletException;
+import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 import java.net.URL;
@@ -79,20 +80,22 @@
      */
     public static final String INIT_PARAM_AUTHENTICATE_HEADER = "authenticate-header";
 
+    public static final String CTX_ATTR_RESOURCE_PATH_PREFIX = "jcr.webdav.resourcepath";
+
     /**
-     * the repository prefix retrieved from config
+     * the resource path prefix
      */
-    private static String resourcePathPrefix;
+    private String resourcePathPrefix;
 
     /**
      * the chain catalog for i/o operations
      */
-    private static Catalog chainCatalog;
+    private Catalog chainCatalog;
 
     /**
      * Header value as specified in the {@link #INIT_PARAM_AUTHENTICATE_HEADER} parameter.
      */
-    private static String authenticate_header;
+    private String authenticate_header;
 
     /**
      * Map used to remember any webdav lock created without being reflected
@@ -143,6 +146,7 @@
             log.debug("Path prefix ends with '/' > removing trailing slash.");
             resourcePathPrefix = resourcePathPrefix.substring(0, resourcePathPrefix.length() - 1);
         }
+        getServletContext().setAttribute(CTX_ATTR_RESOURCE_PATH_PREFIX, resourcePathPrefix);
         log.info(INIT_PARAM_RESOURCE_PATH_PREFIX + " = '" + resourcePathPrefix + "'");
 
         try {
@@ -261,11 +265,21 @@
      * @return resourcePathPrefix
      * @see #INIT_PARAM_RESOURCE_PATH_PREFIX
      */
-    public static String getPathPrefix() {
+    public String getPathPrefix() {
         return resourcePathPrefix;
     }
 
     /**
+     * Returns the configured path prefix
+     *
+     * @return resourcePathPrefix
+     * @see #INIT_PARAM_RESOURCE_PATH_PREFIX
+     */
+    public static String getPathPrefix(ServletContext ctx) {
+        return (String) ctx.getAttribute(CTX_ATTR_RESOURCE_PATH_PREFIX);
+    }
+
+    /**
      * Returns the <code>DavLocatorFactory</code>. If no locator factory has
      * been set or created a new instance of {@link org.apache.jackrabbit.webdav.simple.LocatorFactoryImpl} is
      * returned.
@@ -345,13 +359,13 @@
      * returned.
      *
      * @return the session provider
-     * @see RepositoryAccessServlet#getCredentialsFromHeader(String)
+     * @see RepositoryAccessServlet#getCredentialsFromHeader(ServletContext, String)
      */
     public synchronized SessionProvider getSessionProvider() {
         if (sessionProvider == null) {
             CredentialsProvider cp = new CredentialsProvider() {
                 public Credentials getCredentials(HttpServletRequest request) throws LoginException, ServletException {
-                    return RepositoryAccessServlet.getCredentialsFromHeader(request.getHeader(DavConstants.HEADER_AUTHORIZATION));
+                    return RepositoryAccessServlet.getCredentialsFromHeader(getServletContext(), request.getHeader(DavConstants.HEADER_AUTHORIZATION));
                 }
             };
             sessionProvider = new SessionProviderImpl(cp);
@@ -413,11 +427,11 @@
      * is returned.
      *
      * @return repository
-     * @see RepositoryAccessServlet#getRepository()
+     * @see RepositoryAccessServlet#getRepository(ServletContext)
      */
     public Repository getRepository() {
         if (repository == null) {
-            repository = RepositoryAccessServlet.getRepository();
+            repository = RepositoryAccessServlet.getRepository(getServletContext());
             if (repository == null) {
                 throw new IllegalStateException("Repository could not be retrieved. Check config of 'RepositoryAccessServlet'.");
             }