Para o benefício dos outros, responderei a minha própria pergunta. Na verdade, o Tomcat (desde a versão 6) fornece uma solução bastante fácil para adicionar prefixos de URI a aplicativos da Web, prefixando a pasta webapp ou o nome de arquivo WAR com esse prefixo (ou os prefixos) separados por um hash. Então, por exemplo:
${catalina.base}/webapps/apps#my_app
${catalina.base}/webapps/apps#my_app2.war
... tornará os dois acessíveis por meio do link e link , respectivamente, sem qualquer configuração adicional em $ {catalina.base} /conf/server.xml.
Isso é explicado de forma enigmática na referência Contêiner de contexto do Tomcat , mas veja esta espécie de mensagem na lista de usuários do Tomcat me ajudou muito.
Infelizmente , há um problema: aparentemente, o Cocoon (até 2.1.11, não testou com 2.2 aplicativos) engasga com os webapps cujos caminhos contêm um hash (consulte link ).
No entanto, há uma solução alternativa para esses aplicativos baseados no Cocoon, conforme mostrado nas seguintes etapas de configuração:
- mova a pasta ou o arquivo WAR que contém a aplicação Web fora do caminho appBase do host, por exemplo: F: \ cocoonApps \ my_CocoonApp
-
adicione um arquivo $ {catalina.base} \ conf \ Catalina [nome do host] [prefixo] # [nome do aplicativo] .xml, por exemplo: $ {catalina.base} \ conf \ Catalina \ localhost \ aplicativos # my_CocoonApp. xml, com o seguinte conteúdo:
<Context docBase="F:/cocoonApps/my_CocoonApp"/>
Utilizando esta solução alternativa, mesmo as webapps Cocoon são felizes quando acessadas em, e. link . Isso pode permitir uma sobrecarga de gerenciamento bastante flexível das aplicações web do Tomcat:
- Webapps não baseados no Cocoon: basta adicioná-los no appBase do Host, prefixando o nome da pasta ou do arquivo WAR com o (s) prefixo (s) desejado (s), separados por um hash (#). A adição de novas aplicações Web não Cocoon não requer mais etapas do que armazená-las com o prefixo URI desejado.
- Webapps baseadas no Cocoon: armazene-os fora do appBase do Host, com apenas o nome da webapp não-redefinida. Além disso, inclua um arquivo de contexto para cada webapp baseado no Cocoon, especificando o aplicativo da Web conforme explicado acima. Esta etapa adicional é necessária apenas para webapps baseados em Cocoon.
Com as configurações de proxy do Apache explicadas na minha pergunta original, isso possibilita a inclusão flexível de aplicativos do Tomcat e fazer com que eles realizem proxy reverso atrás do Apache usando o prefixo / apps / URI.