[EMAIL PROTECTED] wrote:
> [...]
> Ok, too much discutions off-topic - I wouldn't mind if you keep the
> org.apache.java.* ( and maybe import some more ), instead of
> org.apache.ssi.util :-)

Okay.

> > What's needed for integration is, first of all, an interface with
> > these methods:
> >
> >   boolean isServletDefined(Servlet context, String servletName);
> >   void addServlet(String className, Hashtable initParams);
> >   void executeServlet(ServletRequest req, ServletResponse res)
> 
> > This interface can be called org.apache.ssi.integration.ServletExecutor
> > and live in the ssi/src/share part of the CVS repository.
> 
> > Implementations of this interface for various containers live in
> > the ssi/integration part of the tree. For Tomcat 3.2, it's implemented
> > by a class in the org.apache.tomcat.facade package.
> 
> If that's all I think we don't need any change in tomcat core, and it
> should work for both 3.2 and 3.3 ( in the form of an interceptor ).
> 
> I'll take a look and try to convert your code to a normal interceptor (
> since this is the best way to extend tomcat3.x ). It would be a great test
> for the model. ( we may need an additional notification/hook for
> "addServlet" - if this is the case we'll need different code for 3.2/3.3 )

Okay, I appreciate if you can take a look at it. I must admit I have not
looked at the interceptor stuff enough to see how it should be done. To
me, "interceptor" sounds like something that intercepts a specific request
and does something with it, not a component that can provide an interface
to non-request related internal functions. 

But maybe I'm missing something. Are you saying the whole SSI processing 
should be done as an interceptor instead of as a servlet? That may work, 
assuming an interceptor can do what the methods in the interface requires.
If so, it can be done as an interceptor for TC 3.x and as a Servlet 2.3 
filter for TC 4.x.

Let me also correct the interface API first so you know what to look at. I
missed the servletContext argument in two of the methods. This is how it
should look like:

  boolean isServletDefined(ServletContext context, String servletName);
  void addServlet(ServletContext context, String className, Hashtable
initParams);  
  void executeServlet(ServletContext context, ServletRequest req,
ServletResponse res);

> > Would the above work even after you "sealed" the facade package? If not,
> > do you have a better suggestion?
> 
> For 3.2 - the package is not sealed, no problem. I think Interceptor
> should be the best way to extend tomcat and integrate other components
> with tomcat - if the provided hooks are not enough it's a great chance to
> add what's needed.
> 
> "Sealed" is an attribute in the Manifest of a .jar file, and it means ( if
> the container uses a "standard" class loader, what we do ) that classes in
> that particular package can't be defined in any other jar ( or classpath
> directory ). It's great to insure that "package" protection is effective.

Ah, got ya :-) 

Hans
-- 
Hans Bergsten           [EMAIL PROTECTED]
Gefion Software         http://www.gefionsoftware.com
Author of JavaServer Pages (O'Reilly), http://TheJSPBook.com

Reply via email to