Okay, thanks for that reassurance. Might you have an idea about the cause of the ClassNotFoundException? I've copied all servlets*.jar in server/lib to common/lib. I'm not sure what else, if anything, needs to be done.

Thanks!

-Mike Wille

On Jul 26, 2004, at 2:38 PM, Shapira, Yoav wrote:


Hi, You can subclass it, should be fine.

Yoav Shapira
Millennium Research Informatics


-----Original Message-----
From: Michael Wille [mailto:[EMAIL PROTECTED]
Sent: Monday, July 26, 2004 2:26 PM
To: [EMAIL PROTECTED]
Subject: Subclassing WebdavServlet

Hello All,

I would like to know if its possible to subclass the webdav servlet
that comes with Tomcat 5.x. We have need of webdav in our application,
but need to provide a different JNDI InitialContext then the file
system. The thought was we could just override the getResources()
method in WebdavServlet to return our own context.


What follows is a description of what we are doing:

It seems there is at least one obstacle to doing this.  We would have
to move/copy the jar files: servlets-default.jar, servlets-common.jar,
and servlets-webdav.jar to the common/lib folder.  It seemed when we
attempted to move the files to common/lib, all of the default webapps
couldn't be loaded as well as some of our application servlets.  When
we leave the servlets*.jar files in both server/lib and common/lib, an
exception is thrown when accessing our servlet:

javax.servlet.ServletException: Error instantiating servlet class
com.test.webdav.XDav

And this is caused by:

java.lang.NoClassDefFoundError:
org.apache.catalina.servlets.DefaultServlet

This seems strange considering the app should have access to the
servlets-default.jar now that it is in common.  Or is there an issue
with libs in both server and common?

Any help is hugely appreciated.

Thanks!

-Mike Wille

Our subclassed servlet (with only test code for the InitialContext):

package com.test.webdav;

import javax.servlet.*;
import javax.servlet.http.*;

import javax.naming.directory.InitialDirContext;
import javax.naming.directory.DirContext;

import org.apache.catalina.servlets.*;

public class XDav extends WebdavServlet  {

        // need to dup this here because these have
        // private access in apaches webdavservlet
        protected static final String METHOD_HEAD               =
"HEAD";
        protected static final String METHOD_PROPFIND   = "PROPFIND";
        protected static final String METHOD_PROPPATCH  = "PROPPATCH";
        protected static final String METHOD_MKCOL              =
"MKCOL";
protected static final String METHOD_COPY =
"COPY";
protected static final String METHOD_MOVE =
"MOVE";
protected static final String METHOD_LOCK =
"LOCK";
protected static final String METHOD_UNLOCK =
"UNLOCK";

protected Logger logger;

public void init (ServletConfig config) throws ServletException
{
                // wake your parents
                super.init(config);
        }

        public void destroy() {
                // kill your parents
                super.destroy();
        }

        /**
         * Get resources. This method will try to retrieve the resources
through
         * JNDI first, then in the servlet context if JNDI has failed
(it
could be
         * disabled). It will return null.
         *
         * @return A JNDI DirContext, or null.
         */
        protected DirContext getResources() {

                InitialDirContext result = null;

                // Try the servlet context
                try {
                        //result = new IntitialLibraryContext();
                        result.bind("directory 1", "directory 1");
                        result.bind("directory 2", "directory 2");
                        result.bind("directory 3", "directory 3");
                        result.bind("directory 4", "directory 4");
                        result.bind("directory 3/subdirectory 5",
"subdirectory
5");


} catch(Exception e) { logger.warning(UtilityTank.getErrorDetail(e)); } return result;

        }
}



This e-mail, including any attachments, is a confidential business communication, and may contain information that is confidential, proprietary and/or privileged. This e-mail is intended only for the individual(s) to whom it is addressed, and may not be saved, copied, printed, disclosed or used by anyone else. If you are not the(an) intended recipient, please immediately delete this e-mail from your computer system and notify the sender. Thank you.



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to