Recentemente, atualizei meu servidor tomcat da versão 6.x para a versão 7.x mais recente.
Eu tive alguns problemas, esperando obter ajuda.
Eu tenho um aplicativo chamado MyApp
No tomcat6, quando eu ia para http://www.example.com/MyApp/page/ , normalmente obtinha o resultado desejado.
Agora, no tomcat7, visitando o mesmo URL exato (com a barra à direita), estou recebendo o erro: "O recurso não está disponível", pois o tomcat pensa que / MyApp / page / é um nome completo do webapp em vez de ser um nome de solicitação página no webapp MyApp.
Preciso da barra no final do meu URL porque, caso contrário, estou recebendo o erro: "Status HTTP 405 - O método de solicitação 'GET' não é suportado", o que é bom porque realmente não permiti o método GET à solicitação de "página" .
Se alguém souber como informar ao tomcat que a barra após o caminho do webapp existente não deve redirecioná-lo para novas chamadas do webapp para toda a "string" e apenas processar a solicitação como no tomcat6, seria ótimo!
web.xml
qual é mapeado/*
? Caso contrário, o tomcat usa uma lista de arquivos de boas-vindas. Normalmente, apenas o primeiro segmento do caminho é interpretado como uma raiz de contexto. Portanto, não encontrar o seu aplicativo da Web não parece ser o problema.MyApp
aplicativo da web configurado com o nome , o tomcat usará esse contexto de aplicativo da web usando o caminho restantepage/
. Caso contrário, ele procurará oROOT
contexto, usando o caminho completo para uma pesquisa.Respostas:
Pergunta antiga, mas desde que recentemente lutei com a barra final no Tomcat 8, sei que os problemas com a barra continuam a atormentar o mundo dos usuários do Tomcat. :-)
O que você pode estar enfrentando são mudanças na maneira como o Tomcat lida com redirecionamentos ao carregar o contexto raiz. Confira o bug 58660 e leia algumas das discussões do desenvolvedor lá. Pode ser necessário desligar o mapeador de padrão, modificando o
mapperContextRootRedirectEnabled
atributo doContext
elementoconf/context.xml
.fonte
Verifique sua lista de arquivos de boas-vindas. O que se segue é especulação ...
Eu acredito que a essência da questão é quando o Tomcat é apresentado com um / - ele tem algumas opções - repete a lista de arquivos de boas-vindas - não existe nada lá - mostra a listagem de diretórios (se ativado)
Aqui é onde a diversão começa ... Muitas pessoas querem usar * .do para coisas como struts. Então eles querem que index.do seja a página inicial. Ou também comum é index.jsp, em que * .jsp é mapeado para o JspServlet.
Aqui é onde as coisas se divertem. Então, digamos que seus arquivos de boas-vindas sejam index.jsp, index.do.
O que o Tomcat (IIRC) está fazendo é iterando primeiro na lista de arquivos de boas-vindas, procurando recursos com esse nome.
Em seguida, ele fará uma segunda passagem procurando mapeamentos correspondentes. Portanto, se index.jsp for especificado na lista de boas-vindas e * .jsp for mapeado. Então o tomcat tentará encaminhar para index.jsp e você obterá um 404.
Então, acho que você tem um mapeamento de servlet e sobreposição de arquivos de boas-vindas. E o comportamento desse servlet não suporta GET. (Daí o 405)
fonte
Se o seu projeto estiver usando o módulo dinâmico da Web da v2.2, você precisará criar explicitamente pelo menos um arquivo (pode ser um arquivo html vazio) presente no web.xml (por exemplo: index.html) no seu WebContent.
fonte