You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by "S.Bykov" <se...@mail.ru> on 2009/03/04 17:22:24 UTC

Re: SOAPEXCEPTION when using SAAJOutInterceptor



Josef.Eisele wrote:
> 
> Hi,
> 
> we implemented a webservice under Geronimo using CXF. We transmit almost 
> identical data e.g. 4 times. 3 times everything works fine, but in one 
> case we get the following error:
> 
> com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to get header stream 
> in saveChanges
> (full stack trace further down)
> 
> When we uncomment the( WS-Security-Stuff) following client code:
> 
> //              org.apache.cxf.endpoint.Endpoint cxfEndpoint = 
> client.getEndpoint();
> //              Map<String,Object> outProps = new 
> HashMap<String,Object>();
> //              outProps.put(WSHandlerConstants.ACTION, 
> WSHandlerConstants.USERNAME_TOKEN 
> //                              + " " + WSHandlerConstants.SIGNATURE);
> 
> //              outProps.put(WSHandlerConstants.USER, "system");
> //              outProps.put(WSHandlerConstants.PASSWORD_TYPE, 
> WSConstants.PW_DIGEST);
> //              outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, 
> ClientPasswordCallback.class.getName());
> //              outProps.put(WSHandlerConstants.SIG_PROP_FILE, 
> "client_sign.properties");
> //
> //
> //              WSS4JOutInterceptor wssOut = new 
> WSS4JOutInterceptor(outProps);
> //              cxfEndpoint.getOutInterceptors().add(wssOut);
> //              cxfEndpoint.getOutInterceptors().add(new 
> SAAJOutInterceptor()); // 2.0.x only; not needed in 2.1+
> 
> everything works fine. We tried more than 3000 calls without any error.
> 
>  Any ideas ??
> 
> 
> ------Geworfene Exception(s): javax.xml.ws.soap.SOAPFaultException: 
> SOAPEXCEPTION
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:175)
> $Proxy292.getData(Unknown Source)
> mypath.ws.SourceReadWSClientImpl.callWebservice(SourceReadWSClientImpl.java:360)
> mypath.ws.SourceReadWSClientImpl.leseDatenbestand(SourceReadWSClientImpl.java:144)
> mypath.schedule.SourceReadWSQuartzJob.execute(SourceReadWSQuartzJob.java:36)
> org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:531)
> ------Geworfene Exception(s): org.apache.cxf.binding.soap.SoapFault: 
> SOAPEXCEPTION
> mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:122)
> mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:103)
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
> $Proxy292.getData(Unknown Source)
> mypath.ws.SourceReadWSClientImpl.callWebservice(SourceReadWSClientImpl.java:360)
> mypath.ws.SourceReadWSClientImpl.leseDatenbestand(SourceReadWSClientImpl.java:144)
> mypath.schedule.SourceReadWSQuartzJob.execute(SourceReadWSQuartzJob.java:36)
> org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:531)
> ------Geworfene Exception(s): 
> com.sun.xml.messaging.saaj.SOAPExceptionImpl: Error during saving a 
> multipart message
> com.sun.xml.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:1126)
> com.sun.xml.messaging.saaj.soap.MessageImpl.writeTo(MessageImpl.java:1218)
> mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:116)
> mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:103)
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
> $Proxy292.getData(Unknown Source)
> mypath.ws.SourceReadWSClientImpl.callWebservice(SourceReadWSClientImpl.java:360)
> mypath.ws.SourceReadWSClientImpl.leseDatenbestand(SourceReadWSClientImpl.java:144)
> mypath.schedule.SourceReadWSQuartzJob.execute(SourceReadWSQuartzJob.java:36)
> org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:531)
> ------Geworfene Exception(s): 
> com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to get header stream 
> in saveChanges: 
> com.sun.xml.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:1096)
> com.sun.xml.messaging.saaj.soap.MessageImpl.writeTo(MessageImpl.java:1218)
> mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:116)
> mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:103)
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
> $Proxy292.getData(Unknown Source)
> mypath.ws.SourceReadWSClientImpl.callWebservice(SourceReadWSClientImpl.java:360)
> mypath.ws.SourceReadWSClientImpl.leseDatenbestand(SourceReadWSClientImpl.java:144)
> mypath.schedule.SourceReadWSQuartzJob.execute(SourceReadWSQuartzJob.java:36)
> org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:531)
> ------Geworfene Exception(s): java.io.IOException: 
> org.apache.xml.serializer.ToXMLSAXHandler
> com.sun.xml.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.java:298)
> com.sun.xml.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.java:309)
> com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getContentAsStream(SOAPPartImpl.java:305)
> com.sun.xml.messaging.saaj.soap.MessageImpl.getHeaderBytes(MessageImpl.java:942)
> com.sun.xml.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:1093)
> com.sun.xml.messaging.saaj.soap.MessageImpl.writeTo(MessageImpl.java:1218)
> mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:116)
> mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJOutInterceptor.java:103)
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
> $Proxy292.getData(Unknown Source)
> mypath.ws.SourceReadWSClientImpl.callWebservice(SourceReadWSClientImpl.java:360)
> mypath.ws.SourceReadWSClientImpl.leseDatenbestand(SourceReadWSClientImpl.java:144)
> mypath.schedule.SourceReadWSQuartzJob.execute(SourceReadWSQuartzJob.java:36)
> org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:531)
> 
> - Josef
> 
> BGS Beratungsgesellschaft 
> Software Systemplanung AG 
>   
>   
>   
>   
> Niederlassung Rhein/Main 
> Robert-Koch-Straße 41 
> 55129 Mainz 
> Fon: +49 (0) 6131 / 914-0 
> Fax: +49 (0) 6131 / 914-400 
> www.bgs-ag.de 
> Geschäftssitz Mainz 
> Registergericht 
> Amtsgericht Mainz 
> HRB 62 50 
>   
> Aufsichtsratsvorsitzender 
> Klaus Hellwig 
> Vorstand 
> Hanspeter Gau 
> Hermann Kiefer 
> Nils Manegold 
> 
> 
>   
> 


