Based on Ron's previous questions, and Bruce's comments, I think that what's called for here is a tutorial on the theme of:
"So, you know what a web service is. How are these things constructed in Java?" That gets you JAX-WS + JAXB. I don't think it's possible to make hide or hair of the allinaceous nature of CXF without having that sort of picture of what it is trying to accomplish. Then, a cross-sectional view can make some sense. On Wed, Apr 22, 2009 at 12:05 PM, Bruce Edge <[email protected]> wrote: > Wow, great stuff. I'm in the same boat. The more tutorials form different > perspectives that I read, the less fuzzy things appear. > Not to hijack your thread, but I'm coming from gSOAP/C++ and > java/jax-ws/jaxb/spring are all new. I think that the days of writing > single > binary soap servers in C/C++ are over for all but the tinyest appliances > and > that this is the migration path that all us embedded mgmt folk need to > take. > > -Bruce > > On Wed, Apr 22, 2009 at 8:37 AM, Daniel Kulp <[email protected]> wrote: > > > 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 > > >
