[Java] Soucis de connexion Oracle 9.1 avec Weblogic 6.1

Soucis de connexion Oracle 9.1 avec Weblogic 6.1 [Java] - Java - Programmation

Marsh Posté le 20-08-2002 à 10:23:09    

Yello !!  :hello:  
 
J'ai un petit soucis que je n'avais pas entre Weblo 5.1 et Oracle 8.1 !!!
 
c'est assez space !  :pt1cable:  
 
voila le code de ma servlet
 

Code :
  1. public class OracleServlet extends HttpServlet {
  2. public void doGet(HttpServletRequest request, HttpServletResponse response)
  3.   throws ServletException, IOException {
  4.         PrintWriter out = new PrintWriter(response.getOutputStream());
  5.         try {
  6.             Class.forName("oracle.jdbc.driver.OracleDriver" );
  7.             out.println("oracle.jdbc.driver.OracleDriver" );
  8.             StringBuffer sbUrl = new StringBuffer("jdbc:oracle:thin:@" );
  9.             sbUrl.append("host" );
  10.             sbUrl.append(":" );
  11.             sbUrl.append("port" );
  12.             sbUrl.append(":" );
  13.             sbUrl.append("sid" );
  14.             out.println(sbUrl.toString());
  15.             Connection conn = DriverManager.getConnection(sbUrl.toString(), "user", "pass" );
  16.             String qry = "SELECT DOCid FROM documents";
  17.             out.println(qry);
  18.             PreparedStatement ps = conn.prepareStatement(qry);
  19.             ResultSet rs = ps.executeQuery();
  20.             while (rs.next()) {
  21.                 out.println("> "+rs.getString("DOCid" ));
  22.             }
  23.             qry = "SELECT DOCid, DOCname FROM documents";
  24.             out.println(qry);
  25.             ps = conn.prepareStatement(qry);
  26.             rs = ps.executeQuery();
  27.             while (rs.next()) {
  28.                 out.println("> "+rs.getString("DOCid" ));
  29.             }
  30.             out.println("!!!fini!!!" );
  31.         } catch (Exception e) {
  32.             e.printStackTrace(out);
  33.         }
  34.         out.flush();
  35.     }
  36. }


 
et en voici la réponse  :sol:  
 

oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@host:port:sid
SELECT DOCid FROM documents
> 13
> 14
> 15
> 16
> 12
SELECT DOCid, DOCname FROM documents
java.sql.SQLException: ORA-00600: code erreur interne, arguments : [ttcgcshnd-1], [0], [], [], [], [], [], []
 
 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
 at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
 at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
 at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
 at oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:889)
 at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:1681)
 at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1870)
 at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:363)
 at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:314)
 at test.servlet.OracleServlet.doGet(OracleServlet.java:44)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:263)
 at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:200)
 at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2390)
 at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:1959)
 at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
 at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)


 
en gros je ne peux pas faire un select de plusieurs champs...
 :sweat:  
 
si quelqu'un a une idée de se qu'il se passe
 
merci d'avance


---------------
JeuxVideo.Records.Mame
Reply

Marsh Posté le 20-08-2002 à 10:23:09   

Reply

Marsh Posté le 20-08-2002 à 10:25:59    

tu n'as pas fermé ton statement entre les deux requetes


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-08-2002 à 10:36:40    

oui je sais mais la n'est pas le probleme
le but de l'exemple est :
avec "SELECT DOCid FROM documents" ca marche et autant de fois que je veux,
alors qu'avec "SELECT DOCid, DOCname FROM documents" ou meme "SELECT * FROM documents" ca ne marche jamais et met cette erreur incomprehensible :

java.sql.SQLException: ORA-00600: code erreur interne, arguments : [ttcgcshnd-1], [0], [], [], [], [], [], []


---------------
JeuxVideo.Records.Mame
Reply

Marsh Posté le 20-08-2002 à 10:37:40    

ah oui, au fait !
depuis un tomcat 3.x je n'ai pas ce probleme  [:jofusion]  :pt1cable:


---------------
JeuxVideo.Records.Mame
Reply

Marsh Posté le 20-08-2002 à 10:39:10    

mahU le malin a écrit a écrit :

oui je sais mais la n'est pas le probleme




 
bin ferme le avant dire que c'est pas ca le problème. De toutes façons c'est mauvais de faire ce que tu fais, erreur directe ou pas.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-08-2002 à 10:43:16    

DarkLord a écrit a écrit :

 
bin ferme le avant dire que c'est pas ca le problème. De toutes façons c'est mauvais de faire ce que tu fais, erreur directe ou pas.




 
et le nommage des variables il est bon ?


---------------
JeuxVideo.Records.Mame
Reply

Marsh Posté le 20-08-2002 à 10:44:06    

oui. Ceci dit  c'est ou que tu fais con.close()?