HI.

I have same problem.
I have web cxf web service under Geronimo.

I register some SOAP handlers, which check security data in SOAP headers.

All works fine until redeploy application. When i redeploy application - i
get same errors.

But when I restart Geronmo -- application work fine again until redeploy.

For current time I didn't find correct solution.

There were some ideas to use xalan 2.7 and xerces 2.8.1 but this didn't help
in my case.
May be it will be helpfully for you?!

Best Regards
Sergey Bykov
mail : sergey.bykov85@mail.ru
-- 
View this message in context: http://www.nabble.com/SOAPEXCEPTION-when-using-SAAJOutInterceptor-tp19916271p22333376.html
Sent from the cxf-user mailing list archive at Nabble.com.


Re: SOAPEXCEPTION when using SAAJOutInterceptor

Posted by Daniel Kulp <dk...@apache.org>.
I haven't seen this redeploying on tomcat.   It SOUNDS like a Geronimo 
classloader issuer.  Have you asked on the Geromino users list?   They might 
be more helpful.  :-(

Dan

On Wed March 4 2009 11:22:24 am S.Bykov wrote:
> Josef.Eisele wrote:
> > Hi,
> >
> > we implemented a webservice under Geronimo using CXF. We transmit almost
> > identical data e.g. 4 times. 3 times everything works fine, but in one
> > case we get the following error:
> >
> > com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to get header stream
> > in saveChanges
> > (full stack trace further down)
> >
> > When we uncomment the( WS-Security-Stuff) following client code:
> >
> > //              org.apache.cxf.endpoint.Endpoint cxfEndpoint =
> > client.getEndpoint();
> > //              Map<String,Object> outProps = new
> > HashMap<String,Object>();
> > //              outProps.put(WSHandlerConstants.ACTION,
> > WSHandlerConstants.USERNAME_TOKEN
> > //                              + " " + WSHandlerConstants.SIGNATURE);
> >
> > //              outProps.put(WSHandlerConstants.USER, "system");
> > //              outProps.put(WSHandlerConstants.PASSWORD_TYPE,
> > WSConstants.PW_DIGEST);
> > //              outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS,
> > ClientPasswordCallback.class.getName());
> > //              outProps.put(WSHandlerConstants.SIG_PROP_FILE,
> > "client_sign.properties");
> > //
> > //
> > //              WSS4JOutInterceptor wssOut = new
> > WSS4JOutInterceptor(outProps);
> > //              cxfEndpoint.getOutInterceptors().add(wssOut);
> > //              cxfEndpoint.getOutInterceptors().add(new
> > SAAJOutInterceptor()); // 2.0.x only; not needed in 2.1+
> >
> > everything works fine. We tried more than 3000 calls without any error.
> >
> >  Any ideas ??
> >
> >
> > ------Geworfene Exception(s): javax.xml.ws.soap.SOAPFaultException:
> > SOAPEXCEPTION
> > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:175)
> > $Proxy292.getData(Unknown Source)
> > mypath.ws.SourceReadWSClientImpl.callWebservice(SourceReadWSClientImpl.ja
> >va:360)
> > mypath.ws.SourceReadWSClientImpl.leseDatenbestand(SourceReadWSClientImpl.
> >java:144)
> > mypath.schedule.SourceReadWSQuartzJob.execute(SourceReadWSQuartzJob.java:
> >36) org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> > org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:
> >531) ------Geworfene Exception(s): org.apache.cxf.binding.soap.SoapFault:
> > SOAPEXCEPTION
> > mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJO
> >utInterceptor.java:122)
> > mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJO
> >utInterceptor.java:103)
> > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh
> >ain.java:207)
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
> > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
> > $Proxy292.getData(Unknown Source)
> > mypath.ws.SourceReadWSClientImpl.callWebservice(SourceReadWSClientImpl.ja
> >va:360)
> > mypath.ws.SourceReadWSClientImpl.leseDatenbestand(SourceReadWSClientImpl.
> >java:144)
> > mypath.schedule.SourceReadWSQuartzJob.execute(SourceReadWSQuartzJob.java:
> >36) org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> > org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:
> >531) ------Geworfene Exception(s):
> > com.sun.xml.messaging.saaj.SOAPExceptionImpl: Error during saving a
> > multipart message
> > com.sun.xml.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:
> >1126)
> > com.sun.xml.messaging.saaj.soap.MessageImpl.writeTo(MessageImpl.java:1218
> >)
> > mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJO
> >utInterceptor.java:116)
> > mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJO
> >utInterceptor.java:103)
> > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh
> >ain.java:207)
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
> > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
> > $Proxy292.getData(Unknown Source)
> > mypath.ws.SourceReadWSClientImpl.callWebservice(SourceReadWSClientImpl.ja
> >va:360)
> > mypath.ws.SourceReadWSClientImpl.leseDatenbestand(SourceReadWSClientImpl.
> >java:144)
> > mypath.schedule.SourceReadWSQuartzJob.execute(SourceReadWSQuartzJob.java:
> >36) org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> > org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:
> >531) ------Geworfene Exception(s):
> > com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to get header stream
> > in saveChanges:
> > com.sun.xml.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:
> >1096)
> > com.sun.xml.messaging.saaj.soap.MessageImpl.writeTo(MessageImpl.java:1218
> >)
> > mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJO
> >utInterceptor.java:116)
> > mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJO
> >utInterceptor.java:103)
> > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh
> >ain.java:207)
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
> > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
> > $Proxy292.getData(Unknown Source)
> > mypath.ws.SourceReadWSClientImpl.callWebservice(SourceReadWSClientImpl.ja
> >va:360)
> > mypath.ws.SourceReadWSClientImpl.leseDatenbestand(SourceReadWSClientImpl.
> >java:144)
> > mypath.schedule.SourceReadWSQuartzJob.execute(SourceReadWSQuartzJob.java:
> >36) org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> > org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:
> >531) ------Geworfene Exception(s): java.io.IOException:
> > org.apache.xml.serializer.ToXMLSAXHandler
> > com.sun.xml.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.jav
> >a:298)
> > com.sun.xml.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.jav
> >a:309)
> > com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getContentAsStream(SOAPPartI
> >mpl.java:305)
> > com.sun.xml.messaging.saaj.soap.MessageImpl.getHeaderBytes(MessageImpl.ja
> >va:942)
> > com.sun.xml.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:
> >1093)
> > com.sun.xml.messaging.saaj.soap.MessageImpl.writeTo(MessageImpl.java:1218
> >)
> > mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJO
> >utInterceptor.java:116)
> > mypackage.SAAJOutInterceptor$SAAJOutEndingInterceptor.handleMessage(SAAJO
> >utInterceptor.java:103)
> > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh
> >ain.java:207)
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
> > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
> > $Proxy292.getData(Unknown Source)
> > mypath.ws.SourceReadWSClientImpl.callWebservice(SourceReadWSClientImpl.ja
> >va:360)
> > mypath.ws.SourceReadWSClientImpl.leseDatenbestand(SourceReadWSClientImpl.
> >java:144)
> > mypath.schedule.SourceReadWSQuartzJob.execute(SourceReadWSQuartzJob.java:
> >36) org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> > org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:
> >531)
> >
> > - Josef
> >
> > BGS Beratungsgesellschaft
> > Software Systemplanung AG
> >
> >
> >
> >
> > Niederlassung Rhein/Main
> > Robert-Koch-Straße 41
> > 55129 Mainz
> > Fon: +49 (0) 6131 / 914-0
> > Fax: +49 (0) 6131 / 914-400
> > www.bgs-ag.de
> > Geschäftssitz Mainz
> > Registergericht
> > Amtsgericht Mainz
> > HRB 62 50
> >
> > Aufsichtsratsvorsitzender
> > Klaus Hellwig
> > Vorstand
> > Hanspeter Gau
> > Hermann Kiefer
> > Nils Manegold
>
> HI.
>
> I have same problem.
> I have web cxf web service under Geronimo.
>
> I register some SOAP handlers, which check security data in SOAP headers.
>
> All works fine until redeploy application. When i redeploy application - i
> get same errors.
>
> But when I restart Geronmo -- application work fine again until redeploy.
>
> For current time I didn't find correct solution.
>
> There were some ideas to use xalan 2.7 and xerces 2.8.1 but this didn't
> help in my case.
> May be it will be helpfully for you?!
>
> Best Regards
> Sergey Bykov
> mail : sergey.bykov85@mail.ru

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog