O Tomcat serve diretamente arquivos estáticos (css, js) compartilhados por vários aplicativos

3

Estou usando a estrutura ExtJS, que tem uma grande quantidade de arquivos js e css usados para todos os aplicativos. Eu pretendo compartilhá-los entre um número de aplicações web (diferentes arquivos war ).

Por esse motivo, gostaria de disponibilizar o ExtJS js e css diretamente do servidor da web, no meu caso Tomcat6 , que pode ser usado para servir arquivos estáticos, como em seu link útil .

Por isso, coloco meus arquivos em /var/lib/tomcat6/webapps/ROOT/extjs/ . Os arquivos estáticos que estão diretamente sob esse diretório são exibidos corretamente, por exemplo, /extjs/ext.js atende corretamente o arquivo em /var/lib/tomcat6/webapps/ROOT/extjs/ext.js .

No entanto, arquivos em diretórios de nível inferior, por exemplo /extjs/welcome/css/welcome.css , que devem exibir o arquivo em /var/lib/tomcat6/webapps/ROOT/extjs/welcome/css/welcome.css , retornam um 404 .

TL / DR

O Tomcat exibe arquivos estáticos apenas no diretório de nível superior. Um 404 é retornado para arquivos mais profundos na hierarquia.

Conteúdo do arquivo de configuração :

FIXED - SOLUTION :

A questão era que eu estava colocando a cláusula:

<Context docBase="/path/to/extjs-static-files" path="/extjs"/>

na cláusula server.xml <Engine> do Tomcat. Depois de colocá-lo na tag <Host> , ele começou a funcionar. Ler este documento foi muito útil para identificar o que eu estava fazendo de errado.

    
por Joseph Victor Zammit 26.06.2012 / 17:43

1 resposta

1

Estou executando um serviço da Web RESTful que veicula algum conteúdo estático armazenado em um diretório fora do Tomcat. O diretório é especificado por um parâmetro de servlet no web.xml Você poderia fazer algo semelhante e apenas especificar um caminho absoluto para os arquivos que você precisa - colocá-los no Tomcat em algum lugar ou na estrada que você gosta. Eu posso postar um código de exemplo, se quiser. É claro que todos os outros arquivos que fazem referência ao javascript e CSS precisariam ser alterados porque esses arquivos estarão em um diretório de URL diferente dos aplicativos da web que os utilizam. Por exemplo, src="restAppContextName / serve / youJavaScript.js", em que serve é um @Path para o serviço da web REST e o que segue é um @PathParam. Para o navegador, / serve será tratado como se fosse um diretório, então uma referência relativa de um arquivo js para outro deve funcionar.

    
por 27.06.2012 / 21:31