Hi Sergey,

Yes, your proposal makes sense.
MessageID is optional element in ws-addressing and this is a valid case to have 
non-null addressing properties without MessageID.
Could you please create an issue for that?
Patch is welcome as well :)

Regards,
Andrei.

> -----Original Message-----
> From: Sergey Maslov [mailto:[email protected]]
> Sent: Freitag, 25. Dezember 2015 08:03
> To: [email protected]
> Subject: Re: NPE in getMessageId() while receiving soap fault response
> 
> Hi all!
> NPE occurs in the following line:
> return (addrProp != null) ? addrProp.getMessageID().getValue() :
> UUID.randomUUID().toString();
> 
> We have non-null addrProp, but addrProp.getMessageID() return null.
> As I understood the idea, if we have no message id, we create random UUID.
> So could this be fixed by adding messageId null check?
> 
> 
> On Thu, Dec 24, 2015 at 1:24 PM, Sergey Maslov <[email protected]>
> wrote:
> 
> > Hi!
> > I call external service via CXF client and I want to log outgoing and
> > incoming messages.
> > Requests logs successfully, but I could not log response if response
> > contains SoapFault. I get NPE instead.
> > Could you help me to log the response?
> >
> > Exception and response are listed below.
> >
> > java.lang.NullPointerException: null
> >         at
> >
> org.apache.cxf.ext.logging.event.DefaultLogEventMapper.getMessageId(De
> > faultLogEventMapper.java:194)
> > ~[cxf-rt-features-logging-3.1.4.jar:3.1.4]
> >         at
> >
> org.apache.cxf.ext.logging.event.DefaultLogEventMapper.map(DefaultLogE
> > ventMapper.java:61) ~[cxf-rt-features-logging-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.ext.logging.LoggingInInterceptor.handleMessage(LoggingI
> > nInterceptor.java:46) ~[cxf-rt-features-logging-3.1.4.jar:3.1.4]
> >         at
> >
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto
> > rChain.java:308)
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessa
> > ge(AbstractFaultChainInitiatorObserver.java:112)
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMe
> > ssage(CheckFaultInterceptor.java:69)
> > [cxf-rt-bindings-soap-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMe
> > ssage(CheckFaultInterceptor.java:34)
> > [cxf-rt-bindings-soap-3.1.4.jar:3.1.4]
> >         at
> >
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto
> > rChain.java:308)
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:798)
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> >
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleR
> e
> > sponseInternal(HTTPConduit.java:1669)
> > [cxf-rt-transports-http-3.1.4.jar:3.1.4]
> >         at
> >
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleR
> e
> > sponse(HTTPConduit.java:1550) [cxf-rt-transports-http-3.1.4.jar:3.1.4]
> >         at
> >
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(H
> T
> > TPConduit.java:1347) [cxf-rt-transports-http-3.1.4.jar:3.1.4]
> >         at
> >
> org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteO
> ut
> > putStream.java:56)
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> >
> org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:215
> > )
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56
> > )
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:651)
> > [cxf-rt-transports-http-3.1.4.jar:3.1.4]
> >         at
> >
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndi
> n
> > gInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> >
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto
> > rChain.java:308)
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514)
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:324)
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:277)
> > [cxf-core-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
> > [cxf-rt-frontend-simple-3.1.4.jar:3.1.4]
> >         at
> > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:139
> > ) [cxf-rt-frontend-jaxws-3.1.4.jar:3.1.4]
> >         at com.sun.proxy.$Proxy142.getEvakInfo(Unknown Source) [na:na]
> >         at com.smaslov.service.Service.doLoad(LoadService.java:102)
> > [classes/:na]
> >         at
> > com.smaslov.service.Service.loadRawData(LoadService.java:91)
> > [classes/:na]
> >         at
> > com.smaslov.service.job.LoadingDataJob$1.run(LoadJob.java:53)
> > [classes/:na]
> >         at
> > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471
> > )
> > [na:1.7.0_55]
> >         at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> > [na:1.7.0_55]
> >         at
> >
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.a
> > ccess$201(ScheduledThreadPoolExecutor.java:178)
> > [na:1.7.0_55]
> >         at
> > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.r
> > un(ScheduledThreadPoolExecutor.java:292)
> > [na:1.7.0_55]
> >         at
> > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.j
> > ava:1145)
> > [na:1.7.0_55]
> >         at
> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.
> > java:615)
> > [na:1.7.0_55]
> >         at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55]
> >
> >
> > The response message:
> >
> >
> > <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope";
> xmlns:a="
> > http://www.w3.org/2005/08/addressing";><s:Header><a:Action
> > s:mustUnderstand="1">
> >
> http://schemas.microsoft.com/net/2005/12/windowscommunicationfounda
> tio
> > n/dispatcher/fault</a:Action><a:RelatesTo>urn:uuid:6cc79b4c-d097-4270-
> > a153-
> e40d008cfbc1</a:RelatesTo></s:Header><s:Body><s:Fault><s:Code><s:
> > Value>s:Receiver</s:Value><s:Subcode><s:Value
> > xmlns:a="
> >
> http://schemas.microsoft.com/net/2005/12/windowscommunicationfounda
> tio
> > n/dispatcher">a:InternalServiceFault</s:Value></s:Subcode></s:Code><s:
> > Reason><s:Text
> > xml:lang="ru-RU">ORA-01422: exact fetch returns more than requested
> > number of rows
> > ORA-06512: at "SCHEMA.TBL", line 115
> > ORA-06512: at line 1    at
> > Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32
> > errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx*
> > pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)&#xD;
> >    at Oracle.DataAccess.Client.OracleException.HandleError(Int32
> > errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx,
> > OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck)&#xD;
> >    at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()&#xD;
> >    at prognoz.siv.api.EvakService.Evak.DoRequest(EvakRequest
> > request)</s:Text></s:Reason><s:Detail><ExceptionDetail xmlns="
> > http://schemas.datacontract.org/2004/07/System.ServiceModel"; xmlns:i="
> > http://www.w3.org/2001/XMLSchema-instance";><HelpLink
> > i:nil="true"/><InnerException><HelpLink i:nil="true"/><InnerException
> > i:nil="true"/><Message>ORA-01422: exact fetch returns more than
> > requested number of rows
> >    at SyncInvokeServiceInfo(Object , Object[] , Object[] )&#xD;
> >    at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object
> > instance, Object[] inputs, Object[]&amp; outputs)&#xD;
> >    at
> >
> System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(M
> e
> > ssageRpc&amp;
> > rpc)&#xD;
> >    at
> >
> System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessa
> ge
> > 5(MessageRpc&amp;
> > rpc)&#xD;
> >    at
> >
> System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessa
> ge
> > 1(MessageRpc&amp;
> > rpc)&#xD;
> >    at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean
> >
> isOperationContextSet)</StackTrace><Type>System.Exception</Type></Ex
> ce
> > ptionDetail></s:Detail></s:Fault></s:Body></s:Envelope>
> >
> >
> >
> > --
> > *Sergey Maslov*
> >
> >
> >
> 
> 
> --
> *Sergey Maslov*

Reply via email to