WebLogic “Dépassée a déclaré la longueur du contenu” Erreur

J'ai un filtre de servlet qui est la génération de "Dépassée a déclaré la longueur du contenu" des erreurs dans WebLogic 10.0. J'aimerais avoir des suggestions pour résoudre ce problème s'il vous plaît. Les détails de la façon suivante.

Le filtre de servlet redimensionne les images. Cette erreur se produit alors l'écriture du contenu d'un FileInputStream (de disque) à la réponse.getOutputStream() :

java.net.ProtocolException: Dépassement a déclaré la longueur du contenu de 2228
au weblogic.servlet.interne.ChunkOutput.writeStream(ChunkOutput.java:411)

Voir la fin de ce message pour le full stack trace.

Notre environnement WebLogic 10.0 avec Java 1.5 (sur Windows XP). Cependant, nous avons été à l'aide de ce même filtre de servlet Tomcat 6, Java 1.6 pour plus d'un an sans aucun problème. Également, nous l'avons fait avec succès le test d'une version précédente de ce filtre de servlet avec WebLogic 8.1.

Le contenu des longueurs indiqué dans la trace de la pile d'erreurs ne correspondent précisément à la taille de la source des fichiers sur le disque. Donc, je ne sais pas comment le contenu de la longueur est trop grande.

Les erreurs se produisent après le chargement de 6 images, chacune d'environ 2 ko en taille. Donc, je ne me demande si le problème peut être lié à la WebLogic réponse de la taille de la mémoire tampon qui je rassemble est d'environ 12 ko.

J'ai tenté d'augmenter la réponse de la taille de la mémoire tampon à l'aide de la réponse.setBufferSize() la méthode. Cependant, WebLogic serait de ne pas accepter la commande parce que la réponse avait déjà commencé. Quelqu'un sait-il un moyen de configurer la réponse par défaut taille de la mémoire tampon dans WebLogic?

Ci-dessous est une version simplifiée du code. J'ai essayer d'ajouter.flush(), mais en vain. Est qu'il manque quelque chose qui serait la cause d'un problème avec WebLogic, mais pas de Tomcat?

//----

File file = new File(mFileName);
int fileLength = file.length();
response.setContentLength(fileLength);
response.setContentType(contentType);

OutputStream out = response.getOutputStream();

FileInputStream in = new FileInputStream(mFileName);

byte[] buf = new byte[1024];
int count = 0;

while ((count = in.read(buf)) >= 0) {

    out.write(buf, 0, count);
}

in.close();

out.close();

//----

Merci.

Ce qui concerne

Brett S

Le plein de trace de pile est:

####<3/11/2009 09:52:20 AM EST> <Error> <HTTP> <nmi02> <cgServer> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1257202340094> <BEA-101019> <[weblogic.servlet.internal.WebAppServletContext@8615a2 - appName: '_workshop_auto_generated_ear_', name: '/', context-path: ''] Servlet failed with IOException
java.net.ProtocolException: Exceeded stated content length of 2228
at weblogic.servlet.internal.ChunkOutput.writeStream(ChunkOutput.java:411)
at weblogic.servlet.internal.ChunkOutputWrapper.writeStream(ChunkOutputWrapper.java:168)
at weblogic.servlet.internal.ServletOutputStreamImpl.writeStream(ServletOutputStreamImpl.java:498)
at weblogic.servlet.internal.ServletOutputStreamImpl.writeStream(ServletOutputStreamImpl.java:486)
at weblogic.servlet.FileServlet.sendFile(FileServlet.java:407)
at weblogic.servlet.FileServlet.doGetHeadPost(FileServlet.java:231)
at weblogic.servlet.FileServlet.service(FileServlet.java:170)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.nminnovation.nmf.images.ConverterFilter.doFilter(ConverterFilter.java:98)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.nminnovation.nmf.util.CacheControlFilter.doFilter(CacheControlFilter.java:50)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3368)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Lweblogic.security.acl.internal.AuthenticatedSubject;Lweblogic.security.acl.internal.AuthenticatedSubject;Ljava.security.PrivilegedAction;)Ljava.lang.Object;(Unknown Source)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2117)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2023)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1359)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)

OriginalL'auteur user201372 | 2009-11-03