14
respostas

Spring Framework, Contexto da App

À algum tempo atrás, postei aqui no fórum, uma dúvida refente ao contexto da aplicação quando se usa Spring boot, no qual intendi do que se trata. Embora no ambiente de desenvolvimento, o contexto não é necessário, agora, quando se está no ambiente em produção, o contexto("nome do projeto")/ é necessário!

Criei uma máquina na Amazon e instalei o Tomcat nela, fiz o deploy da applicação usando o arquivo .war que o eclipse exportou pra mim...

Acontece que funciona normal, só que, fica faltando o nome do projeto na URL, então, toda vez que mudo de página, ele me retorna 404, me obrigando, a ir manualmente na URL do navegador e colocando o nome do projeto antes da requisição do Controller!

Já pesquisei muito, sobre alguma configuração no tomcat, mais sem sucesso!

Algum poderia me dar uma luz, por favor!

Desde ja Agradeço.

14 respostas

Fala aí Iran, blz?

Não sei se entendi direito sua dúvida.

Mas sei que você pode deixar explicito o nome do seu contexto no seu arquivo application.properties da seguinte forma:

server.contextPath=/appname

Com isso sua aplicação sempre irá subir com o contexto /appname.

Seria isso que você está precisando ?

Espero te ajudado, e bons estudos.

Olá Iran! Voce esta usando algum framework de template ou esta usando JSP puro? Se esta usando JSP puro voce deve ficar atendo nas chamadas de seus controllers, se esta usando JSP vc esta usando a taglib <c:url para se referir ao contexto de suas actions?

Obrigado pelo retorno Fernando!

Então, coloquei essa configuração que você me passou e fica exatamente como no meu servidor em produção!

me obrigando a colocar o /nomedoprojeto antes da requisição do controller!

Existe alguma configuração, além desta, para que toda requisção via controller, ele mantenha o nome do projeto, antes da requisição na URL ?

Agradeço

Daniel, obrigado pela ajuda, mais estou usando o Thymeleaf com Spring boot!

Certo, e me fala uma coisa, a aplicação se perde no momento qua a controller chama determinada view?

Se eu não estou enganado no Thymeleaf para usar o contexto relativo você usar th:href="@{/controller/action} ao invés de usar <c:url.../>.

Faça um teste e veja se isso resolve.

ja estou fazendo assim, em todas as minhas páginas, Fernando!

Só recapitulando, em desenvolvimento eu não tenho esse problema de contexto!

Somente em produção, que veio a necessidade de colocar o nome da aplicação, antes da requisição do controller.!

Voce fez alguma configuração para utilizar o thymeleaf ou esta utilizando a configuração default? a suas views estao dentro de resources ou dentro de WEB-INF/views ???

Daniel, estou utilizando a configuração default do Spring Boot, as minhas views estão em resources.

Muito estranho, porque deveria ficar transparente isso, nas aplicações que eu crio utilizando spring boot+thymeleaf, eu em desenv eu nao coloco o contexto pq ele usa o contexto / (raiz), e quando faço deploy nos servidores ele automaticamente entende o contexto raiz como o nome do projeto.

Exatamente Daniel, no meu caso, quando coloco em produção, é necessário eu acrescentar manualmente o nome da aplicação na url do navegador!

Tenta usar o ~ antes da URL para referenciar o caminho relativo do servidor, ex:

@{~/anotherContext/path/to/something}

Faz um teste assim, vamos ver se resolve

Infelizmente ainda não resolveu..