Estou trabalhando em uma aplicação onde utilizei VRaptor 3 e tive um problema onde subi a aplicação no tomcat com o nome da app.
Na frente tenho o apache que faz o redirecionamento para localhost:8080/calorias/ com a configuração que fiz, não sei se é problema na configuração ou tem alguma forma mais elegante de resolver… mas tive problemas com os redirects do vraptor quando redirecionado para uma logica:
result.redirectTo(Controller.class).logica();
onde ele sempre colocava no subdominio que apontava para o apache o /calorias, por exemplo, para direcionar para pagina de erro, utilizava:
result.redirectTo(ErroController.class).erro();
e em vez de colocar url.com.br/erro ele redirecionava para url.com.br/calorias/erro, para resolver isso precisei redirecionar diretamente para a url:
result.redirectTo("url.com.br/erro");
Existe uma forma melhor de tratar esse problema? Ou pode ser problema na configuração do apache…
O site pode ser acessa do em http://calorias.garbosis.com.br.
é que o servidor java não sabe que tem um apache na frente, então ele redireciona considerando que vc tá acessando o mesmo contextPath, mesmo…
soluções possíveis: fazer o deploy no contexto raiz (contextPath = / ) do servidor java ou sobrescrever o componente do vraptor que faz esses redirects.
Imaginei que fosse necessário fazer algo deste tipo…
Hoje como falei eu redireciono via String, dessa forma
result.redirectTo("calorias.garbisis.com.br/{url que foi chamada}");
isso funciona, o problema é que não fica tão sugestivo… mas refatorei o projeto com alguns padrões ex:
public class Controller {
private static final String PATH_LOGIN = "login";
private static final String PATH_REDIRECT = "teste";
private static final String URL_APP = "calorias.garbosis.com.br/";
@Path( PATH_LOGIN )
public void login(){
...
}
@Path( PATH_REDIRECT )
public void teste(){
result.redirectTo( URL_APP + PATH_LOGIN );
}
dessa forma consido redirecionar de forma mais pratica e padronizada…
Sobre deixar no contexto /, terei mais algumas apps rodando no mesmo tomcat, eu tinha ate pensado nisso, mas acabei procurando outra solução…
Sobre sobreescrever o componente seria uma boa, teria algum exemplo de como fazer…
Aproveitando, cara o VRaptor ta muito bacana pra desenvolver… muito bom mesmo…