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)
 > > at Oracle.DataAccess.Client.OracleException.HandleError(Int32 > > errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, > > OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck)
 > > at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
 > > 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[] )
 > > at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object > > instance, Object[] inputs, Object[]& outputs)
 > > at > > > System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(M > e > > ssageRpc& > > rpc)
 > > at > > > System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessa > ge > > 5(MessageRpc& > > rpc)
 > > at > > > System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessa > ge > > 1(MessageRpc& > > rpc)
 > > 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*
