/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Image streamin fra servlet problem
Fra : Dahl


Dato : 03-10-02 13:55

Hej

Jeg arbejder på et project som benytter Tomcat som webserver

Jeg har lavet en simple servlet som kan streame et jpg billede til en
browser. Den relevante del af koden er listed her:

---- CODE START ----

res.setContentType("image/jpg");
FileInputStream image_file = new FileInputStream(image_path);
JPEGImageDecoder image_decoder =
JPEGCodec.createJPEGDecoder(image_file);
BufferedImage buffered_image = image_decoder.decodeAsBufferedImage();
image_file.close();

JPEGImageEncoder image_encoder =
JPEGCodec.createJPEGEncoder(servletOutputStream);
image_encoder.encode(buffered_image);
servletOutputStream.flush();

---- CODE END ----

Når jeg loader en webside med et IMG tag der refererer til servlet'en bliver
billedet loaded som gforventet. Så servlet'en fungere.

Problemerne begynder hvis jeg refresh'er browseren får billedet er loaded
færdigt. Jeg går ud fra at det der sker er at browseren terminere
forbindelsen til servlet'en. Det bevirker at denn exception bliver genereret
af servletten:

----- EXCEPTION START -----

java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite(Native Method)
at java.net.SocketOutputStream.write(SocketOutputStream.java:83)
at
org.apache.tomcat.service.http.HttpResponseAdapter.endHeaders(HttpResponseAd
apter.java:124)
at
org.apache.tomcat.core.BufferedServletOutputStream.sendHeaders(BufferedServl
etOutputStream.java:126)
at
org.apache.tomcat.core.BufferedServletOutputStream.reallyFlush(BufferedServl
etOutputStream.java:236)
at
org.apache.tomcat.core.BufferedServletOutputStream.write(BufferedServletOutp
utStream.java:185)
at
sun.awt.image.codec.JPEGImageEncoderImpl.writeJPEGStream(Native Method)
at
sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.java:47
5)
at
sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.java:23
1)
at
com.dahl.ovds.webserver.servlets.EvidenceLoader.submit(EvidenceLoader.java:8
8)
at
com.dahl.common.servlets.HttpSubmit.doGet(HttpSubmit.java:123)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
at org.apache.tomcat.core.Handler.service(Handler.java:286)
at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:79
7)
at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
onnectionHandler.java:210)
at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
at java.lang.Thread.run(Thread.java:484)
java.io.IOException: reading encoded JPEG Stream
at
sun.awt.image.codec.JPEGImageEncoderImpl.writeJPEGStream(Native Method)
at
sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.java:47
5)
at
sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.java:23
1)
at
com.dahl.ovds.webserver.servlets.EvidenceLoader.submit(EvidenceLoader.java:8
8)
at
com.dahl.common.servlets.HttpSubmit.doGet(HttpSubmit.java:123)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
at org.apache.tomcat.core.Handler.service(Handler.java:286)
at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:79
7)
at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
onnectionHandler.java:210)
at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
at java.lang.Thread.run(Thread.java:484)

----- EXCEPTION END -----

Linien "EvidenceLoader.java:88" i exception'en er linien
"image_encoder.encode(buffered_image)" i servlet'en

Hvis jeg bliver ved med at fremprovokere exception'en går webservere
pludselig ned. Jeg får Windows fejl beskeden: "The application
javaw.exe has generated a critical error and will be shut down.."

Jeg har prøvet at fange exception'en i min servlet med webservren går stadig
ned.

Hvad er det der sker? Er det fordi Tiomcat ikke kan håndtere
java.net.SocketException når den streamer binære data? Hvad kan jeg gøre for
at forhindre at webseveren går ned?

Jeg er fuldstænding på bar bund så atl hjælp er velkommen.

På forhånd tak
Dahl




 
 
Frank Hahn (03-10-2002)
Kommentar
Fra : Frank Hahn


Dato : 03-10-02 14:19

