Accueil > Forum > > > > J2EE struts import d'un grand nombre de données
J2EE struts import d'un grand nombre de données
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ée 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
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|