Christoph,
How is the attachment constructed? Is this something that is a byte[] in the jaxb beans or is it an Image or a DataHandler or what? That may help narrow down that cause a bit. All we do is iterator over the attachments, write out the mime headers, then call: att.getDataHandler().writeTo(out); Also, what version of activation are you using? Assuming the latest geronimo-specs activation jar, from that stack trace, line 90 is: is.close() Thus, an NPE would occur there if getInputStream() returns null which would occur if: ds.getInputStream(); returns null. Thus, I guess I'd need to know what the DataSource is. Dan On Friday 11 April 2008, [EMAIL PROTECTED] wrote: > Hi List, > > I'm relatively new to Apache CXF and managed to implement a Webservice > using JAX-WS which returns MTOM attachments. My service connects to a > Webserver and gets the content of the MTOM attachment by reading a > Java HTTPConnection. Sometimes there seems to be no content in the > HTTPConnection inputStream, so I implemented a check for this case > which throws an exception. > > At a first glance everything is ok but when I do some load test with > SoapUI I get this exception in the tomcat log: > > java.lang.NullPointerException > at javax.activation.DataHandler.writeTo(DataHandler.java:90) > at > org.apache.cxf.attachment.AttachmentSerializer.writeAttachments(Attach >mentSerializer.java:129) at > org.apache.cxf.interceptor.AttachmentOutInterceptor$AttachmentOutEndin >gInterceptor.handleMessage(AttachmentOutInterceptor.java:77) at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto >rChain.java:220) at > org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(Outg >oingChainInterceptor.java:74) at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto >rChain.java:220) at > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitia >tionObserver.java:77) at > org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDest >ination.java:92) at > org.apache.cxf.transport.servlet.ServletController.invokeDestination(S >ervletController.java:213) at > org.apache.cxf.transport.servlet.ServletController.invoke(ServletContr >oller.java:150) at > org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXF >Servlet.java:170) at > org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXF >Servlet.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(Appli >cationFilterChain.java:269) at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi >lterChain.java:188) at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVa >lve.java:213) at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextVa >lve.java:174) at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticat >orBase.java:525) at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.ja >va:127) at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.ja >va:117) at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValv >e.java:108) at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java >:174) at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java: >874) at > org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.pr >ocessConnection(Http11BaseProtocol.java:665) at > org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoi >nt.java:528) at > org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFoll >owerWorkerThread.java:81) at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPo >ol.java:689) at java.lang.Thread.run(Thread.java:595) > 11.04.2008 16:18:33 org.apache.cxf.phase.PhaseInterceptorChain > doIntercept INFO: Interceptor has thrown exception, unwinding now > org.apache.cxf.interceptor.Fault: Error writing to XMLStreamWriter. > at > org.apache.cxf.binding.soap.interceptor.Soap11FaultOutInterceptor.hand >leMessage(Soap11FaultOutInterceptor.java:140) at > org.apache.cxf.binding.soap.interceptor.Soap11FaultOutInterceptor.hand >leMessage(Soap11FaultOutInterceptor.java:43) at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto >rChain.java:220) at > org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessa >ge(AbstractFaultChainInitiatorObserver.java:96) at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto >rChain.java:254) at > org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(Outg >oingChainInterceptor.java:74) at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto >rChain.java:220) at > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitia >tionObserver.java:77) at > org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDest >ination.java:92) at > org.apache.cxf.transport.servlet.ServletController.invokeDestination(S >ervletController.java:213) at > org.apache.cxf.transport.servlet.ServletController.invoke(ServletContr >oller.java:150) at > org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXF >Servlet.java:170) at > org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXF >Servlet.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(Appli >cationFilterChain.java:269) at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi >lterChain.java:188) at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVa >lve.java:213) at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextVa >lve.java:174) at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticat >orBase.java:525) at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.ja >va:127) at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.ja >va:117) at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValv >e.java:108) at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java >:174) at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java: >874) at > org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.pr >ocessConnection(Http11BaseProtocol.java:665) at > org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoi >nt.java:528) at > org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFoll >owerWorkerThread.java:81) at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPo >ol.java:689) at java.lang.Thread.run(Thread.java:595) > Caused by: javax.xml.stream.XMLStreamException: Trying to output > second root, <soap:Fault> > at > com.ctc.wstx.sw.BaseStreamWriter.throwOutputError(BaseStreamWriter.jav >a:1473) at > com.ctc.wstx.sw.BaseStreamWriter.throwOutputError(BaseStreamWriter.jav >a:1480) at > com.ctc.wstx.sw.BaseStreamWriter.reportNwfStructure(BaseStreamWriter.j >ava:1508) at > com.ctc.wstx.sw.BaseNsStreamWriter.checkStartElement(BaseNsStreamWrite >r.java:444) at > com.ctc.wstx.sw.SimpleNsStreamWriter.writeStartOrEmpty(SimpleNsStreamW >riter.java:260) at > com.ctc.wstx.sw.BaseNsStreamWriter.writeStartElement(BaseNsStreamWrite >r.java:319) at > org.apache.cxf.binding.soap.interceptor.Soap11FaultOutInterceptor.hand >leMessage(Soap11FaultOutInterceptor.java:71) ... 29 more > > Can anybody explain me what happens here and how I can change my code > this exception disappears? > > Help is appreciated, > Christoph -- J. Daniel Kulp Principal Engineer, IONA [EMAIL PROTECTED] http://www.dankulp.com/blog
