Executar método ao iniciar a aplicação [Vraptor]

Olá galera,

Estou com uma dúvida de como executar um método ao iniciar a minha aplicação Vraptor.

O método faz uma inserção no banco, de algumas coisas pré configuradas no java. Queria que ao iniciar a aplicação, o vraptor executasse o meu método.

Alguém pode me explicar como faço isso?

Agradeço a ajuda.

tem a anotação @PostContruct que é chamada toda vez que a aplicação inicializa,exemplo:

package easyfair.persitencia;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;

@Component
public class SessionCreator implements ComponentFactory<Session> {

	private final SessionFactory factory;
	private Session session;

	public SessionCreator(SessionFactory factory) {
		this.factory = factory;
	}

	@PostConstruct
	public void open() {
		this.session = factory.openSession();
	}

	@Override
	public Session getInstance() {
		return this.session;
	}

	@PreDestroy
	public void close() {
		this.session.close();
	}

}

Esse exemplo está aqui:http://www.caelum.com.br/apostila-vraptor-hibernate/refatorando-os-daos/#9-4-escopos-definidos-pelo-vraptor , acho que no seu caso é anotar sua classe com @Component e adicionar a anotação @PostContruct no método que vc quer executar quando a aplicação continuar. Eu nunca precisei fazer,mas acho que soluciona o seu problema.

huumm, entendi. Mas quando eu anoto ele com @Component ele tem que ser construido em algum lugar, tem que ser criado em outra classe para poder executar, ou estou errado?

Pensei que seria algo como @Applicationscoped, que iniciaria com a aplicação. Se eu anotar a classe como @Applicationscoped e o método que eu quero executar com @PostConstruct, ele vai iniciar automaticamente com o sistema?

O @ApplicationScoped cria apenas uma instância dessa classe na aplicação,logo se anotar o método com @PostContruct no método que faz essa configuração,você vai ter certeza que ele vai ser chamado apenas uma vez e na inicialização da aplicação. Testa e diz se deu certo.

Não funcionou. Fiz como você disse, iniciei a aplicação e não entrou no método.

Alguma explicação?

Isso funciona quando eu anoto a classe como @ApplicationScoped.

Mas no meu caso, eu estou criando umas instancia de um DAO, que é um @RequestScoped, que gera um erro na execução da aplicação.

Como posso resolver isso??