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" <***@hotmail.com> wrote in message news:BAY118-***@phx.gbl...
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.
Post by Simon AquilinaTomcat 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)
Post by Bill BarkerThis 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).>
Post by Bill BarkerWhen 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)
(http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/Response.html)
Post by Bill Barkerobjects for it, making certain that they get valid InputBuffer >
(http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/InputBuffer.html)
(http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/OutputBuffer.html)
Post by Bill Barkerinstances 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)
Post by Bill Barkerthat 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"
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
Post by Bill Barkerexpert 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 > > > >
Post by Bill Barker--------------------------------------------------------------------->
_________________________________________________________________
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: ***@tomcat.apache.org
To unsubscribe, e-mail: users-***@tomcat.apache.org
For additional commands, e-mail: users-***@tomcat.apache.org