[RESOLVIDO] c3p0 + hibernate + vraptor + help

13 respostas
C

Bom dia galera!!

Antes de mais nada, tudo começou com o famoso broken pipe… mysql maldito que mata minha conexao depois de 8 horas…

Bom obviamente auto_reconnect nao resolveu minha vida e aumentar o tempo “no way”…

Procurando pela net me deparei com posts mto bons sobre isso… inclusive aqui e no blog da caelum… obvio…

E adotei o c3p0…

Se entendi tudo que li é só configurá-lo como segue:

<hibernate-configuration>

	<session-factory>

		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost/cftv_manager_dev?autoReconnect=true</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.username">---r</property>
		<property name="hibernate.connection.password">---</property>

		<property name="hibernate.show_sql">false</property>
		<property name="hibernate.format_sql">true</property>
		<property name="hibernate.hbm2ddl.auto">update</property>

		<property name="hibernate.connection.provider_class">
		  org.hibernate.connection.C3P0ConnectionProvider
		</property>
		<property name="hibernate.c3p0.acquire_increment">1</property> 
		<property name="hibernate.c3p0.idle_test_period">100</property> <!-- seconds --> 
		<property name="hibernate.c3p0.max_size">100</property> 
		<property name="hibernate.c3p0.max_statements">0</property> 
		<property name="hibernate.c3p0.min_size">10</property> 
		<property name="hibernate.c3p0.timeout">100</property>
		<property name="hibernate.c3p0.testConnectionsOnCheckout">true</property>

	</session-factory>

</hibernate-configuration>

Claro que tive problemas com o jar hibernate-c3p0 que nao aparece em qualquer post… mas tudo isso resolvido…

E eis que surge a exception…

