Nullpointer na implementação do SessionFactory após atualizar vraptor

Prezados,

Atualizei o vraptor da versão 3.1.2 para a versão 3.3.1

Meu projeto, possuia uma classe que criava o sessionFactory e convencionava que se a app estivesse subindo na porta 80, iria carregar o arquivo de conexão “produção”. em outra porta, iria carregar o arquivo de desenvolvimento.

Após a atualização, estou tomando nullpointer na linha:

Pelo visto o contexto não está mais sendo carregado neste momento.
Como posso fazer pra nao tomar esse nullpointer ou qual outra maneira de convencionar isto (não estou usando Maven).

[code]@ApplicationScoped
public class SessionFactoryCreator implements ComponentFactory {

private final Logger log = Logger.getLogger(getClass());
private final RequestInfo requestInfo;
private SessionFactory factory;

public SessionFactoryCreator(RequestInfo requestInfo) {
	this.requestInfo = requestInfo;
}

@PostConstruct
public void create() {
	log.debug("LocalPort: "+requestInfo.getRequest().getLocalPort());
	String arquivoConexao = "desenvolvimento.cfg.xml";
	if (requestInfo.getRequest().getLocalPort() == 80) {
		log.debug("connecting at Real DataBase");
		arquivoConexao = "producao.cfg.xml";
	}
	factory = new AnnotationConfiguration()
	.configure(arquivoConexao)
	.configure("mapeamento.cfg.xml")
	.buildSessionFactory();

}

public SessionFactory getInstance() {
	return factory;
}

@PreDestroy
public void destroy() {
	factory.close();
}

}[/code]

o RequestInfo só está ativo em uma request. Não dá pra usar em um @ApplicationScoped.

o que deve estar diferente é que nas novas versões do VRaptor os componentes application scoped são inicializados junto com o servidor. Antes era só quando você pedia uma sessionFactory.

você pode usar esse plugin do VRaptor:

ou fazer alguma coisa que dependa só do ServletContext (como um context-param), daí você recebe o context no construtor e faz a sua lógica de selecionar a configuração correta.