Como Iniciar o toplink no início do carregamento da JVM

Como inicializo o toplink durante o carregamento da JVM.

[TopLink Info]: 2008.07.17 10:21:30.328--ServerSession(31161848)--TopLink, version: Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))

Como realizo uma tarefa durante o carregamento da JVM, logo no início da execução do aplicativo Java.

Colocando o código no início do main() ?

Mauricio,

Como eu inicializo o toplink JPA? É através do método Persistence.createEntityManagerFactory?

Depende, não é a sua aplicação que cria o EntityManagerFactory?

Se ela criar, basta você mesmo criar o EntityManagerfactory com essa chamada e pronto.

Maurício,

Quando eu faço uma busca pela primeira vez é quando ele se inicializa. Na segunda vez em diante é mais rápido.

[TopLink Info]: 2008.07.17 04:15:37.546--ServerSession(19610963)--TopLink, version: Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))

Tem como eu forçar a inicialização dele?

Aqui está a minha classe.

public final class PersistenceUtil {
	
	
	private static final String UNIT_NAME = "jpa-teste";

	private static EntityManagerFactory emf = Persistence.createEntityManagerFactory(UNIT_NAME);
	public static final ThreadLocal<EntityManager> managerThread = new ThreadLocal<EntityManager>();
	public static final ThreadLocal<EntityTransaction> transactionThread = new ThreadLocal<EntityTransaction>();
	

	public static EntityManager getEntityManager() {
		if (managerThread.get() == null) {
			EntityManager em = emf.createEntityManager();
			managerThread.set(em);
		}
		return managerThread.get();

	}

	public static EntityTransaction getEntityTransaction() {
		if (transactionThread.get() == null) {
			EntityTransaction transaction = getEntityManager().getTransaction();
			transactionThread.set(transaction);
		}
		return transactionThread.get();
	}
	
	public static void startJPAOperation() {
		getEntityTransaction().begin();
	}
	
	public static void stopJPAOperation( boolean commitChanges) {
		if (commitChanges) {
			getEntityTransaction().commit();
		} else {
			getEntityTransaction().rollback();
		}
		getEntityManager().close();
		
		transactionThread.remove();
		managerThread.remove();
	}


}

No Início do seu main:

vou tentar aqui.

Eu chamei PersistenceUtil.getEntityManager() e funcionou.

Valeu.