Bonjour à tous.
Je tourne un peu en rond avec ce problème, au cas où quelqu'un y verrait plus clair, je me décide à vous soumettre le bidule.
Ce que j'essaye de faire : faire tourner sous glassfish V3 une appli qui tournait sous Oracle Application Server 10.1.2, afin de refactorer avec des standards un peu plus récents... Dans cette appli, on a des procédures stockées et des classes de niveau DAO générées par une moulinette Oracle : JPublisher.
Je teste, j'obtiens la page de login, puis j'obtiens quelque chose comme ça :
Bon. Je finis par reprendre le script Ant qui appelle JPublisher pour lancer, en gros : sqlj.tools.Sqlj -compile=false -codegen=iso
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 java.lang.IllegalArgumentException: SQLJ programs translated with the option -codegen=oracle must be run under Oracle JDBC 9.0.0 or higher. If the Oracle JDBC driver is wrapped, then the wrapper must implement all of the oracle.jdbc.OracleXxxx interfaces. Alternatively, you can translate SQLJ programs either with -codegen=iso or with -codegen=jdbc. at sqlj.runtime.ref.ConnectionContextImpl.getOracleConnection(ConnectionContextImpl.java:153) at sqlj.runtime.ExecutionContext$OracleContext.prepareOracleCall(ExecutionContext.java:1513) at com.xx.yy.zz.UtilisateurServicePlSql.authentifier(UtilisateurServicePlSql.java:59)
Après relance du serveur et test, j'obtiens ça :
Il y a peut-être d'autres options de génération mais je ne connais pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 org.springframework.jdbc.UncategorizedSQLException: ConnectionCallback; uncategorized SQLException for SQL []; SQL state [null]; error code [17004]; Type de colonne non valide; nested exception is java.sql.SQLException: Type de colonne non valide Caused by: java.sql.SQLException: Type de colonne non valide at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:226) at oracle.jdbc.driver.OracleStatement.get_internal_type(OracleStatement.java:3162) at oracle.jdbc.driver.OracleCallableStatement.registerOutParameterInternal(OracleCallableStatement.java:120) at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:261) at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:341) at com.sun.gjc.spi.base.CallableStatementWrapper.registerOutParameter(CallableStatementWrapper.java:92) at sqlj.runtime.profile.ref.RTStatementJDBCCallable.registerOutParameter(RTStatementJDBCCallable.java:141) at sqlj.runtime.profile.ref.ParamRegProfile$ParamRegCachedStatement.registerParameters(ParamRegProfile.java:144) at sqlj.runtime.profile.ref.ParamRegProfile$ParamRegCachedStatement.getStatement(ParamRegProfile.java:101) at sqlj.runtime.profile.ref.CachedStatementProfileWrapper.getStatement(CachedStatementProfileWrapper.java:134) at sqlj.runtime.ExecutionContext$StatementStack.setStatement(ExecutionContext.java:1099) at sqlj.runtime.ExecutionContext.registerStatement(ExecutionContext.java:621) at com.xx.yy.zz.serviceoracle.UtilisateurServicePlSql.authentifier(UtilisateurServicePlSql.java:60)
Mais bon, j'essaie encore avec -codegen=jdbc.
Et là le code généré ne compile pas (du java.sql.CallableStatement sur lequel est appelé getORAData / setORAData, forcément...)
Bref, je tourne en rond (et en bourrique)...
Pour plus d'infos je suis en jdk 1.6.0_19 ; Le pool de connexion dans Glassfish est paramétré en spécifiant un oracle.jdbc.driver.OracleDriver, mais j'avais essayé d'autres paramétrages.
Si vous avez la moindre idée de ce qui coince, ou de ce que je pourrais essayer, je suis preneur...
Désolé si je n'ai pas posté au bon endroit ou si le message n'est pas assez clair.
Partager