Pergunta

Eu tenho um diretório para o qual um processo carrega alguns arquivos .pdf. Este processo está fora do meu controle.

Eu preciso fazer esses arquivos disponíveis através do site usando Tomcat.

Eu tenho um /var/lib/tomcat5/webapps/test1 diretório disponível para a web e eu posso ver os arquivos nele com um navegador.

Então, eu criei um link simbólico apontando para o diretório com os arquivos .pdf: /var/lib/tomcat5/webapps/test1/files/, mas eu não posso ver nada nesse diretório.

Como posso habilitar links simbólicos em apenas o diretório test1? Eu não quero para habilitar links simbólicos em todos os lugares, apenas para que diretório com arquivos .pdf está disponível para a web.

Foi útil?

Solução

Existem alguns problemas com a solução de criar um META-INF/context.xml que contém <Context path="/myapp" allowLinking="true">

O maior problema é que, se existe um conf/context.xml, o allowLinking na <Context> não leva precedência sobre a <Context> em um META-INF/context.xml. E se o no conf/context.xml não define explicitamente allowLinking, isso é o mesmo que dizer allowLinking="false". (Veja minha resposta a uma pergunta contexto precedência)

Para ter certeza de que seu aplicativo permite ligar, você tem a dizer <Context override="true" allowLinking="true" ...>.

Outra questão é que o path="/myapp" é ignorado em um META-INF/context.xml. Para evitar confusão, é melhor deixá-lo fora. A única path vez em um <Context> tem qualquer efeito está no server.xml, eo docs oficiais Tomcat recomendam contra colocando <Context>s em um server.xml.

Finalmente, em vez de um arquivo myapp/META-INF/context.xml, eu recomendo usar um arquivo conf/Catalina/localhost/myapp.xml. Isto significa técnica que você pode manter o conteúdo de seu limpo META-INF, que é a coragem do seu webapp - Eu não gosto de risco mucking nas vísceras de meu webapp. : -)

Outras dicas

Crie um arquivo context.xml em um diretório META-INF em seu aplicativo web que contém:

<?xml version="1.0" encoding="UTF-8"?>

<Context path="/myapp" allowLinking="true">

</Context>

mais aqui: http: //www.isocra. com / 2008/01 / following-simbólico-links-em-tomcat /

Sim, eu sei que é uma questão antiga, mas eu achei uma nova solução, utilizando o suporte com a opção --bind em vez de uma ligação simbólica, e tomcat não precisa de qualquer reconfiguração:

cd / var / lib / tomcat5 / webapps / test1 /

arquivos mkdir

montar --bind / path / to / real / upload / diretório / arquivos de arquivos

Isso funciona diferente no Tomcat 8 +

http://tomcat.apache.org/migration-8.html

<Resources allowLinking="true" />

Existem 4 lugares onde Contexto pode viver.

  1. tomcatdir / conf / server.xml
  2. tomcatdir / conf / context.xml
  3. tomcatdir / conf / Catalina / localhost / appname.xml
  4. tomcatdir / webapps / appname / META-INF / context.xml

Em caso de tomcat 8 atributo allowlinking deve ser não especificado no Contexto mas na tag Recursos. Meu tomcatdir / conf / context.xml olhares como este

<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
 <Resources allowLinking="true" cachingAllowed="true" cacheMaxSize="100000" />
</Context>

Esta solução funciona bem para mim agora. Mas eu quero compartilhar também o erro que eu tinha feito antes de chegar a esta solução.

Eu tinha definido Recursos tanto em tomcatdir / conf / server.xml e em tomcatdir / conf / context.xml. E allowLinking = "true" foi criado apenas em tomcatdir / conf / server.xml.

O que descobri foi que, se você não especificar allowLinking é igual a defini-la como falsa. Então eu removi tag Recursos de server.xml e deixou apenas tomcatdir / conf / context.xml com o atributo "true" nele allowLinking =.

Eu fiz isso nesta outra maneira. Eu editar este outro arquivo de configuração: apache-tomcat-7.0.33 / conf / server.xml Em tag anfitrião acrescentei:

<Context path="/data" docBase="C:\datos" debug="0" reloadable="true" crossContext="false"/>

Assim, você pode acesso via: http: // localhost / dados

Adicionando seguinte linha em conf / context.xml permite softlinks para mim no Apache Tomcat 8.5 +

<< strong> Recursos allowLinking = "true" cachingAllowed = "true" cacheMaxSize = "100000" >

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top