Interceptar exceções nos Drivers JDBC com Hibernate!

2 respostas
drix

Olá! Caros Colegas!

Estou desenvolvendo um sistema.
Onde na tela de login, quero informar ao usuários os erros de acesso ao banco de dados como:

  • Senha invalida
  • Caminho ou endereco de servidor inválido
  • Banco de dados não encontrado
  • etc.

Contudo, esses erros geralmente são detectados nas exceções dos drivers JDBC, e não consigo capturá-las dentro do meu sistema.

Alguém tem alguma informação ou dica que pode me ajudar?
Alguém já conseguiu desenvolver algo parecido? como solucionou este problema?

Estou usando Swing/AWT, Hibernate 3.0, MySQL.

Desde já, agradeço a atenção de todos!!!

:wink:

2 Respostas

drix

:roll: :?:

drix

Vejam as saidas do console, para entenderem meu dilema:

2006-09-01 14:01:11,421 INFO  cfg.annotations.Version  -> Hibernate Annotations 3.2.0.CR1
 2006-09-01 14:01:11,453 INFO  hibernate.cfg.Environment  -> Hibernate 3.2 cr2
 2006-09-01 14:01:11,453 INFO  hibernate.cfg.Environment  -> hibernate.properties not found
 2006-09-01 14:01:11,468 INFO  hibernate.cfg.Environment  -> Bytecode provider name : cglib
 2006-09-01 14:01:11,468 INFO  hibernate.cfg.Environment  -> using JDK 1.4 java.sql.Timestamp handling
 2006-09-01 14:01:11,640 INFO  hibernate.cfg.Configuration  -> configuring from resource: res/cfg/scidata.con.xml
 2006-09-01 14:01:11,640 INFO  hibernate.cfg.Configuration  -> Configuration resource: res/cfg/scidata.con.xml
 2006-09-01 14:01:11,781 INFO  hibernate.cfg.Configuration  -> Configured SessionFactory: null
 2006-09-01 14:01:11,859 INFO  hibernate.cfg.AnnotationBinder  -> Binding entity from annotated class: br.com.drisoft.jscidata.beans.geo.Bairro
 2006-09-01 14:01:11,906 INFO  cfg.annotations.EntityBinder  -> Bind entity br.com.drisoft.jscidata.beans.geo.Bairro on table Bairro
 2006-09-01 14:01:12,000 INFO  hibernate.cfg.AnnotationBinder  -> Binding entity from annotated class: br.com.drisoft.jscidata.beans.geo.CaixaPostalComunitaria
 2006-09-01 14:01:12,015 INFO  cfg.annotations.EntityBinder  -> Bind entity br.com.drisoft.jscidata.beans.geo.CaixaPostalComunitaria on table CaixaPostalComunitaria
 2006-09-01 14:01:12,015 INFO  hibernate.cfg.AnnotationBinder  -> Binding entity from annotated class: br.com.drisoft.jscidata.beans.geo.Cidade
 2006-09-01 14:01:12,015 INFO  cfg.annotations.EntityBinder  -> Bind entity br.com.drisoft.jscidata.beans.geo.Cidade on table Cidade
 2006-09-01 14:01:12,015 INFO  hibernate.cfg.AnnotationBinder  -> Binding entity from annotated class: br.com.drisoft.jscidata.beans.geo.Estado
 2006-09-01 14:01:12,015 INFO  cfg.annotations.EntityBinder  -> Bind entity br.com.drisoft.jscidata.beans.geo.Estado on table Estado
 2006-09-01 14:01:12,031 INFO  hibernate.cfg.AnnotationBinder  -> Binding entity from annotated class: br.com.drisoft.jscidata.beans.geo.GrandesUsuarios
 2006-09-01 14:01:12,031 INFO  cfg.annotations.EntityBinder  -> Bind entity br.com.drisoft.jscidata.beans.geo.GrandesUsuarios on table GrandesUsuarios
 2006-09-01 14:01:12,031 INFO  hibernate.cfg.AnnotationBinder  -> Binding entity from annotated class: br.com.drisoft.jscidata.beans.geo.Logradouro
 2006-09-01 14:01:12,031 INFO  cfg.annotations.EntityBinder  -> Bind entity br.com.drisoft.jscidata.beans.geo.Logradouro on table Logradouro
 2006-09-01 14:01:12,046 INFO  hibernate.cfg.AnnotationBinder  -> Binding entity from annotated class: br.com.drisoft.jscidata.beans.geo.UnidadeOperacional
 2006-09-01 14:01:12,046 INFO  cfg.annotations.EntityBinder  -> Bind entity br.com.drisoft.jscidata.beans.geo.UnidadeOperacional on table UnidadeOperacional
 2006-09-01 14:01:12,062 INFO  hibernate.cfg.AnnotationBinder  -> Binding entity from annotated class: br.com.drisoft.jscidata.beans.finance.Banco
 2006-09-01 14:01:12,062 INFO  cfg.annotations.EntityBinder  -> Bind entity br.com.drisoft.jscidata.beans.finance.Banco on table Banco
 2006-09-01 14:01:12,062 INFO  hibernate.cfg.AnnotationBinder  -> Binding entity from annotated class: br.com.drisoft.jscidata.beans.security.Usuario
 2006-09-01 14:01:12,062 INFO  cfg.annotations.EntityBinder  -> Bind entity br.com.drisoft.jscidata.beans.security.Usuario on table Usuario
 2006-09-01 14:01:12,312 INFO  hibernate.connection.DriverManagerConnectionProvider  -> Using Hibernate built-in connection pool (not for production use!)
 2006-09-01 14:01:12,312 INFO  hibernate.connection.DriverManagerConnectionProvider  -> Hibernate connection pool size: 1
 2006-09-01 14:01:12,312 INFO  hibernate.connection.DriverManagerConnectionProvider  -> autocommit mode: false
 2006-09-01 14:01:12,312 INFO  hibernate.connection.DriverManagerConnectionProvider  -> using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://servidor/bancoteste
 2006-09-01 14:01:12,312 INFO  hibernate.connection.DriverManagerConnectionProvider  -> connection properties: {user=root, password=****}
 2006-09-01 14:01:18,984 WARN  hibernate.cfg.SettingsFactory  -> Could not obtain connection metadata
 java.sql.SQLException: Access denied for user: 'root@servidor' (Using password: YES)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:812)
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1235)
	at com.mysql.jdbc.Connection.createNewIO(Connection.java:2644)
	at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:73)
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1928)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1211)
	at br.com.drisoft.jscidata.persistence.hibernate.HibernateUtility.getFactory(HibernateUtility.java:116)
	at br.com.drisoft.jscidata.persistence.hibernate.HibernateUtility.getSession(HibernateUtility.java:28)
	at br.com.drisoft.jscidata.App$1.run(App.java:19)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
