You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by Jeremy Boynes <jb...@apache.org> on 2005/09/05 19:20:01 UTC

Network connectors, was: Kernel Limitations

Aaron Mulder wrote:
> 	So I'm still struggling with the issue of how to figure out which 
> network connectors go with which network containers.  This is a general 
> problem that applies to Tomcat & Jetty (web connectors to web container), 
> OpenEJB, ActiveMQ, etc.  Obviously in typical cases you'd only have one 
> container of any given type running, but it seems like we'd like to 
> support multiple.
> 

This raises an interesting question: to what extent should network 
containers "own" connectors?

In their default config, both Jetty and Tomcat assume that all requests 
coming in on a particular socket will be handled by one and only one 
container. As a result, the connector contains a reference to the 
container and request dispatch is simple.

This breaks down though if you want to have one port dispatching to 
multiple containers; use cases for this include trying to run two 
different containers or trying to run two different versions of a 
container concurrently (e.g. to trickle over requests during an upgrade).

At some time I think we should break the "owner" relationship between 
container and connectors, making connectors standalone components that 
can dispatch to multiple containers depending on the request.

One potential implementation would be to have the connectors convert 
requests into work items that are processed by a work manager. The work 
item would contain sufficient information (metadata) to allow it to be 
dispatched to the appropriate container irrespective of the connector 
that actually initiated it.

This might be worth considering for the 1.0 timeframe but might be a 
little ambitious. However, from the console perspective it does raise 
the question of whether the "owner" relationship should be exposed there.

Perhaps instead we should model it using two primary concepts:
* network endpoints and the properties of the connectors that open them
* applications/services and the logical network addresses they can be
   found at; for web applications this would map to virtual host and
   context

--
Jeremy