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
build
edist
para um diretório fora de/home/user/NetbeansProjects/project
.Edite o seguinte arquivo:
/home/user/NetbeansProjects/project/nbproject/project.properties
e altere as linhas:build.dir=build dist.dir=dist
para
build.dir=/srv/tomcat/project/build dist.dir=/srv/tomcat/project/dist
Observe 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 tomcat7
Nota: 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/project
Isso pressupõe que você
user
é membro do grupousers
etomcat7
é o nome do tomcats user. You can check this in
cat / 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.