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

Reply via email to