|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : J2EE struts import d'un grand nombre de données [ Divers / Général ] (zarmin)
Informations & options pour cette discussion
vendredi 6 juillet 2007 à 13:54:50 |
J2EE struts import d'un grand nombre de données

zarmin
|
Bonjour, Je suis en train de developper un outil d'alimentation et je me retrouve confronter à un problème. L'application prend en parametre un fichier formaté ainsi : champs1|champs2|champs3 etc Je parse ligne par ligne et j insère dans la base de données les champs. Jusqu'ici il n'y aucun problème sur des petits fichiers. Le problème se pose lorsque le fichier contient des milliers de lignes. Vers le 5000 enregistrement (environs) j'obtiens lerreur suivante : java.sql.SQLException: Exception d'E/S: The Network Adapter could not establish the connection Quelqu un aurait une idée car je me retrouve bloquer Merci par avance
|
|
|
vendredi 6 juillet 2007 à 14:52:20 |
Re : J2EE struts import d'un grand nombre de données

DARKSIDIOUS
|
Sûrement un problème de cache ou de mémoire : ferme tu la connection à chaque écriture ? Comment insère-tu dans la base de données ? Montre nous le code que tu utilise ce sera plus simple.
|
|
|
vendredi 6 juillet 2007 à 15:11:42 |
Re : J2EE struts import d'un grand nombre de données

zarmin
|
Lecture du fichier Code : BufferedReader reader = new BufferedReader(new FileReader(file[0])); while ((currentLine = reader.readLine()) != null) { TraitementDonnees(ligneBuffer, NomdeLaTable, ListeChamps, idAlim); }
TraitementDonnees appelle :
public String alimentationTest(String[] Data, MyUser user, int idAlim) throws AlimentationServiceException { Connection connection = null; String result = ""; try { DataSource dataSource = getDataSource(); connection = dataSource.getConnection(); AlimentationImportOM alimentationOM = new AlimentationImportOMImpl(); alimentationOM.setConnection(connection); alimentationOM.setLogger(log); if (alimentationOM.checkExistant(Data[0])) result = alimentationOM.alimUpdate(Data, user, idAlim); else result = alimentationOM.alimInsert(Data, user, idAlim);
} catch (SQLException e) { log.error(e.getMessage(), e); throw new AlimentationServiceException(e.getMessage(), e); } catch (LookupException e) { log.error(e.getMessage(), e); throw new AlimentationServiceException(e.getMessage(), e); } finally { try { connection.close(); } catch (Throwable t) { log.error(t.getMessage(), t); } } return result; }
private static final String DB_REQUEST_ALIM_EXIST = "SELECT COUNT(CUR) FROM TABLE WHERE CUR=?";
private static final String DB_UPDATE_ALIM = "UPDATE TABLE " + "SET DATA=? WHERE CUR=?";
private static final String DB_INSERT_ALIM= "INSERT INTO TABLE (DATA) " + " VALUES (?) ";
public boolean checkExistant(String cur) throws LookupException { PreparedStatement pStmt = null; ResultSet rs = null; boolean isExist = false;
try { pStmt = connection.prepareStatement(DB_REQUEST_ALIM);
pStmt.setString(1, cur); rs = pStmt.executeQuery(); while (rs.next()) { isExist = true; }
} catch (SQLException sqlException) { getLogger().error(DB_REQUEST_ALIM_EXIST_PORTEE, sqlException); throw new LookupException(sqlException.getMessage(), sqlException); } catch (Throwable throwable) { getLogger().error(DB_REQUEST_ALIM_EXIST_PORTEE, throwable); throw new LookupException(throwable.getMessage(), throwable); } finally { try { rs.close(); pStmt.clearParameters(); pStmt.close(); } catch (Throwable throwable) { getLogger().error(throwable.getMessage(), throwable); } } return isExist; }
public String alimUpdate(String[] data, int idAlim) throws LookupException { PreparedStatement pStmt = null; ResultSet rs = null; try { pStmt.setString(4, data[0]); rs = pStmt.executeQuery(); } catch (SQLException sqlException) { getLogger().error(DB_UPDATE_ALIM, sqlException); throw new LookupException(sqlException.getMessage(), sqlException); } catch (Throwable throwable) { getLogger().error(DB_UPDATE_ALIM, throwable); throw new LookupException(throwable.getMessage(), throwable); } finally { try { if (rs != null) rs.close(); pStmt.clearParameters(); pStmt.close(); } catch (Throwable throwable) { getLogger().error(throwable.getMessage(), throwable); } } return "OK"; }
public String alimInsert(String[] data, MyUser user, int idAlim) throws LookupException { PreparedStatement pStmt = null; ResultSet rs = null;
try { pStmt = connection.prepareStatement(DB_INSERT_ALIM); pStmt.setString(1, data[0]);
rs = pStmt.executeQuery(); } catch (SQLException sqlException) { getLogger().error(DB_INSERT_ALIM, sqlException); throw new LookupException(sqlException.getMessage(), sqlException); } catch (Throwable throwable) { getLogger().error(DB_INSERT_ALIM, throwable); throw new LookupException(throwable.getMessage(), throwable); } finally { try { if (rs != null) rs.close(); pStmt.clearParameters(); pStmt.close(); } catch (Throwable throwable) { getLogger().error(throwable.getMessage(), throwable); } } return INSERT; }
|
|
|
vendredi 6 juillet 2007 à 15:27:01 |
Re : J2EE struts import d'un grand nombre de données

