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

Reply via email to