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

Tomcat et TomEE Java Discussion :

Liens de download disparus !


Sujet :

Tomcat et TomEE Java

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Liens de download disparus !
    Bonjour,

    Je vais essayer de m'expliquer clairement. Je développe une application Web. Je l'ai déployée mi décembre, j'ai eu quelques problèmes depuis, mais j'ai toujours réussi a les résoudre. Aujourd'hui je comprends pas.

    Alors pour situer le contexte, j'utilise J2EE, Hibernate et Struts ... dans cette application. Je génère un .war avec ANT. Je déploie mon .war sur un serveur jakarta-tomcat-4.1.12.

    Mon problème il y a 2 semaines, tous les liens de téléchargement ont tous disparu. C'est un systeme de gestion électronique de documents (GED) donc c'est vraiment gênant.

    J'ai regarde dans les fichiers de logs et voila les lignes intéressantes que j'ai pu récupérer :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    2008-09-09 09:13:24 StandardManager[/New_Tdms] IOException while loading persisted sessions: java.io.StreamCorruptedException: invalid type code: 00
    java.io.StreamCorruptedException: invalid type code: 00
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356)
    	at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1642)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
    	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
    	at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1357)
    	at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:852)
    	at org.apache.catalina.session.StandardManager.load(StandardManager.java:411)
    	at org.apache.catalina.session.StandardManager.start(StandardManager.java:626)
    	at org.apache.catalina.core.StandardContext.start(StandardContext.java:3496)
    	at org.apache.catalina.core.StandardHostDeployer.start(StandardHostDeployer.java:458)
    	at org.apache.catalina.core.StandardHost.start(StandardHost.java:872)
    	at org.apache.catalina.servlets.ManagerServlet.start(ManagerServlet.java:1014)
    	at org.apache.catalina.servlets.HTMLManagerServlet.start(HTMLManagerServlet.java:379)
    	at org.apache.catalina.servlets.HTMLManagerServlet.doGet(HTMLManagerServlet.java:149)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
    	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
    	at java.lang.Thread.run(Thread.java:619)
     
    2008-09-09 09:13:24 StandardManager[/New_Tdms] Exception loading sessions from persistent storage
    java.io.StreamCorruptedException: invalid type code: 00
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356)
    	at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1642)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
    	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
    	at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1357)
    	at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:852)
    	at org.apache.catalina.session.StandardManager.load(StandardManager.java:411)
    	at org.apache.catalina.session.StandardManager.start(StandardManager.java:626)
    	at org.apache.catalina.core.StandardContext.start(StandardContext.java:3496)
    	at org.apache.catalina.core.StandardHostDeployer.start(StandardHostDeployer.java:458)
    	at org.apache.catalina.core.StandardHost.start(StandardHost.java:872)
    	at org.apache.catalina.servlets.ManagerServlet.start(ManagerServlet.java:1014)
    	at org.apache.catalina.servlets.HTMLManagerServlet.start(HTMLManagerServlet.java:379)
    	at org.apache.catalina.servlets.HTMLManagerServlet.doGet(HTMLManagerServlet.java:149)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
    	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
    	at java.lang.Thread.run(Thread.java:619)
    L'Action qui gère les download DownloadAction.java :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    package tdms.fileActions;
     
    import java.io.BufferedInputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.lang.reflect.Method;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.upload.FormFile;
     
    /**
    *
    * @struts.action
    *       path="/releaseReqFormDownload"
    *       name="releaseReqFormBean" 
    *       type="tdms.fileActions.DownloadAction"
    *       scope="session"
    *       validate="false"
    *
    * @struts.action
    *       path="/releaseAppr1FormDownload"
    *       name="releaseAppr1FormBean" 
    *       type="tdms.fileActions.DownloadAction"
    *       scope="session"
    *       validate="false"
    *
    * @struts.action
    *       path="/releaseAppr2FormDownload"
    *       name="releaseAppr2FormBean" 
    *       type="tdms.fileActions.DownloadAction"
    *       scope="session"
    *       validate="false"
    *
    * @struts.action
    *       path="/releaseAppr3FormDownload"
    *       name="releaseAppr3FormBean" 
    *       type="tdms.fileActions.DownloadAction"
    *       scope="session"
    *       validate="false"
    *
    * @struts.action
    *       path="/editDocFormDownload"
    *       name="editDocFormBean" 
    *       type="tdms.fileActions.DownloadAction"
    *       scope="session"
    *       validate="false"
    *
    * @struts.action
    *       path="/newPackFormDownload"
    *       name="newPackFormBean" 
    *       type="tdms.fileActions.DownloadAction"
    *       scope="session"
    *       validate="false"
    */
    public class DownloadAction extends Action
    {
    	public ActionForward execute (ActionMapping mapping, ActionForm form, 
    			HttpServletRequest request, HttpServletResponse response) throws Exception
    	{
    		int count;
    		byte buf[] = new byte[4096];
     
    		/* Retrieval of the form object and its file attribute */
    		Class c = form.getClass();
    		String accessorName = "get" + request.getParameter("field");
    		Method getFile = c.getMethod(accessorName, (Class[])null);
    		FormFile file = (FormFile)getFile.invoke(form, (Object[])null);
     
    		/* Creation of input / output streams */
    		OutputStream os = response.getOutputStream();
    		InputStream is = new BufferedInputStream (file.getInputStream());
     
    		/* Set the file type, name and size for the client browser
    		 * the file is supposed to have an extension !! */
    		String fn = file.getFileName();
    		String ext = fn.substring(fn.lastIndexOf('.')+1);
    		response.setContentType("multipart/" + ext);
    		response.setHeader("Content-Disposition", "attachment; filename=\""+ fn + "\""); 
    		response.setContentLength((int)file.getFileSize());
    		os.flush();
     
    		/* Send binary content */
    		try 
    		{
    			while ((count = is.read(buf)) > -1)
    				os.write(buf, 0, count);
    		}
    		catch (Exception ex)	{ ex.printStackTrace();		}
     
            /* Everything OK */
    	    is.close(); 
    	    os.close();
    		return null;
    	}
    }
    Et voici une partie ou j'appelle l'action Download :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <!--  Fields for file upload -->
     
    		<tr>
    			<td colspan="2" class="title">File attachment</td>
    		</tr>
     
    		<tr>
    			<td>Actual doc source</td>
    		<tr>
    		<tr>
    			<td colspan="2">
    			<p>
    				<html:file property="srcFile" />
    				<input type="submit" value="Upload" onclick="document.getElementById('action').value='upload1'" />
     
    				<logic:notEmpty name="editDocFormBean" property="srcFile">
    					<html:link action="editDocFormDownload.do?field=SrcFile">
    						<bean:write name="editDocFormBean" property="srcFileName" />
    					</html:link>
    				</logic:notEmpty>
    			</p>
    			</td>
    		</tr>
     
    		<tr>
    			<td>Actual PDF IU</td>
    		<tr>
    		<tr>
    			<td colspan="2">
    			<p>
    				<html:file property="iuFile" />
    				<input type="submit" value="Upload" onclick="document.getElementById('action').value='upload2'" />
     
    				<logic:notEmpty name="editDocFormBean" property="iuFile">
    					<html:link action="editDocFormDownload.do?field=IuFile">
    						<bean:write name="editDocFormBean" property="iuFileName" />
    					</html:link>
    				</logic:notEmpty>
    			</p>
    			</td>
    		</tr>
     
    		<tr>
    			<td>Actual PDF NDA </td>
    		<tr>
    		<tr>
    			<td colspan="2">
    			<p>
    				<html:file property="ndaFile" />
    				<input type="submit" value="Upload" onclick="document.getElementById('action').value='upload3'" />
     
    				<logic:notEmpty name="editDocFormBean" property="ndaFile">
    					<html:link action="editDocFormDownload.do?field=NdaFile">
    						<bean:write name="editDocFormBean" property="ndaFileName" />
    					</html:link>
    				</logic:notEmpty>
    			</p>
    			</td>
    		</tr>
    Quand je déploie en local avec un serveur Jonas les liens sont présents.
    Quand je déploie sur le serveur je fais ça, ça marche plus:
    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
    Restart of Tomcat (duration : 10 minutes)
    a Shutdown of Tomcat
    / usr / local / jakarta - tomcat -4.1.12/ bin / shutdown .sh
    b Definition of the $JAVA HOME variable (we consider using the bash shell)
    export JAVA_HOME = / usr / local / j a v a 6
    c Increase the amount of memory allocated to the JVM (prevent Out-
    OfMemoryError : PermGen Space errors)
    export JAVA_OPTS = -XX: MaxPermSize =256 M
    d Run rmiregistry (JNDI service)
    / usr / local / java6 / bin / rmiregistry &
    e Start Tomcat
    / usr / local / jakarta - tomcat -4.1.12/ bin / startup .sh
    
    Deployment of the application (duration : 10 minutes)
    a Copy of the tdms.war archive in /webdoc
    b List the already installed applications : http://server:8080/manager/list
    c TDMS installation :
    http://server:8080/manager/install?path=/tdms&war=file:/webdoc/tdms.war
    d Check good deployment : http://server:8080/manager/list
    e Use of TDMS : http://server:8080/tdms/
    Donc si vous pouviez m'aider je serai reconnaissante !!!!!

    Merci J'ai été longue mais plus il y a de détails mieux c'est non !

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    en ce qui concerne l'erreur mentionnée, çà dit juste que tomcat ne sais pas restaurer les sessions sauvegardées lors de l'arret précédent. Ce n'a pas d'implication autre que de détruire les sessions utilisateurs.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Points : 468
    Points
    468
    Par défaut
    Qu'est-ce que tu entends par "tous les liens de téléchargement ont tous disparu" ? La page JSP s'affiche mais pas les liens ?

    Sinon si tu l'as pas déjà fait, tu peux déjà vider le cache du navigateur, supprimer tous les fichiers de travail de tomcat et relancer le serveur (histoire de cleaner un peu tout).

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Ce que je veux dire par "les liens de téléchargements ont disparu" c'est que sur toutes pages ou un download doit avoir lieu les liens ne s'affichent pas !

    Par exemple il y a une fonctionnalité (Edit Document) qui permet de modifier les attributs d'un document, c'est a dire le nom, la famille, etc on peut également télécharger le document correspondant -> ça marche pas -> pas de lien!
    Un autre exemple quand un document est demande après validation, l'application mets normalement a disposition de l'utilisateur un lien pour le télécharger directement depuis le site -> ça marche pas -> pas de lien!

    Bien il y a aucun message d'erreur!

    Sinon hier je me suis dit que si l'application fonctionne pas je vais déployer la même sous un autre nom! le déploiement ce passe bien mais j'obtiens ça quand je veux aller sur l'index.

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    type Exception report
     
    message
     
    description The server encountered an internal error () that prevented it from fulfilling this request.
     
    exception
     
    org.apache.jasper.JasperException: Unable to compile class for JSP
     
    An error occurred at line: -1 in the jsp file: null
     
    Generated servlet error:
        [javac] Since fork is true, ignoring compiler setting.
        [javac] Compiling 1 source file
        [javac] Since fork is true, ignoring compiler setting.
     
     
     
    	at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130)
    	at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)
    	at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:353)
    	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:370)
    	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
    	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
    	at java.lang.Thread.run(Thread.java:619)
    Je pense que tomcat a des difficultés. Je dois préciser quelque chose d'autre peut être utile ou pas, mais si on considère qu'on est dans les experts ou Dr House tous les détails sont importants hein ! J'ai farfouillée sur le serveur et j'ai trouve une chose étrange : tous les documents qui ont transité sur l'application sont stockés dans le dossier /usr/local/jakarta-4.1.12/bin ET dans le dossier /export/home/tomcat. Est ce que ça peut être grave sachant qu'ils sont stockes aussi sur le FTP?

    Voila ! Merci de votre aide ! J'ai 4 jours pour résoudre ce problème car je finis mon apprentissage !

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    personellement, je vois pas de problème avec ton tomcat. Je gagerais plutot que c'est ton système de gestion de document qui a pété les plombs.

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Ça rassure au moins ça ! Ça fait 9 mois qu'il est déployé mon systeme de gestion de documents c'est un peu dur comme réponse !

    Ya pas une solution? Il fonctionne bien en local sur jonas. Si j'efface ce qu'il a dans son work et que je redéploie, si je le réinstalle c'est long ?

    Je suis ouverte a toutes propositions me permettant de résoudre le problème !

    Merci

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Points : 468
    Points
    468
    Par défaut
    Pour faire un test, installe un autre Tomcat sur une machine (c'est très rapide) et déploie ton application.

  8. #8
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Solution !
    Bon ben je vais donner la réponse : attention roulements de tambours.

    C'est bien mon application qui fait de la m#@$e du moins partiellement .
    A chaque fois que l'application affiche un lien de téléchargement pour un document il copie le dit document dans les dossiers /export/home/tomcat et /usr/local/jakarta-tomcat-4.1.12/bin. Ce dossier est devenu trop gros, vraiment trop gros.

    Donc j'ai effacé tous les documents stockées dans les deux dossiers pour libérer de la place et j'ai redémarré tomcat et reloadé mon application! TADA .

    Maintenant si vous avez une idée de pourquoi l'application copie les documents dans ces répertoires, je suis preneur !
    Je vous remercie pour votre aide !

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    .... codée avec les pieds par de la main d'oeuvre pas chère dans un atelier protégé

  10. #10
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Pourquoi es tu si méchant !? Tu sais rien l'application a part un truc et tu dis que c'est codée avec les pieds. Bon je te l'accorde cette application a été codée par deux apprentis, c'est de la main d'œuvre pas chère, ok, mais la frontière est mince entre un diplômé et un apprenti. En l'occurrence 13 jours pour moi. Et je peux t'assurer que ça n'a pas été codé avec les pieds !!! Je suis aussi contre cette politique d'embaucher stagiaire sur stagiaire mais au moins ça fait de l'expérience. Faut pas cracher non plus dans la soupe. En somme c’est en forgeant que l’on devient forgeron.

    Tout le monde a le droit d'apprendre, de faire des erreurs et d'apprendre de ces erreurs.
    Si tu es né avec un serveur tomcat et du Java greffés dans le cerveau tant mieux pour toi, moi je ne demande que des conseils pas des critiques non constructifs.

    "Pour l'atelier protégé" j'ai pas compris désolée !

    Bref en gros ta remarque fait pas avancer les choses !!!

    Merci

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Il n'y a, à priori, aucune raison technique de le faire. Je soupçonne que la personne qui a codé soit ne voulais pas ou ne savais pas servir directement un fichier à travers une servlet et à donc opté pour la solution de facilité, pas très design, de tout copier dans un répertoire public lors de la génération de la page. Soupçons d'autant plus grand qu'il stocke le fichier à 2 endroits, il ne savais donc probablement pas et n'a pas vérifié lequel était le bon. De plus il n'a visiblement pas pris la peine de nettoyer les fichiers après usage.

  12. #12
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Je suis pas sur que ce soit volontaire ! C'est vrai que les servlets seraient plus appropriées!
    Voila le form bean pour l'édition d'un document. Il télécharge les documents du FTP. Je pense que c'est a ce moment la que ça se produit !
    Dites moi ce que vous en pensez ! Je pense pas que je puisse résoudre ça avant de partir mais si je peux laisser des pistes c'est bien !

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
     package tdms.formBeans;
     
    import java.io.IOException;
    import java.util.Calendar;
    import java.util.Iterator;
    import java.util.Set;
     
    import javax.servlet.http.HttpServletRequest;
     
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessage;
    import org.apache.struts.upload.FormFile;
    import org.hibernate.Session;
     
    import tdms.dto.Company;
    import tdms.dto.DocFormat;
    import tdms.dto.DocType;
    import tdms.dto.Document;
    import tdms.dto.Family;
    import tdms.dto.Location;
    import tdms.dto.User;
    import tdms.net.MyFTPClient;
    import tdms.tree.FamilyTree;
    import tdms.utils.Misc;
     
    /**
    *
    * @struts.form
    *       name="editDocFormBean"
    *       type="tdms.formBeans.EditDocFormBean"
    */
    public class EditDocFormBean extends ActionForm
    {
    	private static final long serialVersionUID = 1L;
     
    	private int docId;
    	private int docApprover1;
    	private int docApprover2;
    	private int docApprover3;
    	private boolean docBook;
    	private String docComments;
    	private int docCompanies[];
    	private int docDistriPolicy;
    	private int docFamily;
    	private int docFormat;
    	private String docKeyword;
    	private int docLocations[];
    	private String docName;
    	private String docProjectName;
    	private String docReportTitle;
    	private String docShortProjectName;
    	private String docShortReportTitle;
    	private String docSummary;
    	private String docTemplateVersion;
    	private int docType;
    	private float docVersion;
    	private String docVersionModif;
     
    	private int day;
    	private int month;
    	private int year;
     
    	private FormFile iuFile;
    	private FormFile srcFile;
    	private FormFile ndaFile;
     
    	/* Uploaded file accessors */
    	public FormFile getIuFile()		{ return iuFile;			}
    	public FormFile getSrcFile()		{ return srcFile;			}
    	public FormFile getNdaFile()		{ return ndaFile;			}
    	public void setIuFile(FormFile f)	{ if (f.getFileSize() != 0) iuFile = f;		}
    	public void setSrcFile(FormFile f) 	{ if (f.getFileSize() != 0) srcFile = f;	}
    	public void setNdaFile(FormFile f)	{ if (f.getFileSize() != 0) ndaFile = f;	}
     
    	public String getIuFileName() { 		
    		return iuFile == null ? "" : iuFile.getFileName();
    	}
     
    	public String getSrcFileName() { 		
    		return srcFile == null ? "" : srcFile.getFileName();
    	}
     
    	public String getNdaFileName() { 		
    		return ndaFile == null ? "" : ndaFile.getFileName();
    	}
     
    	/* Regular getters */
    	public int getDocId()			{ return docId;	}
    	public int getDocApprover1()		{ return docApprover1;			}
    	public int getDocApprover2()		{ return docApprover2;			}
    	public int getDocApprover3()		{ return docApprover3;			}
    	public boolean isDocBook()		{ return docBook;				}
    	public String getDocComments()	{ return docComments;			}
    	public int[] getDocCompanies()	{ return docCompanies;			}
    	public int getDocDistriPolicy()		{ return docDistriPolicy;	        	}
    	public int getDocFamily()		{ return docFamily;			}
    	public int getDocFormat()		{ return docFormat;			}
    	public String getDocKeyword()	{ return docKeyword;			}
    	public int[] getDocLocations()		{ return docLocations;			}
    	public String getDocName()		{ return docName;			}
    	public String getDocProjectName()	{ return docProjectName;		}
    	public String getDocReportTitle()	{ return docReportTitle;		}
    	public String getDocShortProjectName()		{ return docShortProjectName;	}
    	public String getDocShortReportTitle()		{ return docShortReportTitle;	}
    	public String getDocSummary()			{ return docSummary;		}
    	public String getDocTemplateVersion()		{ return docTemplateVersion;	}
    	public int getDocType()					{ return docType;			}
    	public float getDocVersion()				{ return docVersion;			}
    	public String getDocVersionModif()			{ return docVersionModif;		}
    	public int getDay()					{ return day;				}
    	public int getMonth()					{ return month;			}
    	public int getYear() 					{ return year;				}
     
    	/* Regular setters */
    	public void setDocId (int i)				{ docId = i;				}
    	public void setDocApprover1 (int i)			{ docApprover1 = i;			}
    	public void setDocApprover2 (int i)			{ docApprover2 = i;			}
    	public void setDocApprover3 (int i)			{ docApprover3 = i;			}
    	public void setDocBook (boolean b)			{ docBook = b;				}
    	public void setDocComments (String s)		{ docComments = s;			}
    	public void setDocCompanies (int[] t)		{ docCompanies = t;			}
    	public void setDocDistriPolicy (int i)			{ docDistriPolicy = i;		}	
    	public void setDocFamily (int i)			{ docFamily = i;			}
    	public void setDocFormat (int i)			{ docFormat = i;			}
    	public void setDocLocations (int[] t) 		{ docLocations = t;			}
    	public void setDocName (String s)			{ docName = s;				}
    	public void setDocKeyword (String s)		{ docKeyword = s;			}
    	public void setDocProjectName (String s)		{ docProjectName = s;		}
    	public void setDocReportTitle (String s)		{ docReportTitle = s;		}
    	public void setDocShortProjectName (String s)	{ docShortProjectName = s;	}
    	public void setDocShortReportTitle (String s)	{ docShortReportTitle = s;	}
    	public void setDocSummary (String s)		{ docSummary = s;	}
    	public void setDocTemplateVersion (String s)	{ docTemplateVersion = s;}
    	public void setDocType (int i)				{ docType = i;		}
    	public void setDocVersion (float f)			{ docVersion = f;		}
    	public void setDocVersionModif (String s)		{ docVersionModif = s;	}
    	public void setDay (int i)				{ day = i;			}
    	public void setMonth (int i)				{ month = i;		}
    	public void setYear (int i)				{ year = i;			}
     
    	/* Validates the form when posted */
    	public ActionErrors validate (ActionMapping mapping, HttpServletRequest request)
    	{
    		ActionErrors errors = new ActionErrors();
     
    		if ("submit".equals(request.getParameter("action")))
    		{
    			if (docLocations == null || docLocations.length == 0)
    				errors.add ("docLocations", new ActionMessage ("errors.required", "Location"));
     
    			if (docApprover1 == 0)
    				errors.add ("docApprover1", new ActionMessage ("errors.required", "Approver1"));
     
    			if (docApprover2 == 0)
    				errors.add ("docApprover2", new ActionMessage ("errors.required", "Approver2"));
     
    			if (docVersion == 0)
    				errors.add ("docVersion", new ActionMessage ("errors.required", "Version"));
     
    			if (Misc.isMissing (docName))
    				errors.add ("docName", new ActionMessage ("errors.required", "Document name"));
     
    			if (srcFile == null)
    				errors.add ("srcFile", new ActionMessage ("errors.fileMissing"));
     
    			if (iuFile == null)
    				errors.add ("iuFile", new ActionMessage ("errors.fileMissing"));
     
    			if (ndaFile == null)
    				errors.add ("ndaFile", new ActionMessage ("errors.fileMissing"));
    		}
     
    		return errors;
    	}
     
     
    	/**
             * Load a EditDocFormBean from the database
             * @param session db connection
             * @param id identifier of the document
             */
    	public void load (Session session, int id)
    	{
    		Document d = Document.get (session, id);
     
    		/* Load attributes */
    		docId = id;
    		docBook = d.isDocBook();
    		docComments = d.getDocComment();
    		docDistriPolicy = d.getDocDistriPolicy();
    		docKeyword = d.getDocKeyword();
    		docName = d.getDocName();
    		docProjectName = d.getDocProjectName();
    		docReportTitle = d.getDocReportTitle();
    		docShortProjectName = d.getDocShortProjectName();
    		docShortReportTitle = d.getDocShortReportTitle();
    		docSummary = d.getDocSummary();
    		docTemplateVersion = d.getDocTemplateVersion();
    		docVersion = d.getDocVersion();
    		docVersionModif = d.getDocVersionModif();
     
    		/* Relations */
    		docApprover1 = d.getDocApprover1().getId();
    		docApprover2 = d.getDocApprover2() == null ? 0 : d.getDocApprover2().getId();
    		docApprover3 = d.getDocApprover3() == null ? 0 : d.getDocApprover3().getId();
    		docFamily = d.getDocFamily().getId();
    		docFormat = d.getDocFormat().getId();
    		docType = d.getDocType().getId();
     
    		/* Load document date */
    		Calendar cal = Calendar.getInstance();
    		cal.setTime (d.getDocDate());
    		day = cal.get (Calendar.DAY_OF_MONTH);
    		month = cal.get (Calendar.MONTH) + 1;
    		year = cal.get (Calendar.YEAR);
     
    		/* Load allowed companies */
    		if (d.getDocCompanies().size() > 0)
    		{
    			int i = 0;
    			Set s = d.getDocCompanies();
    			docCompanies = new int[s.size()];
    			Iterator it = s.iterator();
    			while (it.hasNext())
    				docCompanies[i++] = ((Company)it.next()).getId();
    		}
     
    		/* Load locations */
    		if (d.getDocLocations().size() > 0)
    		{
    			int i = 0;
    			Set s = d.getDocLocations();
    			docLocations = new int[s.size()];
    			Iterator it = s.iterator();
    			while (it.hasNext())
    				docLocations[i++] = ((Location)it.next()).getId();
    		}
     
    		/* Load files */
    		MyFTPClient ftp = new MyFTPClient();
    		try
    		{
    			ftp.connect();
    			srcFile = ftp.getDocFile (id, docName, MyFTPClient.DOC_SRC);
    			iuFile = ftp.getDocFile (id, docName, MyFTPClient.DOC_IU);
    			ndaFile = ftp.getDocFile (id, docName, MyFTPClient.DOC_NDA);
    			ftp.disconnect();
    		}
    		catch (IOException e) {	System.err.println ("Pb getting file " + e.getMessage()); }
    	}
     
    	/**
             * Store a ReleaseAppr3FormBean into the database
             * @param session db connection
             * @throws Exception 
             */
    	public void store (Session session) throws Exception
    	{
    		Document d = Document.get (session, docId);
     
    		/* Save document attributes */
    		d.setDocBook (docBook);
    		d.setDocComment (docComments);
    		d.setDocDistriPolicy (docDistriPolicy);
    		d.setDocKeyword (docKeyword);
    		d.setDocName (docName);
    		d.setDocProjectName (docProjectName);
    		d.setDocReportTitle (docReportTitle);
    		d.setDocShortProjectName (docShortProjectName);
    		d.setDocShortReportTitle (docShortReportTitle);
    		d.setDocSummary (docSummary);
    		d.setDocTemplateVersion (docTemplateVersion);
    		d.setDocVersion (docVersion);
    		d.setDocVersionModif (docVersionModif);
     
    		/* Save relations */
    		d.setDocApprover1 (User.get (session, docApprover1));
    		d.setDocApprover2 (User.get (session, docApprover2));
    		d.setDocApprover3 (User.get (session, docApprover3));
    		d.setDocFamily (Family.get (session, docFamily));
    		d.setDocFormat (DocFormat.get (session, docFormat));
    		d.setDocType (DocType.get (session, docType));
     
    		/* Save companies */
    		Set k = d.getDocCompanies();
    		if (docCompanies != null)
    			for (int i=0; i<docCompanies.length; i++)
    				k.add (Company.get (session, docCompanies[i]));
     
    		/* Save locations */
    		Set l = d.getDocLocations();
    		for (int i=0; i<docLocations.length; i++)
    			l.add (Location.get (session, docLocations[i]));
     
    		/* Save document date */
    		Calendar cal = Calendar.getInstance();
    		cal.set (year, month-1, day);
    		d.setDocDate (cal.getTime());
     
    		/* Save to database */
    		d.store (session);
     
    		/* Update family tree */
    		FamilyTree.updateRemoteTree();
     
    		/* Store files */
    		MyFTPClient ftp = new MyFTPClient();
    		try
    		{
    			ftp.connect();
    			ftp.sendDocFile (srcFile, d.getDocId(), d.getDocName(), MyFTPClient.DOC_SRC);
    			ftp.sendDocFile (iuFile, d.getDocId(), d.getDocName(), MyFTPClient.DOC_IU);
    			ftp.sendDocFile (ndaFile, d.getDocId(), d.getDocName(), MyFTPClient.DOC_NDA);
    			System.err.println ("Stored file : " + d.getDocId());
    			ftp.disconnect();
    		}
    		catch (IOException e) { System.err.println ("Pb uploading file : " + e.getMessage()); }
    	}
    }

  13. #13
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    je ne sais pas comment est codé ce client ftp, mais il semble qu'il ne sache travailler qu'avec des File physique plutot qu'avec des Stream. C'est là qu'il faut revoir le design. Le formfile de struts, même si il devait arriver qu'il doive créer un fichier physique (on peux pas stocker un upload de 50M en mémoire de webapp, faut pas déconner), il fait normalement son nettoyage proprement.

    Au fait tu parle d'un problème de download, mais je ne vois que des trucs liés à l'upload....

    Le plus simple pour trouver l'erreur, tu fait un recherche dans la source sur la chaine "new File(" et tu tire à vue, File n'a rien, quasiment, jamais à faire dans une webapp

  14. #14
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Le coupable est démasque : Je vous dit demain ce que je vais en faire pour flinguer new file correctement !!!!

    Merci, je vous tiens au courant.

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    package tdms.net;
     
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.net.SocketException;
     
    import org.apache.commons.net.ftp.FTP;
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPReply;
    import org.apache.struts.upload.FormFile;
     
    import tdms.dto.Config;
     
    public class MyFTPClient 
    {
    	/* Constants for filenames */
    	public final static String DOC_IU  = "iu.";
    	public final static String DOC_NDA = "nda.";
    	public final static String DOC_SRC = "src.";
     
    	/* Connection parameters */
    	private int ftp_port; 
    	private String ftp_server;
    	private String ftp_username;
    	private String ftp_password;
    	private String ftp_rootDir;
     
    	/* Other attributes */
    	private FTPClient ftp;
     
    	/* Constructor */
    	public MyFTPClient ()
    	{
    		Config c = Config.getInstance();
     
    		this.ftp_port = c.getFtpPort();
    		this.ftp_server = c.getFtpServer();
    		this.ftp_username = c.getFtpUserName();
    		this.ftp_password = c.getFtpPassword();
     
    		/* Rootdir must end with a slash */
    		this.ftp_rootDir = c.getFtpRootDir();
    		if (!ftp_rootDir.endsWith("/"))
    			this.ftp_rootDir += "/";
     
    		this.ftp = new FTPClient();
    	}
     
    	public FTPClient getFtp () { return ftp; }
     
    	/**
             * Connect to a remote FTP server whose parameters are known
             * @return boolean Succes ou echec de la connexion
             * @throws SocketException
             * @throws IOException
             */
    	public boolean connect () throws SocketException, IOException
    	{
    		int reply;
     
    		/* Connect to FTP server */
    		ftp.connect (ftp_server, ftp_port);
    		reply = ftp.getReplyCode();
     
    		/* Not connected ? */
    		if (!FTPReply.isPositiveCompletion (reply))  {
    			System.err.println ("Problem connecting to FTP server");
    	        ftp.disconnect();
    	        return false;
    	    }
     
    		/* Login */
    		if (!ftp.login (ftp_username, ftp_password)) {
    			System.err.println ("Problem logging to FTP server");
    			ftp.disconnect();
    			return false;
    		}
     
    	    return true;
    	}
     
    	/**
             * Disconnect from remote FTP server
             * @throws IOException
             */
    	public void disconnect () throws IOException
    	{
    		ftp.logout();
    		ftp.disconnect();
    	}
     
    	public void goToDocDir (int docId) throws IOException
    	{	
    		/* Go to root dir */
    		ftp.changeWorkingDirectory (ftp_rootDir + "docs");
     
    		/* If not create it */
    		ftp.makeDirectory (docId + "");
     
    		/* Change directory */
    		ftp.changeWorkingDirectory (docId + "");
    	}
     
    	public static String getFileExtension (String fileName)
    	{
    		int index = fileName.indexOf ('.');
    		if (index == -1)
    			return "";
    		else
    			return fileName.substring (index+1);
    	}
     
    	public void sendDocFile (FormFile f, int docId, String docName, String type) throws IOException
    	{
    		/* Change working directory */
    		goToDocDir (docId);
     
    		/* Prepare file name */
    		String fileName = type + getFileExtension (f.getFileName());
     
    		/* Set file type to binary */
    		ftp.setFileType (FTP.BINARY_FILE_TYPE);
     
    		/* Store file */
    		if (!ftp.storeFile (fileName, f.getInputStream()))
    			System.err.println ("Problem uploading file");
    	}
     
    	public FormFile getDocFile (int docId, String docName, String type) throws IOException
    	{
    		/* Change working directory */
    		goToDocDir (docId);
     
    		/* List files in the directory */
    		String[] tab = ftp.listNames();
     
    		/* Find the name of the correct file */
    		int i = 0;
    		boolean found = false;
    		while (!found && i<tab.length)
    			if (tab[i++].startsWith(type))
    				found = true;
     
    		/* Not found ? */
    		if (!found)
    			return null;
     
    		/* Prepare local filename */
    		String fileName = docName + "_" + tab[--i];
     
    		/* Create local output stream */
    		File f = new File (fileName);
    		FileOutputStream fo = new FileOutputStream (f); 
    		BufferedOutputStream bo = new BufferedOutputStream (fo);
     
    		/* Set file type to binary */
    		ftp.setFileType (FTP.BINARY_FILE_TYPE);
     
    		/* Retrieve the file */
    		ftp.retrieveFile (tab[i], bo);
    		bo.close();
     
    		/* Return FormFile .. */
    		return new MyDiskFile (f);
    	}
    }

  15. #15
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    t'es pas supposé créer des objet FormFile toi meme, c'est commons fileupload qui les crée et les détruit à la fin de la requete :s

    Le mieux est d'essayer de travailler avec un outputstream.

Discussions similaires

  1. Navigateur - Télécharger lien - ?p=download&id=887
    Par EmilieM dans le forum Débuter
    Réponses: 1
    Dernier message: 13/10/2010, 11h28
  2. Lien FileReference Download()
    Par ljuboja78 dans le forum Flex
    Réponses: 7
    Dernier message: 01/04/2009, 13h26
  3. Mettre un lien de download dans un JS
    Par jlb59 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 03/07/2008, 18h09
  4. Download d'un lien hypertext
    Par The snail dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 17/10/2006, 08h52

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