Message édité par darklord le 20-08-2002 à 10:44:27

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-08-2002 à 10:47:55    

:pt1cable:  
a mon avis c'est le gc qui fonctionne mal  :D  
 
mis à part les débats sur est-ce que tu as fermé tel ou tel objet, pas d'idée  :cry:  
 
j'aurais du envoyer le nom du package avec :  

Code :
  1. package test


---------------
JeuxVideo.Records.Mame
Reply

Marsh Posté le 20-08-2002 à 10:52:16    

ferme ta connection à la fin, ferme ton statement avant de faire ta deuxième requete et après ta deuxième requete et si ca marche toujours pas bin on en reparlera ...


Message édité par darklord le 20-08-2002 à 10:53:15

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-08-2002 à 10:52:56    

mahU le malin a écrit a écrit :

mis à part les débats sur est-ce que tu as fermé tel ou tel objet, pas d'idée  :cry:  




 
c'est pas un débat. Y a qqch que tu dois faire et que tu ne fais pas. Donc si en plus ca plante corrige au lieu de polémiquer :)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-08-2002 à 10:52:56   

Reply

Marsh Posté le 20-08-2002 à 10:55:34    

DarkLord a écrit a écrit :

ferme ta connection à la fin, ferme ton statement avant de faire ta deuxième requete et après ta deuxième requete et si ca marche toujours pas bin on en reparlera ...



:ange:

Reply

Marsh Posté le 20-08-2002 à 10:59:36    

--greg-- a écrit a écrit :

 :ange:  




 
je précise puisque -greg-- le fait si bien remarquer que j'ai fait ce genre d'erreurs dernièrement. Ca faisait un bail que j'avais plus toucher à JDBC et c'est ca brave ami qui m'a remis dans le droit chemin  
 
donc [:prosterne] greg [:prosterne2]


Message édité par darklord le 20-08-2002 à 11:04:22

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-08-2002 à 11:01:29    

c'est [: prosterne ] et [: prosterne2 ] :D


Message édité par --greg-- le 20-08-2002 à 11:03:27
Reply

Marsh Posté le 20-08-2002 à 11:03:29    

--greg-- a écrit a écrit :

c'est [: prosterne ] et [: prosterne2 ] :D
 
edit: uh!  :ouch:




 
marche pu
 
taiste [:prosterne]
 
edit: ah si :)


Message édité par darklord le 20-08-2002 à 11:04:38

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-08-2002 à 11:04:46    

voila qui est mieux [:dawa]

Reply

Marsh Posté le 20-08-2002 à 11:05:18    

:cry:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-08-2002 à 11:20:32    

mahU le malin a écrit a écrit :

oui je sais mais la n'est pas le probleme
le but de l'exemple est :
avec "SELECT DOCid FROM documents" ca marche et autant de fois que je veux,
alors qu'avec "SELECT DOCid, DOCname FROM documents" ou meme "SELECT * FROM documents" ca ne marche jamais et met cette erreur incomprehensible :

java.sql.SQLException: ORA-00600: code erreur interne, arguments : [ttcgcshnd-1], [0], [], [], [], [], [], []






 
Tu apprendras qu'une erreur Oracle est rarement compréhensible jeune padawan !
Google sera la encore ton ami.
Voila de la lecture :
http://www.google.fr/search?q=ORA- [...] ogle&meta=

Reply

Marsh Posté le 20-08-2002 à 11:21:59    

en bref et en  clair, il semble que tu utilises les drivers d'oracle 8 sur une base Oracle 9


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-08-2002 à 11:23:30    

Voila j'ai tout refait comme demandé ;-)
 
voici le code pour affichage console :
 

Code :
  1. package test;
  2. import java.sql.*;
  3. public class Oracle  {
  4.     public static String dbHost = "x";
  5.     public static String dbPort = "1585";
  6.     public static String dbSid = "PORTST";
  7.     public static String dbUser = "admportail";
  8.     public static String dbPass = "oracle";
  9. public static void main (String[] args) {
  10.         try {
  11.             Class.forName("oracle.jdbc.driver.OracleDriver" );
  12.             StringBuffer sbUrl = new StringBuffer("jdbc:oracle:thin:@" );
  13.             sbUrl.append(dbHost);
  14.             sbUrl.append(":" );
  15.             sbUrl.append(dbPort);
  16.             sbUrl.append(":" );
  17.             sbUrl.append(dbSid);
  18.             Connection conn = DriverManager.getConnection(sbUrl.toString(), dbUser, dbPass);
  19.             String qry = "SELECT DOCid FROM documents";
  20.             System.out.println(qry);
  21.             PreparedStatement ps = conn.prepareStatement(qry);
  22.             ResultSet rs = ps.executeQuery();
  23.             while (rs.next()) {
  24.                 System.out.println("> "+rs.getString("DOCid" ));
  25.             }
  26.             ps.close();
  27.             qry = "SELECT DOCid, DOCname FROM documents";
  28.             System.out.println(qry);
  29.             ps = conn.prepareStatement(qry);
  30.             rs = ps.executeQuery();
  31.             while (rs.next()) {
  32.                 System.out.println("> "+rs.getString("DOCid" ));
  33.             }
  34.             System.out.println("!!!fini!!!" );
  35.             conn.close();
  36.         } catch (Exception e) {
  37.             e.printStackTrace();
  38.         }
  39.     }
  40. }


 