2006-09-01 14:01:19,109 INFO  hibernate.dialect.Dialect  -> Using dialect: org.hibernate.dialect.MySQLDialect
 2006-09-01 14:01:19,109 INFO  hibernate.transaction.TransactionFactoryFactory  -> Using default transaction strategy (direct JDBC transactions)
 2006-09-01 14:01:19,125 INFO  hibernate.transaction.TransactionManagerLookupFactory  -> No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
 2006-09-01 14:01:19,125 INFO  hibernate.cfg.SettingsFactory  -> Automatic flush during beforeCompletion(): disabled
 2006-09-01 14:01:19,125 INFO  hibernate.cfg.SettingsFactory  -> Automatic session close at end of transaction: disabled
 2006-09-01 14:01:19,125 INFO  hibernate.cfg.SettingsFactory  -> Scrollable result sets: disabled
 2006-09-01 14:01:19,125 INFO  hibernate.cfg.SettingsFactory  -> JDBC3 getGeneratedKeys(): disabled
 2006-09-01 14:01:19,125 INFO  hibernate.cfg.SettingsFactory  -> Connection release mode: auto
 2006-09-01 14:01:19,125 INFO  hibernate.cfg.SettingsFactory  -> Maximum outer join fetch depth: 1
 2006-09-01 14:01:19,125 INFO  hibernate.cfg.SettingsFactory  -> Default batch fetch size: 1
 2006-09-01 14:01:19,125 INFO  hibernate.cfg.SettingsFactory  -> Generate SQL with comments: disabled
 2006-09-01 14:01:19,125 INFO  hibernate.cfg.SettingsFactory  -> Order SQL updates by primary key: disabled
 2006-09-01 14:01:19,125 INFO  hibernate.cfg.SettingsFactory  -> Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
 2006-09-01 14:01:19,156 INFO  hql.ast.ASTQueryTranslatorFactory  -> Using ASTQueryTranslatorFactory
 2006-09-01 14:01:19,156 INFO  hibernate.cfg.SettingsFactory  -> Query language substitutions: {}
 2006-09-01 14:01:19,156 INFO  hibernate.cfg.SettingsFactory  -> Second-level cache: enabled
 2006-09-01 14:01:19,156 INFO  hibernate.cfg.SettingsFactory  -> Query cache: disabled
 2006-09-01 14:01:19,156 INFO  hibernate.cfg.SettingsFactory  -> Cache provider: org.hibernate.cache.EhCacheProvider
 2006-09-01 14:01:19,171 INFO  hibernate.cfg.SettingsFactory  -> Optimize cache for minimal puts: disabled
 2006-09-01 14:01:19,171 INFO  hibernate.cfg.SettingsFactory  -> Structured second-level cache entries: disabled
 2006-09-01 14:01:19,187 INFO  hibernate.cfg.SettingsFactory  -> Echoing all SQL to stdout
 2006-09-01 14:01:19,187 INFO  hibernate.cfg.SettingsFactory  -> Statistics: enabled
 2006-09-01 14:01:19,187 INFO  hibernate.cfg.SettingsFactory  -> Deleted entity synthetic identifier rollback: disabled
 2006-09-01 14:01:19,187 INFO  hibernate.cfg.SettingsFactory  -> Default entity-mode: pojo
 2006-09-01 14:01:19,296 INFO  hibernate.impl.SessionFactoryImpl  -> building session factory
 2006-09-01 14:01:19,312 WARN  ehcache.config.ConfigurationFactory  -> No configuration found. Configuring ehcache from ehcache-failsafe.xml  found in the classpath: jar:file:/C:/Documents%20and%20Settings/Adriano/workspace/jscidata/lib/ehcache-1.2.jar!/ehcache-failsafe.xml
 2006-09-01 14:01:20,125 INFO  hibernate.impl.SessionFactoryObjectFactory  -> Not binding factory to JNDI, no JNDI name configured

Aqui, simulei uma falha de conexão com o Banco, portanto surge uma exceção no Driver JDBC do MySQL, conforme segue: com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946), com a mensagem: java.sql.SQLException: Access denied for user: ‘root@servidor’ (Using password: YES)

Pois é exatamente essa exeção que desejo capturar.
Mesmo usando Try/Catch, essa exeção não é considerada e passa normalmente. O que pode ser? O que devo fazer?

Criado 30 de agosto de 2006
Ultima resposta 1 de set. de 2006
Respostas 2
Participantes 1