diff --git jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JcrRemotingServlet.java jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JcrRemotingServlet.java
index 3f8392c..94b4652 100644
--- jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JcrRemotingServlet.java
+++ jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JcrRemotingServlet.java
@@ -237,7 +237,7 @@ public abstract class JcrRemotingServlet extends JCRWebdavServerServlet {
 
     /**
      * the 'protectedhandlers-config' init paramter. this parameter contains the XML
-     * configuration file for protected item remove handlers. 
+     * configuration file for protected item remove handlers.
      */
     public static final String INIT_PARAM_PROTECTED_HANDLERS_CONFIG = "protectedhandlers-config";
     
@@ -272,10 +272,22 @@ public abstract class JcrRemotingServlet extends JCRWebdavServerServlet {
         }
 
         String protectedHandlerConfig = getServletConfig().getInitParameter(INIT_PARAM_PROTECTED_HANDLERS_CONFIG);
+        InputStream in = null;
         try {
-            protectedRemoveManager = new ProtectedRemoveManager(protectedHandlerConfig);
+            protectedRemoveManager = new ProtectedRemoveManager();
+            in = getServletContext().getResourceAsStream(protectedHandlerConfig);
+            if (in != null){
+                protectedRemoveManager.load(in);
+            }
         } catch (IOException e) {
-            log.debug("Unable to create ProtectedRemoveManager from " + protectedHandlerConfig + ". " + e.getMessage());
+            log.debug("Unable to create ProtectedRemoveManager from " + protectedHandlerConfig , e);
+        } finally{
+            if (in != null){
+                try {
+                    in.close();
+                } catch (IOException ignore) {
+                }
+            }
         }
 
         // Determine the configured location for temporary files used when
diff --git jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/ProtectedRemoveManager.java jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/ProtectedRemoveManager.java
index 692a9b7..582a802 100644
--- jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/ProtectedRemoveManager.java
+++ jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/ProtectedRemoveManager.java
@@ -36,6 +36,10 @@ class ProtectedRemoveManager {
 
     private List<ProtectedItemRemoveHandler> handlers = new ArrayList<ProtectedItemRemoveHandler>();
 
+    ProtectedRemoveManager(){
+
+    }
+
     ProtectedRemoveManager(String config) throws IOException {
 
     	 if (config == null) {
@@ -46,8 +50,7 @@ class ProtectedRemoveManager {
         	 if (file.exists()) {         
  				try {
                     InputStream fis = new FileInputStream(file);
- 					ProtectedRemoveConfig prConfig = new ProtectedRemoveConfig(this);
- 					prConfig.parse(fis);
+                    load(fis);
  				} catch (FileNotFoundException e) {
  					throw new IOException(e.getMessage(), e);
  				}            
@@ -62,6 +65,11 @@ class ProtectedRemoveManager {
          }    	 
     }
 
+    void load(InputStream fis) throws IOException {
+        ProtectedRemoveConfig prConfig = new ProtectedRemoveConfig(this);
+        prConfig.parse(fis);
+    }
+
     boolean remove(Session session, String itemPath) throws RepositoryException {
         for (ProtectedItemRemoveHandler handler : handlers) {
             if (handler.remove(session, itemPath)) {
