Subclassing WebdavServlet

2004-07-26 Thread Michael Wille
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;
}   
}

RE: Subclassing WebdavServlet

2004-07-26 Thread Shapira, Yoav

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]



Re: Subclassing WebdavServlet

2004-07-26 Thread Mike Wille
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]


Re: Subclassing WebdavServlet

2004-07-26 Thread Michael Wille
Just on a whim I copied everything beneath server/lib to common/lib and 
restarted.  That worked!  So including servlets*.jar was not enough.

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]