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
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|