Well ... this is an internet draft at IETF

Here is the URL
http://search.ietf.org/internet-drafts/draft-elson-opes-icap-01.txt

And yes, thanks for the help. Though I have implemented my own version of
the ICAP server and servlet API, I think I would give a goog shot to
extending Catalina.

I had earlier subscribed to tomcat-dev but did not receive any response.
Thinking that my question was probably out of context, I started
implementing ICAP protocol myself with little help from Tomcat source code.

Thanks once again.

If it is possible, could you send me pointers to Tomcat/Catalina
architecture ????

--Salim

-----Original Message-----
From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, June 13, 2001 2:21 PM
To: [EMAIL PROTECTED]
Cc: Salim Virani
Subject: Re: ICAP servlet classes (was: Tomcat Architecture)




On Wed, 13 Jun 2001, Fabian Loschek wrote:

> Hello,
>
> > I would like Tomcat to serve requests for a new Internet Draft Protocol
> > named ICAP. The intension is to develop HTTP like ICAP servlet base
classes
> > to allow writing ICAP applications.
> >

Is there an RFC number or other URL reference for this?

> > Can someone give me pointers/references of where can I start ??
>
> I'm looking for something similar for writing an ICAP Servlet for my
> master thesis, have you gotten hold of any references or code snipplets?
>
> Thanks in advance,
> Fabian.
>

Not being familiar with ICAP, I'm assuming that it's "similar to but
different than" HTTP, so that you can't just use a normal HttpServlet to
talk to it.  If this isn't correct, just ignore the following ramblings
:-).  The general way to extend Catalina (the servlet container inside
Tomcat 4.0) for this would include the following steps:

* Create new IcapRequest and IcapResponse classes that extend
  org.apache.catalina.connector.RequestBase and
  org.apache.catalina.connector.ResponseBase respectively.

* Create an IcapServlet that extends Servlet (or HttpServlet)
  based on your needs.

* Write a new Connector implementation that implements the ICAP
  communications protocol as necessary.  The basic idea is that
  you would instantiate an IcapRequest and an IcapResponse, populate
  the request appropriately, and then pass it on to the
  associated Engine in the same way that the HTTP connector does.

* At the Engine level, you may need to implement a custom Mapper
  that would be used to select which Host object to use.  You can
  have multiple Mappers per Container (one per protocol), so you
  can still be processing HTTP requests through the same Engine.

* Likewise, at the Host level, you may need a custom Mapper to select
  the appropriate web application (if you want to support this
  concept).

* Finally, at the Context level, you may need a custom Mapper to
  select the appropriate servlet to be executed.

Depending upon how similar ICAP and HTTP are, you might be able to
leverage a lot of the existing machinery (most of the internal APIs, for
example, pass Request and Response rather than HttpRequest and
HttpResponse).  But the exact level of code reuse is really dependent on
the nature of the protocol you're trying to support.

Craig McClanahan




Reply via email to