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]

Reply via email to