"Dahl" <[SPAM]jc[REMOVE]@[remove]jai.com[spam]> wrote in message
news:3d9c3e12$0$10684$4d4eb98e@read.news.dk.uu.net...
> Hej
>
> Jeg arbejder på et project som benytter Tomcat som webserver
>
> Jeg har lavet en simple servlet som kan streame et jpg billede til en
> browser. Den relevante del af koden er listed her:

<snip>

> Hvis jeg bliver ved med at fremprovokere exception'en går webservere
> pludselig ned. Jeg får Windows fejl beskeden: "The application
> javaw.exe has generated a critical error and will be shut down.."
>
> Jeg har prøvet at fange exception'en i min servlet med webservren går
stadig
> ned.

Se DET er jo en skidt ting. Jeg arbejder selv med Tomcat og fejlen gives
også,
hvis en bruger sender et request og ikke kan klare ventetiden og bruger
Refresh.

Hvilken version af Tomcat benytter du ? (den information manglede)

/Frank






Dahl (04-10-2002)
Kommentar
Fra : Dahl


Dato : 04-10-02 08:23

Ups sorry. (o:



Det er version 3.2.1 af Tomcat. Jeg ved godt at den er oldgammel, men da den
er indlejret i vores java frontend application er den desværre ikke så let
at få opdateret/udskiftet.



Da tid samtidig ikke er det der er mest af i projektet ville det være fedt
at høre om det kan bekræftes at fejlen er blevet rettet i senere versioner.



Du siger at du har oplevet problemet med almindelige requests. Hvilken
Tomcat version var det?



Vh

Dahl


"Frank Hahn" <efgeho@hotmail.com> wrote in message
news:anhg02$2gb$1@sunsite.dk...
> "Dahl" <[SPAM]jc[REMOVE]@[remove]jai.com[spam]> wrote in message
> news:3d9c3e12$0$10684$4d4eb98e@read.news.dk.uu.net...
> > Hej
> >
> > Jeg arbejder på et project som benytter Tomcat som webserver
> >
> > Jeg har lavet en simple servlet som kan streame et jpg billede til en
> > browser. Den relevante del af koden er listed her:
>
> <snip>
>
> > Hvis jeg bliver ved med at fremprovokere exception'en går webservere
> > pludselig ned. Jeg får Windows fejl beskeden: "The application
> > javaw.exe has generated a critical error and will be shut down.."
> >
> > Jeg har prøvet at fange exception'en i min servlet med webservren går
> stadig
> > ned.
>
> Se DET er jo en skidt ting. Jeg arbejder selv med Tomcat og fejlen gives
> også,
> hvis en bruger sender et request og ikke kan klare ventetiden og bruger
> Refresh.
>
> Hvilken version af Tomcat benytter du ? (den information manglede)
>
> /Frank
>
>
>
>
>



Frank Hahn (04-10-2002)
Kommentar
Fra : Frank Hahn


Dato : 04-10-02 16:44

"Dahl" <[SPAM]jc[REMOVE]@[remove]jai.com[spam]> wrote in message
news:3d9d41ea$0$17385$4d4eb98e@read.news.dk.uu.net...
> Ups sorry. (o:
>
>
>
> Det er version 3.2.1 af Tomcat. Jeg ved godt at den er oldgammel, men da
den
> er indlejret i vores java frontend application er den desværre ikke så let
> at få opdateret/udskiftet.
>
>
>
> Da tid samtidig ikke er det der er mest af i projektet ville det være fedt
> at høre om det kan bekræftes at fejlen er blevet rettet i senere
versioner.
>
>
>
> Du siger at du har oplevet problemet med almindelige requests. Hvilken
> Tomcat version var det?

(Den som er bundlet med JBoss 2.4.4)

3.2.3, men den er ikke så vidt jeg ved crashed.
Men nu sender vi heller ikke så forfærdelig meget
binære data ud gennem den.

Men den får masser af socketexceptions, når brugeren
kapper forbindelsen. <- Det var problemet, sådan da.

Jeg kan desværre ikke hjælpe dig med svar på hvorvidt
problemet er blevet løst i de senere versioner.

God weekend,
/Frank




Jonathan Stein (03-10-2002)
Kommentar
Fra : Jonathan Stein


Dato : 03-10-02 14:32

Dahl wrote:

> Hvis jeg bliver ved med at fremprovokere exception'en går webservere
> pludselig ned. Jeg får Windows fejl beskeden: "The application
> javaw.exe has generated a critical error and will be shut down.."

Hmm, "javaw.exe"? Her er det bare "java.exe", der kører Tomcat.

M.v.h.

Jonathan

--
Nyt alternativ til egen server: JSP Enterprise hotel med adgang til
Enterprise Java Beans, egen Java Virtual Machine og egen IP-adresse
(giver mulighed for eget SSL-certifikat).
http://www.jsp-hotel.dk/



Dahl (04-10-2002)
Kommentar
Fra : Dahl


Dato : 04-10-02 08:26

Tomcat serveren (v 3.2.1) er indlejret i vores java frontend application og
det er i den forbindelse det er blevet valgt at benytte "javaw.exe". Men det
burde vel ikke gøre nogen forskel vel?

vh
Dahl

"Jonathan Stein" <jstein@image.dk> wrote in message
news:3D9C46D4.57DE144F@image.dk...
> Dahl wrote:
>
> > Hvis jeg bliver ved med at fremprovokere exception'en går webservere
> > pludselig ned. Jeg får Windows fejl beskeden: "The application
> > javaw.exe has generated a critical error and will be shut down.."
>
> Hmm, "javaw.exe"? Her er det bare "java.exe", der kører Tomcat.
>
> M.v.h.
>
> Jonathan
>
> --
> Nyt alternativ til egen server: JSP Enterprise hotel med adgang til
> Enterprise Java Beans, egen Java Virtual Machine og egen IP-adresse
> (giver mulighed for eget SSL-certifikat).
> http://www.jsp-hotel.dk/
>
>



Jonathan Stein (04-10-2002)
Kommentar
Fra : Jonathan Stein


Dato : 04-10-02 11:07

Dahl wrote:

> Tomcat serveren (v 3.2.1) er indlejret i vores java frontend application og
> det er i den forbindelse det er blevet valgt at benytte "javaw.exe". Men det
> burde vel ikke gøre nogen forskel vel?

Næ, det _burde_ vel ikke betyde noget... Det er lidt kedeligt at sidde med
problemer, som måske allerede er løst - derfor ville jeg da overveje at lave et
system, hvor I nemt kan opgradere med nye versioner af Tomcat.
Jeg har dog ikke noget kvalificeret gæt på om problemet skulle være løst.

M.v.h.

Jonathan

--
Nyt alternativ til egen server: JSP Enterprise hotel med adgang til
Enterprise Java Beans, egen Java Virtual Machine og egen IP-adresse
(giver mulighed for eget SSL-certifikat).
http://www.jsp-hotel.dk/



joje (07-02-2003)
Kommentar
Fra : joje


Dato : 07-02-03 15:14

"Dahl" skrev d. 03-10-02 13:55 dette indlæg :
> Hej
>
> Jeg arbejder på et project som benytter Tomcat som webserver
>
> Jeg har lavet en simple servlet som kan streame et jpg billede til en
> browser. Den relevante del af koden er listed her:
>
> ---- CODE START ----
>
> res.setContentType("image/jpg");
> FileInputStream image_file = new FileInputStream(image_path);
> JPEGImageDecoder image_decoder =
> JPEGCodec.createJPEGDecoder(image_file);
> BufferedImage buffered_image =
image_decoder.decodeAsBufferedImage();
> image_file.close();
>
> JPEGImageEncoder image_encoder =
> JPEGCodec.createJPEGEncoder(servletOutputStream);
> image_encoder.encode(buffered_image);
> servletOutputStream.flush();
>
> ---- CODE END ----
>
> Når jeg loader en webside med et IMG tag der refererer til servlet'en
bliver
> billedet loaded som gforventet. Så servlet'en fungere.
>
> Problemerne begynder hvis jeg refresh'er browseren får billedet er
loaded
> færdigt. Jeg går ud fra at det der sker er at browseren terminere
> forbindelsen til servlet'en. Det bevirker at denn exception bliver
genereret
> af servletten:
>
> ----- EXCEPTION START -----
>
> java.net.SocketException: Connection reset by peer: socket write error
> at java.net.SocketOutputStream.socketWrite(Native Method)
> at
java.net.SocketOutputStream.write(SocketOutputStream.java:83)
> at
>
org.apache.tomcat.service.http.HttpResponseAdapter.endHeaders(HttpRespon
seAd
> apter.java:124)
> at
>
org.apache.tomcat.core.BufferedServletOutputStream.sendHeaders(BufferedS
ervl
> etOutputStream.java:126)
> at
>
org.apache.tomcat.core.BufferedServletOutputStream.reallyFlush(BufferedS
ervl
> etOutputStream.java:236)
> at
>
org.apache.tomcat.core.BufferedServletOutputStream.write(BufferedServlet
Outp
> utStream.java:185)
> at
> sun.awt.image.codec.JPEGImageEncoderImpl.writeJPEGStream(Native
Method)
> at
>
sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.jav
a:47
> 5)
> at
>
sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.jav
a:23
> 1)
> at
>
com.dahl.ovds.webserver.servlets.EvidenceLoader.submit(EvidenceLoader.ja
va:8
> 8)
> at
> com.dahl.common.servlets.HttpSubmit.doGet(HttpSubmit.java:123)
> at
javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
>
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
> at
org.apache.tomcat.core.Handler.service(Handler.java:286)
> at
> org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
> at
>
org.apache.tomcat.core.ContextManager.internalService(ContextManager.jav
a:79
> 7)
> at
> org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
> at
>
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(H
ttpC
> onnectionHandler.java:210)
> at
>
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416
)
> at
>
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:49
8)
> at java.lang.Thread.run(Thread.java:484)
> java.io.IOException: reading encoded JPEG Stream
> at
> sun.awt.image.codec.JPEGImageEncoderImpl.writeJPEGStream(Native
Method)
> at
>
sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.jav
a:47
> 5)
> at
>
sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.jav
a:23
> 1)
> at
>
com.dahl.ovds.webserver.servlets.EvidenceLoader.submit(EvidenceLoader.ja
va:8
> 8)
> at
> com.dahl.common.servlets.HttpSubmit.doGet(HttpSubmit.java:123)
> at
javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
>
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
> at
org.apache.tomcat.core.Handler.service(Handler.java:286)
> at
> org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
> at
>
org.apache.tomcat.core.ContextManager.internalService(ContextManager.jav
a:79
> 7)
> at
> org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
> at
>
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(H
ttpC
> onnectionHandler.java:210)
> at
>
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416
)
> at
>
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:49
8)
> at java.lang.Thread.run(Thread.java:484)
>
> ----- EXCEPTION END -----
>
> Linien "EvidenceLoader.java:88" i exception'en er linien
> "image_encoder.encode(buffered_image)" i servlet'en
>
> Hvis jeg bliver ved med at fremprovokere exception'en går webservere
> pludselig ned. Jeg får Windows fejl beskeden: "The application
> javaw.exe has generated a critical error and will be shut down.."
>
> Jeg har prøvet at fange exception'en i min servlet med webservren går
stadig
> ned.
>
> Hvad er det der sker? Er det fordi Tiomcat ikke kan håndtere
> java.net.SocketException når den streamer binære data? Hvad kan jeg
gøre for
> at forhindre at webseveren går ned?
>
> Jeg er fuldstænding på bar bund så atl hjælp er velkommen.
>
> På forhånd tak
> Dahl
>
>
>

Jeg har løst problemet ved at lave return; eller flush.

/Johnny

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste