O motivo exato pelo qual o Tomcat não consegue ler os diretórios, como na abordagem 1 e 3, ainda é desconhecido para mim. No entanto, parece impossível para o Tomcat usar qualquer diretório localizado em /home/user/... como um webapp, mesmo que isso signifique usar links simbólicos para vincular a esse local e definir permissões corretas nos diretórios!
Embora provavelmente seja algum tipo de proteção embutida. Ainda é estranho porque esse comportamento não está listado na documentação do Apache Tomcat (corrija-me se estiver errado).
A solução é, portanto, usar qualquer outro diretório além de /home/user/... , por exemplo. /usr/share/tomcat7/projects deve funcionar. Mas, novamente, é melhor definir minha saída de distribuição do Netbeans diretamente para o diretório webapps, conforme mencionado por outra pessoa ( @ user208992 ).
Portanto, para corrigir esse problema, aqui está uma lista de instruções necessárias para que o Tomcat trabalhe com o Netbeans usando um diretório externo build / dist:
-
Configure o Netbeans para distribuir os diretórios
buildedistpara um diretório fora de/home/user/NetbeansProjects/project.Edite o seguinte arquivo:
/home/user/NetbeansProjects/project/nbproject/project.propertiese altere as linhas:build.dir=build dist.dir=distpara
build.dir=/srv/tomcat/project/build dist.dir=/srv/tomcat/project/distObserve que você pode usar qualquer diretório (diferente de
/home/...) em vez de/srv/tomcat/project -
Adicione um contexto com um docBase adequado ao host Tomcat.
Uma maneira de fazer isso é editar o arquivo de configuração
server.xml, provavelmente localizado em/etc/tomcat7/server.xml. Adicione um contexto no arquivoserver.xml:<Context docBase="/srv/tomcat/project/build/web/" path="/project"></Context>Certifique-se de colocar isso dentro da
<Host>-tag. Além disso, você pode adicionar atributos a essa tag quando necessário (recarregável, anti-JARLocking, etc.). Ou você também pode colocar no arquivo xml emCATALINA_HOME/engine(e.g. Catalina)/hostname(e.g. localhost)/project.xml, uma dessas abordagens vai ficar bem.Eu escolho apontar o docBase para
.../build/web/, mas você também pode definir isso para.../dist/se quiser que o Tomcat use o arquivo WAR. -
Certifique-se de que o tomcat esteja no mesmo grupo
users-group que você é. Para fazer isso, por exemplo:usermod --append --groups users tomcat7Nota: Qualquer grupo comum que você tenha com o tomcat será suficiente. Dessa forma, o Netbeans e o Tomcat podem acessar o mesmo diretório.
-
Corrigir propriedade e permissões do diretório do projeto externo.
sudo chown -R tomcat7:users /srv/tomcat/project sudo chmod -R 777 /srv/tomcat/projectIsso pressupõe que você
useré membro do grupousersetomcat7é o nome do tomcats user. You can check this incat / etc / passwd '.Observação: mais tarde, você pode reduzir as
777-permissions, mas, para garantir que o Tomcat tenha permissões, você pode começar com as permissões mais acessíveis. -
Limpe / crie no Netbeans e reinicie o serviço do tomcat. Isso aplicará as alterações das etapas anteriores.
Espero que isto seja útil para alguém que lide com uma situação semelhante; Tomcat e permissões podem ser muito difíceis de depurar imho.