On Tue April 21 2009 10:44:22 am Ron Grimes wrote: > I've decided that I would really like to gain a solid, in-depth > understanding of this stack, rather than just remaining happy knowing my > particular implementation of Spring/CXF. So, I guess my question is > this. Can some of you experts tell me the best way to tackle this > elephant?
Wow. Speak about a broad request for information. That said, it's definitely a good request. :-) Hmm.... where to start...... From a very high level perspective, I could ask: are you more interested in runtime things or tooling (wsdl2java/java2ws/maven plugins/etc...) type things? That type of question can drive starting points. Judging from your question, I'm going to assume runtime. Then the question comes down to "what kind of person are you?" Pretend the CXF core runtime is an onion. (I'm sure SOMEONE is going to tweet that CXF is an onion now that I said that) Are you the type of person that prefers to start on the outside examining and removing one layer at a time to achieve an understanding of what the onion is all about? Or are you the type of person that would chop the onion in half and examine the core and start seeing how the layers were layered on top one after another? I'm firmly in the latter category. Whenever I try the "outside in" approach, I keep asking questions like "why is this layer here" and such and I keep dropping into the core layers to answer my questions. Thus, for me "outside in" always ends up degrading into "inside out" anyway. However, other people do best with the outside in approach. They KNOW JAX-WS and JAXB and they KNOW SOAP and such and thus want to start off there where there is some stuff from their comfort zone. Anyway, since I'm an inside out person, my suggestion would be to setup eclipse and get a client or server running in eclipse. Put a breakpoint at line 236 of PhaseInterceptorChain. (it looks like: currentInterceptor.handleMessage(message);) and debug. At that breakpoint, take a look at the message, debug into some of the interceptors, see how the message changes as it gets passed, etc... If someone was going to ask me what is the CORE class of the CXF runtime, it's the PhaseInterceptorChain. That's the class that drives all message processing. It's a relatively simple thing (mostly just a while loop), but it really IS CXF. The rest of CXF falls mostly into 3 main categories: 1) Setting up the message/chain prior to starting the chain processing. The ClientImpl and destinations fall in here. Example: the http listener needs to setup a message by pulling stuff from the incoming request. 2) The actual interceptors. For example, soap processing is done by a collection of interceptors that live in various locations on the chain. 3) A LOT of "setup and configuration" code that examine the various locations of information to setup and provide information to the stuff in categories 1 and 2. Things like looking at annotations, processing the wsdl, figuring out it's the soap binding, etc.... Does that provide some information to get started? Dan > In other words, what would be the right order to try and get > my arms around all of this? What I'm looking for is something like, > "Start off with JAX-WS, then JAXB, then.....", as welll as maybe the > best resources to understand better how they couple together, etc. Also, > I would like to understand more about the thinking/rationale about how > this all came together, and why the choice of certain mechanisms such as > interceptors and such. > > Hopefull, you get my gist. > > Thanks for any direction you can give. > > > Ron Grimes -- Daniel Kulp [email protected] http://www.dankulp.com/blog
