Hi again,

(I posted a similar question to this in the dev mailing list because I 
misunderstood the aim of that mailing list). 

During these last few weeks I did a lot of research on how connectors work in 
Tomcat and I can understand most of it now. However I have a small issue. 

I noticed that the Request class in the Coyote package does not inherit from 
the ServletRequest interface. This made me wonder if internally tomcat actually 
maps the type of Request object to another type of Request object of type 
ServletRequest (at first).

I therefore decided to check the code of the CoyoteAdapter inside the Catalina 
package. Here I found that in the service() method first a Request object of 
type HttpServlet is tried to retrieved from the Request object created in the 
Coyote package. If this is not found then it is created.

Therefor I feel that in order to develop a protocol handler completly http 
independent then I will need to also develop my own implementation of Adapter! 
Is this right? If so how would I tell tomcat to use my Adapter version?

Also howcome this type of design. I am sure that there must be a reason behind 
it. However why isn't the Request object created of type HttpServlet or some 
other type within the Coyote package rather then leave it to the CoyoteAdapter 
within the Catalina package.

Thanks and Regards,
Simon J.



> From: [EMAIL PROTECTED]
> To: users@tomcat.apache.org
> Subject: RE: Tomcat Custom Connector
> Date: Tue, 17 Jun 2008 10:41:54 +0200
> 
> 
> Hi Bill,
>  
> Thanks again for your reply. Your comments are very helpfull :) I will 
> definitly have other questions in the future but for now I think I can move 
> forward :)
>  
> Thanks again,
> Simon J.> To: users@tomcat.apache.org> From: [EMAIL PROTECTED]> Subject: Re: 
> Tomcat Custom Connector> Date: Fri, 13 Jun 2008 19:51:35 -0700> > The Adapter 
> is set in the initialize method of the Connector > 
> (http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/connector/Connector.html).
>  > You can pretty much just trust that Tomcat will give you an Adapter 
> instance > before the first request comes through, since that is the 
> contract. Yes, > the current implementation only will give you an instance of 
> CoyoteAdapter, > but programming your ProtocolHandler around this is 
> dangerous, since the > contract only promises an instance of Adapter.> > The 
> Adapter is the bridge between your ProtocolHandler and the Tomcat > Servlet 
> Container. Once you hand off your Request and Response objects to > the 
> Adapter, you can trust that Tomcat will handle all of the Servlet-Spec > 
> parts by itself, including finding the Servlet to send the request to. At > 
> that point, you are only responsible for communicating with the client over > 
> the wire via the InputBuffer and OutputBuffer interfaces. For example, the > 
> various AJP/1.3 Connectors > 
> (http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/ajp/AjpProcessor.html)
>  > convert the message into AJP/1.3 format before sending it over the wire to 
> > Apache httpd.> > Once you have figured out how to initialize the Request 
> and Response objects > to look enough like the wire protocol was HTTP, the 
> rest is really pretty > easy :). For non-HTTP protocols (e.g. trying to make 
> Tomcat look like an > FTP server), this is the hard part.> > "Simon Aquilina" 
> <[EMAIL PROTECTED]> wrote in message > news:[EMAIL PROTECTED]> > Hi,> > I 
> have checked the code in Tomcat again, and although it is very confusing I > 
> feel I did understand something here and there :)> > However I have a 
> question - where is the adapter being set? No Adapter is > being initialized 
> in the 'JIoEndPoint', 'Http11Protocol' and > 'Http11Processor'. I also 
> checked the 'server.xml' file and this is not > being set! From the API 
> documentation I found out the 'CoyoteAdapter'; so is > this the default being 
> used for Tomcat? Is it the CoyoteAdapter which is > responsible to find the 
> servlet for which the request is? or?> > Thanks for any comments,> Simon J.> 
> > To: users@tomcat.apache.org> From: [EMAIL PROTECTED]> Subject: Re: > > 
> Tomcat Custom Connector> Date: Tue, 3 Jun 2008 19:17:03 -0700> > AFAIK, > > 
> there isn't a lot of documentation. But there isn't that much too > it. > > 
> You need to implement a ProtocolHandler > > > 
> (http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/ProtocolHandler.html)
>  > > > This class is responsible for managing the transport (e.g. 
> ServerSocket) > > and > request threads (but the various EndPoint classes in 
> > > > org.apache.tomcat.util.net may simplify this aspect for you). For best 
> > > > results, this class may implement ActionHook as well > > > 
> (http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/ActionHook.html).>
>  > > > When a new request comes in, it is the ProtocolHandler's job to > > 
> initialize a > Request > > > 
> (http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/Request.html) 
> > > > and a Response > > > 
> (http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/Response.html) 
> > > > objects for it, making certain that they get valid InputBuffer > > > 
> (http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/InputBuffer.html)
>  > > > and OutputBuffer > > > 
> (http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/OutputBuffer.html)
>  > > > instances to comunicate with the client. Then within the thread, you > 
> > hand > the Request and Response off to the service method of the Adapter > 
> > > 
> (http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/Adapter.html) 
> > > > that Tomcat will give to the ProtocolHandler. And that is pretty much 
> it > > > :).> > Using the standard server.xml (as opposed to Embedding), you 
> > > would configure > Tomcat to use your Connector with an element like:> > > 
> <Connector protocol="com.myfirm.mypackage.MyProtocolHandler" ... />> Any > > 
> other attributes in the <Connector /> tag will be passed JavaBean style > > > 
> to the ProtocolHandler to handle init options.> > For the simplest > > 
> example, look at > org.apache.coyote.memory.MemoryProtocolHandler (but > > 
> this one is mostly > useful for unit testing).> > "Simon Aquilina" > > 
> <[EMAIL PROTECTED]> wrote in message > > > news:[EMAIL PROTECTED]> > Hi,> I 
> am > > interested in building a custom connector for Tomcat. I have checked > 
> the > > Tomcat source code and found the source code for the ‘http11’ and 
> ‘ajp’ > > > connectors. I thought of trying to understand the code of these 
> two > > > connectors and then try to implement mine based on these. However I 
> am no > > > expert and was wondering if there is any good 
> documentation/tutorial on > > how > a connector can be developed for Tomcat 
> (I would later use this > > connector > with Geronimo).> Just to give you 
> some insight; what I want to > > achieve is to build a custom > connector so 
> that Tomcat can understand > > requests made from a 3rd party > clients who 
> cannot communicate using the > > Http protocol and nor do they > expect data 
> in html format. Additionally > > some of the clients could > communicate on 
> Bluetooth!> I do not know if > > the above is even possible but I am willing 
> to try :)> Thanks for any > > replies,> Regards,Sim085> > > 
> _________________________________________________________________> News, > > 
> entertainment and everything you care about at Live.com. Get it now!> > > 
> http://www.live.com/getstarted.aspx > > > > > > > 
> ---------------------------------------------------------------------> > > To 
> start a new topic, e-mail: users@tomcat.apache.org> To unsubscribe, > > 
> e-mail: [EMAIL PROTECTED]> For additional commands, > > e-mail: [EMAIL 
> PROTECTED]>> 
> _________________________________________________________________> News, 
> entertainment and everything you care about at Live.com. Get it now!> 
> http://www.live.com/getstarted.aspx > > > > > 
> ---------------------------------------------------------------------> To 
> start a new topic, e-mail: users@tomcat.apache.org> To unsubscribe, e-mail: 
> [EMAIL PROTECTED]> For additional commands, e-mail: [EMAIL PROTECTED]> 
> _________________________________________________________________
> Connect to the next generation of MSN Messenger 
> http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=wlmailtagline

_________________________________________________________________
Discover the new Windows Vista
http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE

Reply via email to