Thanks a lot Dan.That helps/works.
But when the soap attachment is too long i see the following exception on 
the server, when i invoke an other service after the attachment 
service.Any clue?

--------------------------------------
<ns1:Fault 
xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/";><faultcode>ns1
Server</faultcode><faultstring>Exception occurred while marshalling 
Dispatch ob
ect to 
stream</faultstring></ns1:Fault>--------------------------------------

Apr 30, 2008 4:47:29 PM org.apache.cxf.phase.PhaseInterceptorChain 
doIntercept
INFO: Interceptor has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not send Message.
        at 
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEnd
ngInterceptor.handleMessage(MessageSenderInterceptor.java:64)
        at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercep
orChain.java:207)
        at 
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMes
age(AbstractFaultChainInitiatorObserver.java:90)
        at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercep
orChain.java:224)
        at 
org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(Ou
goingChainInterceptor.java:74)
        at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercep
orChain.java:207)
        at 
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInit
ationObserver.java:73)
        at 
org.apache.cxf.transport.servlet.ServletDestination.doMessage(Servle
Destination.java:79)
        at 
org.apache.cxf.transport.servlet.ServletController.invokeDestination
ServletController.java:256)
        at 
org.apache.cxf.transport.servlet.ServletController.invoke(ServletCon
roller.java:160)
        at 
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractC
FServlet.java:170)
        at 
org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractC
FServlet.java:148)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(App
icationFilterChain.java:269)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(Application
ilterChain.java:188)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapper
alve.java:213)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContext
alve.java:174)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.
ava:127)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.
ava:117)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVa
ve.java:108)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.ja
a:151)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.jav
:874)
        at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.
rocessConnection(Http11BaseProtocol.java:665)
        at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndp
int.java:528)
        at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFo
lowerWorkerThread.java:81)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(Thread
ool.java:689)
        at java.lang.Thread.run(Thread.java:595)
Caused by: ClientAbortException:  java.net.SocketException: Connection 
reset by
peer: socket write error
        at 
org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuff
r.java:366)
        at 
org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432)
        at 
org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java
314)
        at 
org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:2
8)
        at 
org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutputS
ream.java:104)
        at 
org.apache.cxf.transport.http.AbstractHTTPDestination$WrappedOutputS
ream.close(AbstractHTTPDestination.java:426)
        at 
org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteO
tputStream.java:47)
        at 
org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:1
7)
        at 
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:
6)
        at 
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEnd
ngInterceptor.handleMessage(MessageSenderInterceptor.java:62)
        ... 27 more
Caused by: java.net.SocketException: Connection reset by peer: socket 
write err
r
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at 
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at 
org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(Interna
OutputBuffer.java:747)
        at 
org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432)
        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347)
        at 
org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuff
r.doWrite(InternalOutputBuffer.java:770)
        at 
org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(Chunked
utputFilter.java:124)
        at 
org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutput
uffer.java:580)
        at org.apache.coyote.Response.doWrite(Response.java:560)
        at 
org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuff
r.java:361)
        ... 36 more

thanks and regards,
Bharath

Daniel Kulp <[EMAIL PROTECTED]> wrote on 04/30/2008 04:11:05 PM:

> 
> 
> Assuming you added the interceptor onto the clients IN chain, it should 
> add them to the response context.  That said, it won't be a 
> Map<String<List<String>>.    It will be a "List<Attachment>" 
> (technically, a LazyAttachmentCollection).   Get the responseContext 
> EntrySet iterator and iterate over what is in there.   That might help.
> 
> (BTW: the other option would be to have the interceptor stick the 
> Attachment map into a public ThreadLocal or something that can be 
> retrieved by the client code.)
> 
> > And can you please let me know the maximum size limit of a SOAP
> > attachment in CXF.
> 
> Honestly, I don't think there is one.   Once the attachment gets over a 
> certain size (default is 100K), if we need to unstream it off the wire 
> immediately (example, to get the third attachment when the current wire 
> position is on the second one), we spool it to temp files on disk. 
> Thus, it may depend on the file system. 
> 
> Dan
> 
> 
> On Wednesday 30 April 2008, Bharath Thippireddy wrote:
> > Dan,
> >
> > Does the work around really work.We retrieve the attachements from the
> > message object and assign them on the same object.Does this add them
> > to the request or the response contexts?.I could see the attachments
> > coming in on the interceptor but not on the client yet.
> >
> > http://www.nabble.com/Re:-SoapWithAttachments-p16500116.html
> >
> > message.put("ATTACHMENTS", message.getAttachments());
> >
> > Map<String,List<String>> attachments = (Map<String,List<String>>)
> > requestContext.get("ATTACHMENTS");
> > or
> > Map<String,List<String>> attachments = (Map<String,List<String>>)
> > responseContext.get("ATTACHMENTS");
> >
> > still returns null.
> >
> > And can you please let me know the maximum size limit of a SOAP
> > attachment in CXF.
> >
> > thanks and regards,
> > Bharath
> >
> > Daniel Kulp <[EMAIL PROTECTED]> wrote on 04/29/2008 03:04:25 PM:
> > > Unfortunately, right now, there isn't.   About a month ago, I dug
> > > into this a little bit:
> > > http://www.nabble.com/Re:-SoapWithAttachments-p16500116.html
> > >
> > > There is a workaround there.   Could you log a feature request in
> > > Jira
> >
> > to
> >
> > > make sure it's tracked?
> > >
> > > Thanks!
> > > Dan
> > >
> > > On Tuesday 29 April 2008, Bharath Thippireddy wrote:
> > > > How can we retrieve the soap attachments on the CXF Client.When i
> > > > try the following it returns a null.
> > > >
> > > > BindingProvider bp = (BindingProvider)port;
> > > > java.util.Map<String,Object> responseContext =
> > > > bp.getResponseContext();
> > > > (Map<String,List<String>>)responseContext.get(MessageContext.
> > > > INBOUND_MESSAGE_ATTACHMENTS)
> > > >
> > > > thanks and regards,
> > > > Bharath
> > >
> > > --
> > > J. Daniel Kulp
> > > Principal Engineer, IONA
> > > [EMAIL PROTECTED]
> > > http://www.dankulp.com/blog
> 
> 
> 
> -- 
> J. Daniel Kulp
> Principal Engineer, IONA
> [EMAIL PROTECTED]
> http://www.dankulp.com/blog
> 

Reply via email to