We crave benchmarks, even though we know they all suck at giving us a full picture sometimes. And sometimes we refuse the more productive languages and frameworks because we cannot accept the 0.2 millisecond hit we'll take for using a technology that is potentially lower in performance.
In the past year or so, we have witnessed a major shift from client-server to client-cloud. This shift is primarily
fueled by two factors: mobile devices exceeding desktop computers and the thousands of different APIs available on the Internet today.
“Availability is the most important thing…” I heard this recently and I cannot agree with it. It sounds good, until you think about all the things that become less important things when you say something like that.
The possibility to define a more specific return type when overriding a method has been introduced together with generics long time ago. The number of casts needed has dimished dramatically since these days, and our code is now a lot more readable. But there are also some nasty pitfalls you won't recognize before you fall down. In this article I will describe some of those traps we stumbled about lately.
Interceptors are the fundamental processing unit inside CXF. When a service is invoked, an InterceptorChain is created and invoked. Each interceptor gets a chance to do what they want with the message. This can include reading it, transforming it, processing headers, validating the message, etc.