DARKSIDIOUS
|
A première vue, je dirais que ca vient de cette fonction : public boolean checkExistant(String cur) throws LookupException { PreparedStatement pStmt = null; ResultSet rs = null; boolean isExist = false; try { pStmt = connection.prepareStatement(DB_REQUEST_ALIM); pStmt.setString(1, cur); rs = pStmt.executeQuery(); while (rs.next()) { isExist = true; } } catch (SQLException sqlException) { getLogger().error(DB_REQUEST_ALIM_EXIST_PORTEE, sqlException); throw new LookupException(sqlException.getMessage(), sqlException); } catch (Throwable throwable) { getLogger().error(DB_REQUEST_ALIM_EXIST_PORTEE, throwable); throw new LookupException(throwable.getMessage(), throwable); } finally { try { rs.close(); pStmt.clearParameters(); pStmt.close(); } catch (Throwable throwable) { getLogger().error(throwable.getMessage(), throwable); } } return isExist; } Tu ne ferme jamais ton resultset (rs) et ton statement (pStmt). Donc forcément au fur et à mesure, la mémoire grimpe jusqu'à arriver à un OutOfMemory ! Java a un garbage collector, mais il ne peux pas libérer les ressources d'une connection encore ouverte !
|
|
|
vendredi 6 juillet 2007 à 15:32:56 |
Re : J2EE struts import d'un grand nombre de données

zarmin
|
Euh je comprend pas je fais bien finally { try { rs.close(); pStmt.clearParameters(); pStmt.close(); } catch (Throwable throwable) { getLogger().error(throwable.getMessage(), throwable); }
Donc pour moi quoiqu'il se passe le resultatset et le statement sont fermés non ?
|
|
|
vendredi 6 juillet 2007 à 15:54:28 |
Re : J2EE struts import d'un grand nombre de données

DARKSIDIOUS
|
Au temps pour moi, j'ai pas fait gâffe au bloc finally ! Bon alors je vois pas trop d'où ca peut venir...
Un petit truc au passage, tu fais : public String alimUpdate(String[] data, int idAlim) throws LookupException { PreparedStatement pStmt = null; ResultSet rs = null; try { pStmt.setString(4, data[0]);
Ca cà te provoque un NullPointerException, non ?
|
|
|
vendredi 6 juillet 2007 à 15:57:49 |
Re : J2EE struts import d'un grand nombre de données

zarmin
|
Hum non c'est jsute que j'ai simplifié le code et donc supprimé quelques lignes supperflues (ou pas !) Il y a bien une initialisation
Je me demandai si le fait de réduire le nombre de connection (une connection est ouverte à chaque ligne sur des fichiers de 20000 lignes ca fait en fait autant) ne pouvait pas régler ce problème ?
|
|
|
Cette discussion est classé dans : problème, données, struts, import, j2ee
Répondre à ce message
Sujets en rapport avec ce message
plugin struts [ par kawtar_ch ]
Bonjour!!je suis débutante en J2EE, je travaille sur une application web en J2EE, j'aimerai travailler avec Struts, mais le problème c'est que je n'ai
structure de données [ par safisa ]
Boujour tous le monde;j'ai un ptit problème avec le tri topologiquemon problème :est ce que je dois utiliser une queue ou une pile pour faire le tri d
probleme struts [ par abdo77 ]
Bonjour tout le monde, voila, j'ai un peti probleme qui me bloque pendant une semain, j'ai besoin de votre aide.j'arrive pas a stocker une valeur dans
probleme struts sous eclipse 3.3.3 europa [ par abdo77 ]
merci de votre aideje travaille avec eclipse 3.3.2mon probleme est que les get et set de la la classe actionFrom ne fonctionnne pas bien.package med.d
Communication Applet et PHP [ par tdjo ]
Bonjour à tous ,Voila mon problème j'ai une applet que je lance dans une page web (jusque là pas de problème) mais ensuite je voudrais faire communiqu
Problème d'upload (input text + file) [ par hh4life ]
Bonjour,J'utilise l'environnement technique suivant :- IDE : Eclipse- Serveur d'application : Jboss 4.0.5 avec conteneur Tomcat 5.5.20Les pages sont e
application j2ee et codage [ par titan82 ]
bonjour,je dois faire une application j2ee qui consiste à informatiser une reception d'un établissement.on a des formulaires à remplir (jsp) et lorsqu
j2ee /struts [ par kawti ]
bonsoir, je developpe acuellement une application web avec le framework struts,je suis debutante en j2ee et j'ai rencontrer des problémes en programat
problème avec net.sf.hibernate [ par lucky82 ]
Bonjour les amis, Je voudrais connaitre la librairie de laquelle On importe les classes suivantes:
J2EE et Eclipse, problème taglib [ par Diabolus ]
Bonjour à tousJe débute en J2EE et j'ai un problème avec mon projet sous Eclipse que je ne connais pas bien.Mes taglib ne sont pas pris en compte.Quan
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|