-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Connexion avec Oracle en mode externe (OS authentication)
PostPosted: Fri Aug 17, 2007 9:36 am 
Newbie

Joined: Fri Aug 17, 2007 8:44 am
Posts: 4
Bonjour,

J'ai intégré récemment un projet utilisant massivement Hibernate (v3.1.2).

Mon problème est de parvenir à faire fonctionner de nouveau un traitement batch s'appuyant sur Hibernate, qui utilisait une connexion "classique" via driver thin/URL/user/password et qui doit maintenant passer par une authentification externe via driver OCI, sans info supplémentaire transmise.

A titre indicatif, le projet comporte plusieurs autres batchs "simples", que j'ai dû modifier (avec succès) pour utiliser la connexion à Oracle en mode externe :
- l'URL est donc devenue jdbc:oracle:oci@ (au lieu de jdbc:oracle:thin@machine:port:SID)
- et les valeurs passées pour le username et le password sont maintenant "" (chaine vide).
Ces batchs n'utilisent pas Hibernate : les outils mis en oeuvre sont la OracleDataSource d'Oracle et le QueryRunner issu du package Jakarta commons-dbutils. Pour ces "petits" batchs, cela fonctionne parfaitement, sans retouche dans le code.
Je suis donc certain que la configuration Oracle et les droits utilisateur Unix sont corrects, et que mon problème avec le batch hibernate ne vient pas de là.

En effet, j'ai tenté sans succès de reproduire cette méthode avec le fichier hibernate.cfg.xml :
Quote:
<property name="hibernate.connection.username"></property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.url">jdbc:oracle:oci:@</property>


J'obtiens alors l'erreur suivante :
Quote:
org.hibernate.exception.GenericJDBCException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:91)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:79)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:363)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:122)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:125)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1309)
at com.maboite.infra.application.hibernate.composant.HibernateAG.beginTransaction(HibernateAG.java:43)
... 4 more
Caused by: java.sql.SQLException: Exception d'E/S: The Network Adapter could not establish the connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(DriverManager.java:539)
at java.sql.DriverManager.getConnection(DriverManager.java:158)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:360)
... 9 more


En cherchant sur le Net et dans ces forums, je ne suis pas parvenu à trouver d'exemple indiquant qu'on puisse utiliser l'OS authentication d'Oracle avec Hibernate (mais je n'ai pas vu écrit non plus noir sur blanc "pas d'OS authentication avec Hibernate")

==> Ma question est donc triple :
1) existe-t-il une possibilité d'appliquer le principe de l'OS authentication Oracle avec Hibernate ? (si la réponse est "oui, avec le driver Machin de chez MachinSoftware", c'est sans espoir, on a déjà éclaté le budget)
2) sinon, sachant qu'avec des outils moins sophistiqués j'arrive à utiliser l'authentification externe Oracle dans mes "petits" batchs, existe-t-il une possibilité d'ouvrir la connexion Oracle d'abord, puis de contraindre Hibernate à utiliser cette connexion ?
3) deux classes apparaissent dans la pile d'appel : T4CConnection et T4CDriverExtension. Elles appartiennent au package ojdbc et paraissent dédiées aux connexions avec les drivers type 4. Or, moi je veux passer par OCI qui est un driver type 2. Je suppose donc qu'un paramètre du hibernate.cfg.xml est incorrect, sans doute le driver_class. Quelqu'un peut-il m'indiquer comment forcer l'utilisation du driver de type 2 par Hibernate ?

Merci d'avance pour vos réponses,
G4rF

_________________
--
Seasons of gasoline and gold
Wise men fold (Nik Kershaw, "The riddle")


Last edited by g4rf on Fri Aug 17, 2007 11:17 am, edited 1 time in total.

Top
 Profile  
 
 Post subject: <doublon>
PostPosted: Fri Aug 17, 2007 11:12 am 
Newbie

Joined: Fri Aug 17, 2007 8:44 am
Posts: 4
<doublon>


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.