avec la sortie console :
 

SELECT DOCid FROM documents
> 13
> 14
> 15
> 16
> 12
SELECT DOCid, DOCname FROM documents
> 13
> 14
> 15
> 16
> 12
!!!fini!!!


 
on peut en conclure que saturne rond !
 
maintenant le code de servlet dans weblo
 

Code :
  1. package test.servlet;
  2. import javax.servlet.*;
  3. import javax.servlet.http.*;
  4. import java.sql.*;
  5. import java.io.*;
  6. public class OracleServlet extends HttpServlet {
  7.     public static String dbHost = "x";
  8.     public static String dbPort = "1585";
  9.     public static String dbSid = "PORTST";
  10.     public static String dbUser = "admportail";
  11.     public static String dbPass = "oracle";
  12. public void doGet(HttpServletRequest request, HttpServletResponse response)
  13.   throws ServletException, IOException {
  14.         PrintWriter out = new PrintWriter(response.getOutputStream());
  15.         try {
  16.             Class.forName("oracle.jdbc.driver.OracleDriver" );
  17.             StringBuffer sbUrl = new StringBuffer("jdbc:oracle:thin:@" );
  18.             sbUrl.append(dbHost);
  19.             sbUrl.append(":" );
  20.             sbUrl.append(dbPort);
  21.             sbUrl.append(":" );
  22.             sbUrl.append(dbSid);
  23.             Connection conn = DriverManager.getConnection(sbUrl.toString(), dbUser, dbPass);
  24.             String qry = "SELECT DOCid FROM documents";
  25.             out.println(qry);
  26.             PreparedStatement ps = conn.prepareStatement(qry);
  27.             ResultSet rs = ps.executeQuery();
  28.             while (rs.next()) {
  29.                 out.println("> "+rs.getString("DOCid" ));
  30.             }
  31.             ps.close();
  32.             qry = "SELECT DOCid, DOCname FROM documents";
  33.             out.println(qry);
  34.             ps = conn.prepareStatement(qry);
  35.             rs = ps.executeQuery();
  36.             while (rs.next()) {
  37.                 out.println("> "+rs.getString(1)+" - "+rs.getString(2));
  38.             }
  39.             out.println("!!!fini!!!" );
  40.             conn.close();
  41.         } catch (Exception e) {
  42.             e.printStackTrace(out);
  43.         }
  44.         out.flush();
  45.     }
  46. }


 
qui génère la même réponse que taleur
 

SELECT DOCid FROM documents
> 13
> 14
> 15
> 16
> 12
SELECT DOCid, DOCname FROM documents
java.sql.SQLException: ORA-00600: code erreur interne, arguments : [ttcgcshnd-1], [0], [], [], [], [], [], []
 
 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
 at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
 at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
 at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
 at oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:889)
 at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:1681)
 at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1870)
 at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:363)
 at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:314)
 at test.servlet.OracleServlet.doGet(OracleServlet.java:48)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:263)
 at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:200)
 at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2390)
 at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:1959)
 at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
 at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)


---------------
JeuxVideo.Records.Mame
Reply

Marsh Posté le 20-08-2002 à 11:27:38    

ton résultset faut le fermer aussi


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-08-2002 à 11:30:07    

DarkLord a écrit a écrit :

ton résultset faut le fermer aussi




 
S'il utilise pas de pool, quand il ferme une connection, les statments qui y sont attachés sont fermés.
Quand on ferme un Statement,  les ResultSet qui y sont attachés sont fermés.
Non !?

Reply

Marsh Posté le 20-08-2002 à 11:32:52    

El_Gringo a écrit a écrit :

 
 
S'il utilise pas de pool, quand il ferme une connection, les statments qui y sont attachés sont fermés.
Quand on ferme un Statement,  les ResultSet qui y sont attachés sont fermés.
Non !?



si
mais bon
c pas une raison :D

Reply

Marsh Posté le 20-08-2002 à 11:33:11    

je préfère éviter les "si". De toutes façons ca doit etre fermé donc autant le faire explicitement.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-08-2002 à 11:34:51    

il ne reste plus qu'a trouvé les drivers thin d'oracle 9
car les drivers oci c'est plutot :-/


---------------
JeuxVideo.Records.Mame
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed