IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Problème téléchargement fichiers volumineux java.lang.OutOfMemoryError


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 28
    Par défaut Problème téléchargement fichiers volumineux java.lang.OutOfMemoryError
    Bonjours

    sur une page JSF, je veux télécharger des fichiers volumineux, dans mon bean je me connecte sur un server FTP (FileZilla Server) à l'aide de l'API commons net, pour les fichiers de petite taille ca marche bien, mais pour les fichier dont la taille dépasse 40Mo j'ai un "java.lang.OutOfMemoryError: Java heap space"

    j'ai chercher sur net, mais malheureusement, j'ai rien trouvé
    Merci d'avance

    codes :
    page JSF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <h:commandLink actionListener="#{explorer.downloadListener}" immediate="true" style="text-decoration : none;">
        <h:panelGrid columns="2">
    		<h:graphicImage id="download" value="/img/menu/download.png" style="border:0; text-decoration : none;" height="25" width="25" title="Télécharger"/>
            <h:outputLabel value="Télécharger" for="download" style="border:0"/>
        </h:panelGrid>
        <a4j:support oncomplete="if (#{!empty facesContext.maximumSeverity}){Richfaces.showModalPanel('Alerte1');}"/>
    </h:commandLink>
    code Bean.Methode telechargement:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    public void downloadListener(ActionEvent evt){
    	FacesContext context = FacesContext.getCurrentInstance();
    		ExternalContext ec = context.getExternalContext();
    		HttpServletResponse response = (HttpServletResponse) ec.getResponse();
    		response.reset();
    		response.setHeader("Content-Transfer-Encoding", "binary");
    		//response.setContentType("application/download");
    		response.setHeader("Content-disposition", "attachment;filename=\""+ this.selectedRow.getNom() + "\"");
    		try{
    			client.connect("127.0.0.1");
    			client.login("compteFTP", "pwdFTP");
    			client.setFileType(FTP.BINARY_FILE_TYPE);
     
    			ServletOutputStream sop =  response.getOutputStream();
     
    			InputStream ins=client.retrieveFileStream(this.selectedRow.getPath()+"/"+selectedRow.getNom());
     
    			int read=0;
    			byte[] bytes = new byte[1024];
     
    			while((read = ins.read(bytes)) != -1){
    				sop.write(bytes,0,read);
    			}
     
    			sop.flush();
    			sop.close();
    				context.responseComplete();
    			}catch(IOException e) {
    	            e.printStackTrace();
     
    			} finally {
    				try {
    					client.disconnect();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    }
    code Erreur :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    GRAVE: Received 'java.lang.OutOfMemoryError' when invoking action listener '#{explorer.downloadListener}' for component 'j_id_jsp_527137651_54'
    23 juil. 2010 12:46:14 javax.faces.event.MethodExpressionActionListener processAction
    GRAVE: java.lang.OutOfMemoryError: Java heap space
    	at org.ajax4jsf.io.ByteBuffer.<init>(ByteBuffer.java:54)
    	at org.ajax4jsf.io.ByteBuffer.append(ByteBuffer.java:112)
    	at org.ajax4jsf.io.FastBufferOutputStream.write(FastBufferOutputStream.java:107)
    	at org.ajax4jsf.webapp.FilterServletResponseWrapper$ByteArrayServletOutputStream.write(FilterServletResponseWrapper.java:277)
    	at still.ftp.beans.ExplorerManager.downloadListener(ExplorerManager.java:1543)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
    	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    	at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
    	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:99)
    	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
    	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:759)
    	at javax.faces.component.UICommand.broadcast(UICommand.java:372)
    	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
    	at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
    	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
    	at org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:409)
    	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
    	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    code filter a4j sur le web.xml

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <filter>
    	<display-name>RichFaces Filter</display-name>
    	<filter-name>richfaces</filter-name>
    	<filter-class>org.ajax4jsf.Filter</filter-class>
    	<init-param>
    		<param-name>createTempFiles</param-name>
    		<param-value>true</param-value>
    	</init-param>
    	<init-param>
    		<param-name>maxRequestSize</param-name>
    		<param-value>1024000000</param-value>
    	</init-param>
    	<init-param>
    		<param-name>force-parser</param-name>
    		<param-value>true</param-value>
    	</init-param>
    	<init-param>
    		<param-name>enable-cache</param-name>
    		<param-value>true</param-value>
    	</init-param>
    	<init-param>
    		<param-name>regex-url-pattern</param-name>
    		<param-value>^(?:[^/]|/(?!file/))*$</param-value>
    	</init-param>
     
    </filter>

    j'utilise
    JSF1.2, RichFaces3.3.3, Tomcat6

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 28
    Par défaut
    Bonjour
    j'ai pu résoudre le problème, en fait mes codes sont correctes, il m'a fallu juste, configurer Tomcat pour pointer sur le dll de JVM server

    Configure Tomcat->onglet Java -> puis donner le path de JVM server.
    " C:\Program Files\Java\jdk1.6.0\jre\bin\server\jvm.dll "

    la plus part des JRE ne contiennent pas ce répertoire, pour cela il faut télécharger le SDK complet..

    merci pour le passage
    Amicalement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de "java.lang.OutOfMemoryError: Java heap space"
    Par carenamina dans le forum Eclipse
    Réponses: 1
    Dernier message: 06/05/2011, 04h00
  2. Fichiers : java lang OutOfMemoryError
    Par aristeas dans le forum Langage
    Réponses: 2
    Dernier message: 09/06/2009, 08h29
  3. [webService][Axis] java.lang.OutOfMemoryError
    Par webspeak dans le forum Services Web
    Réponses: 8
    Dernier message: 25/04/2005, 17h58
  4. [Strategie]Pb de java.lang.OutOfMemoryError
    Par eaque dans le forum Général Java
    Réponses: 3
    Dernier message: 06/04/2005, 11h01
  5. [JSP] pb " java.lang.outOfMemoryError "
    Par lthomas dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 31/03/2005, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo