tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From André Warnier ...@ice-sa.com>
Subject Re: Distinct servlets for different domains in one web application
Date Sun, 28 Jun 2015 21:11:30 GMT
Christian wrote:
> Mark,
> 
> On 28.06.2015 19:58, Mark Eggers wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Christian,
>>
>> On 6/28/2015 9:01 AM, Christian wrote:
>>> Hello all,
>>>
>>> is it somehow possible to create a web application with multiple
>>> servlets that are registered to different domains for the same url
>>> paths using tomcat 8? I already crawled through the catalina code
>>> that is responsible for the servlet selection and didn't find
>>> anything that would allow this. But this doesn't mean that it
>>> isn't possible at all. As far as I know, java configuration for
>>> servlet registration doesn't allow passing domain names. But maybe
>>> there is an option within context.xml.
>>>
>>> I want to create a web application that has different domains for
>>> the application itself and its management site. Both parts should
>>> run at the context root, at different domains. The application
>>> needs a shared (spring-)context in which the application's beans
>>> are stored.
>>>
>>> Regards, Christian
>> I'm not quite sure what your after. Sharing Spring beans across
>> contexts and domains sounds like there's an underlying requirement I
>> don't understand.
> 
> ok, I'll try to explain, as aliases won't do what I need.
> It's an application that can be configured via an admin interface. The 
> admin interface is one part of the webapp.
> The main application is accessible via www.example.com. The admin 
> interface needs access to the beans within the main application (e. g. 
> to create tenants that live in context scope), that's why I created just 
> one webapp with two dispatcher servlets.
> One dispatcher servlet is responsible for the admin interface and one 
> for the main application. Until now I make tomcat select them by using a 
> context path for the admin interface.
> But this is redundant, because the admin interface needs to be accessed 
> via admin.example.com/admin instead of just admin.example.com. I would 
> like to map admin.example.com to the admin servlet and www.example.com 
> to the main applications dispatcher servlet.
> At a later stage, www.example.com/admin might be used for other admin 
> tasks that must be accessible by users registered on the main site. But 
> /admin is already shadowed.
> 
> Hopefully I could explain my problem a little better.
> 
Yes, that is much clearer.
Honestly without having really figured out the details of your explanation, I would 
nevertheless point you in 2 directions for that kind of thing :
a) use an Apache httpd front-end proxy, and use the httpd proxying and/or URL rewriting 
capabilities to do what you want
or
b) use the built-in Rewrite Valve of Tomcat 8 
(http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html), or if you are at a lower Tomcat 
version, use the add-on URLRewrite Filter (www.tuckey.org)

A Valve is a Tomcat-specific component, so that solution is generally non-portable to 
another servlet container.  The others (httpd front-end or the URLRewriteFilter (a servlet

filter)) are portable.

Personally, in this case, and considering that you want to do different things depending 
on the hostname used to access Tomcat, I would go the httpd front-end route, with 2 
VirtualHosts at the httpd level, proxying to a single Host at the Tomcat level (but in one

case, after modifying the URL).
That's because I think that trying to do this at the Tomcat level only may give you 
headaches in terms of self-referential URLs returned by your application.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message