Deploy de projeto VRaptor no Heroku

Fala pessoal,

Eu criei uma aplicação utilizando VRaptor e fiz os testes na minha máquina local. Para acessar a aplicação eu utilizava meu endereço local padrão (localhost:porta/appname).

Até então beleza. O problema começou quando eu fiz o deploy da aplicação no Heroku. No log não ocorreu nenhum problema e as tabelas no banco de dados foram criadas corretamente. Entretanto, ao tentar acessar a aplicação com a url que o passa (http://appname.herokuapp.com) da Status HTTP 404 e se eu adicionar o nome da aplicação (/appname) na url acontece o mesmo erro. Eu criei um index.jsp e adicionei no web.xml e dessa forma foi. Enfim, quando acesso no Heroku é como se ele não encontrasse a aplicação que foi mapeada na classe controller.

Alguém tem alguma ideia do que possa ser? :frowning:

Obrigado!

Voce precisa configurar uma classe no seu projeto que é responsável por dar start no servidor. (Heroku usa embedded server)

Nessa classe voce configura qual vai ser contexto da sua aplicacao.

Exemplo:

public class TomcatLauncher {
	private static final String WEBAPP_DIR_LOCATION = "src/main/webapp/";
	
	public static void main(String args[]) throws ServletException, LifecycleException {
		Tomcat tomcat = new Tomcat();
		
		tomcat.setPort(Integer.valueOf(getWebPort()));
		tomcat.addWebapp("/minhaAplicacao", new File(WEBAPP_DIR_LOCATION).getAbsolutePath());
		
		tomcat.start();
		tomcat.getServer().await();
	}

	/**
	 * Retorna a porta que o servidor sera startado
	 * @return porta que o servidor sera startado
	 */
	private static String getWebPort() {
		String webPort = System.getenv("PORT");
		if(webPort == null || webPort.equals("")) {
			webPort = "8080";
		}
		return webPort;
	}
}

Seguindo o exemplo, para acessar a aplicacao seria:
http://appname.herokuapp.com/minhaAplicacao

Voce também pode acompanhar os logs com o comando:
heroku logs --tail

Valeu Nykolas, muito obrigado!