HIBERNATE (Duvida sobre driver)

8 respostas
oraclejava
C

Olá amigos,

Tenho uma duvida,

Conectando ao Oracle usando Hibernate + C3p0 com session… A aplicação sempre funcionou perfeitamente com Oracle 11g, mas um cliente resolveu usar Oracle 12g…

Bom, já adicionei a OJDBC compatível com meu ambiente, que seria a “ojdbc6.jar” segundo a documentação da Oracle.

Bom o problema é que mesmo com esse driver eu não estou conseguindo conectar, Se eu faço uma conexao de teste usando:

System.out.println(“Oracle JDBC Driver Registered!”);

Connection connection = null;

try {

    connection = DriverManager.getConnection(
            "jdbc:oracle:thin:@ip:porta/NS", "USER", "Senha");

} catch (SQLException e) {

    System.out.println("Connection Failed! Check output console");
    e.printStackTrace();
    return;

Conecta normal, mas com o hibernate usando session, não consigo!

O que ja tentei:

Mudar a tag:

org.hibernate.dialect.Oracle10gDialect
Para
org.hibernate.dialect.OracleDialect.Oracle10gDialect


oracle.jdbc.OracleDriver

Para

oracle.jdbc.driver.OracleDriver


Segue o config do meu Hibernate.cfg para o Oracle:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
       <!--Configuração do Banco através de arquivo de parametro-->    
        <property name="hibernate.connection.username">USER</property>
        <property name="hibernate.connection.password">PW</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
        <property name="hibernate.hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <!-- configuration pool via c3p0-->
        <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>        
        <property name="hibernate.c3p0.acquire_increment">5</property>
        <property name="hibernate.c3p0.idle_test_period">30</property>
        <property name="hibernate.c3p0.min_size">1</property>
        <property name="hibernate.c3p0.max_size">5</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        <property name="hibernate.c3p0.timeout">60</property>
        <property name="hibernate.c3p0.acquireRetryAttempts">1</property>
        <property name="hibernate.c3p0.acquireRetryDelay">250</property>

        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.use_sql_comments">true</property>

        <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
        <property name="hibernate.current_session_context_class">thread</property>
    </session-factory>
</hibernate-configuration>

O que eu não tentei:
setar SQLNET.ALLOWED_LOGON_VERSION=8 no arquivo oracle/network/admin/sqlnet.ora file.
Pois não posso alterar a base do cliente.
Me desculpe, mas eu sou novato sou java júnior e quero muito solucionar isso sem perguntar aos seniors…
Muito obrigado galera !

8 Respostas

D

E existe, não é apenas 12c?

Cara, o dialect não tem nada a ver com a conexão, ele só interfere na maneira como a sintaxe será transformada, dos objetos das classes mapeadas para o SQL gerado para a interação com o banco.
Mas, se quiser insistir nisso, use o dialeto 12c

Sobre o persistence.xml, cadê a tag do hibernate.connection.url?

É que isso não tem desculpa.

Por que não? Mandaram você pesquisar?

C

12g foi apenas um erro de digitação foi mals…

a tag hibernate.connection.url acho que comi ela kkk, quando estava fazendo os meus testes, o url esta sendo passado por um datasource em .txt

É que isso não tem desculpa.
Sou novato em java comecei a trabalhar com java no mês passado.

Por que não? Mandaram você pesquisar?
Porque eles estão sempre ocupados, e poucos mostram disposição para ajudar, segundo esse projecto esta em NETBEANS e eles dizem que não gostam/não conhecem…

A solicitação é minha foi encaminhada para mim.

D

E o que tem nesse datasource? Como ele é lido? Qual a razão para estar num TXT e não configurado no servidor?

Alinhar expectativas é um passo importante em qualquer situação. Reportar dificuldades ao gestor, também. Inclusive, se essa dificuldade estiver na relação da equipe com um membro da mesma, como é teu caso.

Ué, basta abrir com o notepad++ e pronto.

Coloca a tag que comentei, mais ou menos assim:

<!--Configuração do Banco através de arquivo de parametro-->    
<property name="hibernate.connection.url">jdbc:oracle:thin:@ip:porta/NS</property>
<property name="hibernate.connection.username">USER</property>

E testa.

C

Voce tem razão vou informar ao meu coordenador de dev :slight_smile:

Meu data source esta passando o seguinte:
jdbc:oracle:thin:@ip:port/sn|Userver|password

C

Fiz a alteração e obtive o seguinte log:

Conectando na Empresa... EMPRESA
criando sessionFactory...
494 [http-nio-8080-exec-24] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
506 [http-nio-8080-exec-24] INFO org.hibernate.cfg.Environment - Hibernate 3.6.10.Final
509 [http-nio-8080-exec-24] INFO org.hibernate.cfg.Environment - hibernate.properties not found
516 [http-nio-8080-exec-24] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
522 [http-nio-8080-exec-24] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
718 [http-nio-8080-exec-24] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernateOracle.cfg.xml
718 [http-nio-8080-exec-24] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernateOracle.cfg.xml
827 [http-nio-8080-exec-24] WARN org.hibernate.util.DTDEntityResolver - recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
880 [http-nio-8080-exec-24] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
983 [http-nio-8080-exec-24] INFO org.hibernate.cfg.Configuration - Hibernate Validator not found: ignoring
1000 [http-nio-8080-exec-24] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
1005 [http-nio-8080-exec-24] INFO org.hibernate.connection.ConnectionProviderFactory - Initializing connection provider: org.hibernate.connection.C3P0ConnectionProvider
1009 [http-nio-8080-exec-24] INFO org.hibernate.connection.C3P0ConnectionProvider - C3P0 using driver: oracle.jdbc.OracleDriver at URL: jdbc:oracle:thin:@IP:porta/NS apaguei :)
1009 [http-nio-8080-exec-24] INFO org.hibernate.connection.C3P0ConnectionProvider - Connection properties: {user=W2I, password=****}
1009 [http-nio-8080-exec-24] INFO org.hibernate.connection.C3P0ConnectionProvider - autocommit mode: false
MLog clients using log4j logging.
Initializing c3p0-0.9.1.2 [built 21-May-2007 15:04:56; debug? true; trace: 10]
A C3P0Registry mbean is already registered. This probably means that an application using c3p0 was undeployed, but not all PooledDataSources were closed prior to undeployment. This may lead to resource leaks over time. Please take care to close all PooledDataSources.
MBean: com.mchange.v2.c3p0:type=PooledDataSource[1hgery99y9cwrlo1q52loy|15dcf8f] registered.
MBean: com.mchange.v2.c3p0:type=PooledDataSource[1hgery99y9cwrlo1q52loy|15dcf8f] unregistered, in order to be reregistered after update.
MBean: com.mchange.v2.c3p0:type=PooledDataSource[1hgery99y9cwrlo1q52loy|15dcf8f] registered.
Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@4cd51856 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@e37dd91b [ acquireIncrement -> 5, acquireRetryAttempts -> 1, acquireRetryDelay -> 250, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hgery99y9cwrlo1q52loy|8cb344, idleConnectionTestPeriod -> 30, initialPoolSize -> 1, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 60, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 5, maxStatements -> 50, maxStatementsPerConnection -> 0, minPoolSize -> 1, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@e88c9d2a [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 1hgery99y9cwrlo1q52loy|5ddfea, jdbcUrl -> jdbc:oracle:thin:@200.250.170.46:1521/PTBUS, properties -> {user=******, password=******} ], preferredTestQuery -> null, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLocation -> null, identityToken -> 1hgery99y9cwrlo1q52loy|15dcf8f, numHelperThreads -> 3 ]
incremented pending_acquires: 1
com.mchange.v2.resourcepool.BasicResourcePool@1b2e7de config: [start -> 1; min -> 1; max -> 5; inc -> 5; num_acq_attempts -> 1; acq_attempt_delay -> 250; check_idle_resources_delay -> 30000; mox_resource_age -> 0; max_idle_time -> 60000; excess_max_idle_time -> 0; destroy_unreturned_resc_time -> 0; expiration_enforcement_delay -> 15000; break_on_acquisition_failure -> false; debug_store_checkout_exceptions -> false]
acquire test -- pool size: 0; target_pool_size: 1; desired target? 1
incremented pending_acquires: 2
incremented pending_acquires: 3
incremented pending_acquires: 4
incremented pending_acquires: 5
awaitAvailable(): [unknown]
trace com.mchange.v2.resourcepool.BasicResourcePool@1b2e7de [managed: 0, unused: 0, excluded: 0]
An exception occurred while acquiring a poolable resource. Will retry.
java.sql.SQLException: ORA-28040: No matching authentication protocol

	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:282)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:277)
	at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOsesskey(T4CTTIoauthenticate.java:294)
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:358)
	at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:453)
	at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:164)
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:34)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:753)
	at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
	at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
	at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
	at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
	at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@6f6707 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (1). Last acquisition attempt exception: 
java.sql.SQLException: ORA-28040: No matching authentication protocol

Mano já estou esgotado :frowning:

D

Dá uma lida nisso

C

Sera que nao existe uma maneira de Atualizar o hibernate-core-3.6.10.Final.jar para uma versao mais atual nao ?

D

é um projeto maven ou você pegou os jars manualmente?
Lembrando que você pode atualizar, ocorre que há inúmeras mudanças na estrutura do hibernate da versão 3.x para as mais novas.

Criado 28 de setembro de 2018
Ultima resposta 10 de out. de 2018
Respostas 8
Participantes 2