10:18:21,016 ERROR [JDBCExceptionReporter] com.mchange.v2.c3p0.PoolBackedDataSource@56d6cf [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@5e5c15 [ acquireIncrement -> 1, acquireRetryAttempts -> 0, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 5e5c15, idleConnectionTestPeriod -> 100, initialPoolSize -> 10, maxIdleTime -> 100, maxPoolSize -> 100, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 10, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@93a985 [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 93a985, jdbcUrl -> jdbc:mysql://localhost/cftv_manager_dev?autoReconnect=true, properties -> {user=******, password=******} ], preferredTestQuery -> null, propertyCycle -> 300, testConnectionOnCheckin -> false, testConnectionOnCheckout -> true, usesTraditionalReflectiveProxies -> false ], factoryClassLocation -> null, identityToken -> 56d6cf, numHelperThreads -> 3 ] has been closed() -- you can no longer use it.
24/01/2011 10:18:21 org.apache.catalina.core.ApplicationContext log
GRAVE: Unhandled exception occurred whilst decorating page
org.hibernate.exception.GenericJDBCException: Cannot open connection
	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
	at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
	at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
	at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
	at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463)
	at br.com.caelum.vraptor.util.hibernate.HibernateTransactionInterceptor.intercept(HibernateTransactionInterceptor.java:44)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLException: com.mchange.v2.c3p0.PoolBackedDataSource@56d6cf [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@5e5c15 [ acquireIncrement -> 1, acquireRetryAttempts -> 0, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 5e5c15, idleConnectionTestPeriod -> 100, initialPoolSize -> 10, maxIdleTime -> 100, maxPoolSize -> 100, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 10, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@93a985 [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 93a985, jdbcUrl -> jdbc:mysql://localhost/cftv_manager_dev?autoReconnect=true, properties -> {user=******, password=******} ], preferredTestQuery -> null, propertyCycle -> 300, testConnectionOnCheckin -> false, testConnectionOnCheckout -> true, usesTraditionalReflectiveProxies -> false ], factoryClassLocation -> null, identityToken -> 56d6cf, numHelperThreads -> 3 ] has been closed() -- you can no longer use it.
	at com.mchange.v2.c3p0.PoolBackedDataSource.assertCpds(PoolBackedDataSource.java:234)
	at com.mchange.v2.c3p0.PoolBackedDataSource.getPoolManager(PoolBackedDataSource.java:246)
	at com.mchange.v2.c3p0.PoolBackedDataSource.getConnection(PoolBackedDataSource.java:94)
	at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:78)
	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
	... 42 more
24/01/2011 10:18:21 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet default threw exception
org.hibernate.exception.GenericJDBCException: Cannot open connection
	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
	at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
	at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
	at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
	at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463)
	at br.com.caelum.vraptor.util.hibernate.HibernateTransactionInterceptor.intercept(HibernateTransactionInterceptor.java:44)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLException: com.mchange.v2.c3p0.PoolBackedDataSource@56d6cf [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@5e5c15 [ acquireIncrement -> 1, acquireRetryAttempts -> 0, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 5e5c15, idleConnectionTestPeriod -> 100, initialPoolSize -> 10, maxIdleTime -> 100, maxPoolSize -> 100, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 10, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@93a985 [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 93a985, jdbcUrl -> jdbc:mysql://localhost/cftv_manager_dev?autoReconnect=true, properties -> {user=******, password=******} ], preferredTestQuery -> null, propertyCycle -> 300, testConnectionOnCheckin -> false, testConnectionOnCheckout -> true, usesTraditionalReflectiveProxies -> false ], factoryClassLocation -> null, identityToken -> 56d6cf, numHelperThreads -> 3 ] has been closed() -- you can no longer use it.
	at com.mchange.v2.c3p0.PoolBackedDataSource.assertCpds(PoolBackedDataSource.java:234)
	at com.mchange.v2.c3p0.PoolBackedDataSource.getPoolManager(PoolBackedDataSource.java:246)
	at com.mchange.v2.c3p0.PoolBackedDataSource.getConnection(PoolBackedDataSource.java:94)
	at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:78)
	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
	... 42 more

Isso acontece logo ao subir o tomcat no eclipse…

Ao rodar testes unitarios nao da problema algum…

E se eu rodar uma classe main assim:

public static void main(String args...) {
		factoryCreator.create();
		SessionFactory sessionFactory = factoryCreator.getInstance();
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();
		Query query = session
				.createQuery("update HistoricoLogin set logado=false,logoutFalha=true , dataLogout= :dataLogout where logado=true");
		query.setParameter("dataLogout", Calendar.getInstance());
		query.executeUpdate();
		transaction.commit();
		session.disconnect();
		factoryCreator.destroy();
	}

O código roda de boa…

Mas a WebApp nao vai nem por decreto… não sei se é o vraptor ou o tomcat…

Estou utilizando no vraptor um provider custom não sei se isso pode afetar…

<context-param>
		<param-name>br.com.caelum.vraptor.provider</param-name>
		<param-value>br.com.evertical.cftv.manager.util.CustomProvider</param-value>
	</context-param>

Espero ter conseguido especificar bem o suficiente…

Eu realmente gostaria de conseguir utilizar o c3p0… help!!

13 Respostas

romarcio

Acho que essa exceção é recorrente do uso do autoReconnect. Na documentação do MySql diz para não usar-lo (http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html).

Agora de uma olhada aqui:
idleTestPeriod: Must be set in hibernate.cfg.xml (or hibernate.properties), Hibernate default: 0
If this is a number greater than 0, c3p0 will test all idle, pooled but unchecked-out connections, every this number of seconds.

testConnectionOnCheckout: Must be set in c3p0.properties, C3P0 default: false
Don’t use it, this feature is very expensive. If set to true, an operation will be performed at every connection checkout to verify that the connection is valid. A better choice is to verify connections periodically using c3p0.idleConnectionTestPeriod.

É aconselhavel usar a propriedade idleTestPeriod.
Caso queira usar a propriedade testConnectionOnCheckout, vc deve criar uma arquivo chamado c3p0.properties para seta-la, ou então, no seu hibernate.properties colocar a propriedade &lt;property name="hibernate.c3p0.validate"&gt; true &lt;/ property&gt;

fonte: http://community.jboss.org/wiki/HowToconfiguretheC3P0connectionpool

Mas não deve usar o autoReconnect.

C

Valeu Romarcio!

Tinha perdido as esperanças de respostas nessa emenda de feriado… rs

Entao Corrigi o auto-reconnect… Tirei o testConnectionOnCheckout

Mas mesmo assim… mesma Stack… =(

Lucas_Cavalcanti

como vc está criando a sessionFactory? qual é a classe?

C

Estou utilizando uma SessionFactoryCreator propria

@Component
@ApplicationScoped
public class SessionFactoryCreator implements ComponentFactory<SessionFactory> {

	private SessionFactory factory;

	@PostConstruct
	public void create() {
		String env = System.getProperty("br.com.evertical.cftv.manager.env",
				"dev");
		factory = new AnnotationConfiguration().configure(
				"hibernate-" + env + ".cfg.xml").buildSessionFactory();
	}

	public SessionFactory getInstance() {
		return factory;
	}

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

}

E um CustomProvider que registra

public class CustomProvider extends SpringProvider {
	@Override
	protected void registerCustomComponents(ComponentRegistry registry) {
		registry.register(SessionCreator.class, SessionCreator.class);
		registry.register(SessionFactoryCreator.class,
				SessionFactoryCreator.class);
		registry.register(HibernateTransactionInterceptor.class,
				HibernateTransactionInterceptor.class);
	}
}

Para acesso utilizo um GenericDAO e minhas entidades tem UsuarioDAO recebendo no construtor Session e instanciando GenericDAO tambem no construtor e delegando os metodos…

@Component
public class UsuarioDAO implements UsuarioRepository {

	private GenericDAO<Usuario, Long> genericDAO;
	private final Session session;

	public UsuarioDAO(Session session) {
		this.session = session;
		genericDAO = new GenericDAO<Usuario, Long>(Usuario.class, session);

	}

	public Usuario find(Long id) {
		return genericDAO.find(id);
	}

	public List<Usuario> list() {
		return genericDAO.list();
	}

	public void remove(Usuario t) {
		genericDAO.remove(t);
	}

	public Usuario save(Usuario t) {
		return genericDAO.save(t);
	}

	public Usuario update(Usuario t) {
		return genericDAO.update(t);
	}

	@Override
	public List<Usuario> findByExample(Usuario t) {
		return genericDAO.findByExample(t);
	}
}
Lucas_Cavalcanti

remova a linha:

registry.register(SessionFactoryCreator.class,  
                SessionFactoryCreator.class);

do seu CustomProvider. Tem duas sessionFactories sendo criadas, e esse é o problema.

C

Valeu a resposta Lucas,

Mas então continuou com o mesmo erro… tirei o registro e nada…

Aquele registro da SessionFacCreator é de uma customizada…

No web.xml eu nao to carregando o

<context-param>
		<param-name>br.com.caelum.vraptor.provider</param-name>
		<param-value>br.com.evertical.cftv.manager.util.CustomProvider</param-value>
	</context-param>

//Codigo comentado... nao carrego o util.hibernate
<!--	<context-param>-->
<!--		<param-name>br.com.caelum.vraptor.packages</param-name>-->
<!--		<param-value>br.com.caelum.vraptor.util.hibernate</param-value>-->
<!--	</context-param>-->

Bom anyway, nao rolou… =/

Lucas_Cavalcanti

alguém tá fechando o pool do c3p0 antes da hora…

o erro acontece sempre, ou só depois de algum tempo?

C

Entao Lucas, acontece assim que qq coisa utiliza a base…

Minha aplicação recebe requisicoes httpclient, na primeira que chega e é persistida da o erro… se eu tentar acessar alguma pagina tambem acontece…

Logo que sobe… nao da pra navegar…

Lucas_Cavalcanti

no main que vc fez o teste vc usou o sessionFactory da sua aplicação?

C

Usei sim!

C

Poutz… acho que achei…

a minha classe main de teste eh copia de um AppScoped que eu rodo ao iniciar…

E chama esse metodo

@PostConstruct
	public void geralLogout() {
		factoryCreator.create();
		SessionFactory sessionFactory = factoryCreator.getInstance();
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();
		Query query = session
				.createQuery("update HistoricoLogin set logado=false,logoutFalha=true , dataLogout= :dataLogout where logado=true");
		query.setParameter("dataLogout", Calendar.getInstance());
		query.executeUpdate();
		transaction.commit();
		session.disconnect();
		factoryCreator.destroy();
	}

Cara… comentei o

session.disconnect();
factoryCreator.destroy();

Pronto… subiu… acho que agora vai ein…

Lucas_Cavalcanti

nessa sua classe AppScoped vc pode já receber a SessionFactory direto, daí não precisa mexer com os creators

C

Ummm… boa!!

Nada como falar com o pai da criança…rs

Valeu!!

Bom agora só quarta… espero nao encontrar mais broken fucking pipe!

[]s!!!

Criado 24 de janeiro de 2011
Ultima resposta 24 de jan. de 2011
Respostas 13
Participantes 3