Hi, I have a problem with detecting unmarshalling exceptions (on server side) when invoking one-way operations on soap service built upon cxf.
For example, when client sends enpty element with type xsd:date, or some invalid number in xsd:integer element, somewhere on chain DocLiteralInInterceptor.handleMessage() gets invoked, and from within this method DataReader<XMLStreamReader>.read() is called. This call fails and message gets unwinded from within PhaseInterceptorChain.doIntercept(). Client receives HTTP 200 :OK status (instead of HTTP 202: Accepted) and on server side there is no way for service logic to detect there was some soap message sent at all. So messages with invalid content get practically lost, I can only find traces of them inside server log file. This is a problem, because I need to notify client side (which has its own service published with oneway method for processing async responses from server) that there was something wrong with request. Moreover, when I added reliable messaging feature on cxf bus (both client and server), client keeps resending the same message over and over again, because there is simply no reply from server other than http 200. I tried to reproduce similar problem with Metro web service: elements with invalid content are unmarshalled simply as null value. So what can be done with cxf service to enable me to process this invalid messages? Do I need to insert a custom interceptor somewhere on the chain, or is there some other solution? -- View this message in context: http://cxf.547215.n5.nabble.com/Detecting-unmarshalling-error-with-Oneway-operations-tp5742536.html Sent from the cxf-user mailing list archive at Nabble.com.
