Hi there,
I created a web service that returns DataHandler created by
ByteArrayDataSource. The DataSource has PipedInputStream as its member
field. I fill in the stream in a different thread. The main thread
returns as soon as the new thread is created. The stream is closed after
it is filled.
I am getting the following exception in Tomcat console and the client
only gets SOAP envelope without the attachment (i.e: DataHandler).
I tried to not close the pipe, but that made the server just waits and
does not get back to the client.
I am using Tomcat 4.0.3 and Axis beta 3.
Does anyone know why this is happening? I am pretty sure this happens
when Axis tries to send DataHandler back to client. I have tested the service
itself (without connecting to Axis) and it worked fine.
Any suggestions would be very appreciated.
Sincerely,
Ignatia
- java.io.IOException:
java.io.IOException: Pipe closed
at java.io.PipedInputStream.read(PipedInputStream.java:210)
at java.io.PipedInputStream.read(PipedInputStream.java:274)
at java.io.InputStream.read(InputStream.java:88)
at javax.activation.DataHandler.writeTo(DataHandler.java:299)
at
javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1089)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:635)
at
javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:233)
at
com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:68
)
at
javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:84
9)
at javax.activation.DataHandler.writeTo(DataHandler.java:305)
at
javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1089)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1527)
at
org.apache.axis.attachments.MimeUtils.writeToMultiPartStream(MimeUtil
s.java:202)
at
org.apache.axis.attachments.AttachmentsImpl.writeContentToStream(Atta
chmentsImpl.java:319)
at org.apache.axis.Message.writeContentToStream(Message.java:352)
at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:62
9)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:243)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline
.java:566)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:472)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:190)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline
.java:566)
at
org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve
.java:246)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline
.java:564)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:472)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:
2347)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:180)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline
.java:566)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatche
rValve.java:170)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline
.java:564)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:170)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline
.java:564)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
468)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline
.java:564)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:472)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:174)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline
.java:566)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:472)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcesso
r.java:1027)
at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.ja
va:1125)
at java.lang.Thread.run(Thread.java:536)