Return-Path: Delivered-To: apmail-cxf-users-archive@www.apache.org Received: (qmail 96397 invoked from network); 22 Apr 2009 16:06:12 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 22 Apr 2009 16:06:12 -0000 Received: (qmail 79099 invoked by uid 500); 22 Apr 2009 16:06:11 -0000 Delivered-To: apmail-cxf-users-archive@cxf.apache.org Received: (qmail 79020 invoked by uid 500); 22 Apr 2009 16:06:11 -0000 Mailing-List: contact users-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@cxf.apache.org Delivered-To: mailing list users@cxf.apache.org Received: (qmail 78873 invoked by uid 99); 22 Apr 2009 16:06:11 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Apr 2009 16:06:10 +0000 X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of bruce.edge@gmail.com designates 209.85.221.124 as permitted sender) Received: from [209.85.221.124] (HELO mail-qy0-f124.google.com) (209.85.221.124) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Apr 2009 16:06:02 +0000 Received: by qyk30 with SMTP id 30so87760qyk.24 for ; Wed, 22 Apr 2009 09:05:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=Q109Xon5c+uE/rDozUpUr2JiGeacf9os65C8+165lXc=; b=jbZ2r6s25qV5BavRBhYJV2fANjgJuiHlZegOhx3tV8XVOpYOPs2gWqvg6Wt+sA1BX+ seNvofBmz9jCkmD4lRcVEhKtQtkmZZmkLUdHEl1OvLyT3c/19IlopgwZBbls3X8AoxzP HkICkKY4nGMG2VrNuLk093uAIbAlzwYUVhjEo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=Rc7Spws1EOndHd6Wepu6rbSZYWVYUSzz8ZVDqVGFd2LQnow1DbtTwy0B+dW8Kv5FoW KTD0HOg2cRR8oAYFerJY95EQWugv2N3BQSvesRQPdQEsQBijWHM6AgfwxACya+DA2hLR /Xgsu7SMMLz3NOvIqdgBNjC15Wp49rsKWBVJg= MIME-Version: 1.0 Received: by 10.231.19.68 with SMTP id z4mr4364173iba.7.1240416341481; Wed, 22 Apr 2009 09:05:41 -0700 (PDT) In-Reply-To: <200904221137.35568.dkulp@apache.org> References: <200904221137.35568.dkulp@apache.org> Date: Wed, 22 Apr 2009 09:05:41 -0700 Message-ID: <45c43ef50904220905t77d37f33jc2011032ed141564@mail.gmail.com> Subject: Re: Which Part of the Elephant First? From: Bruce Edge To: users@cxf.apache.org Content-Type: multipart/alternative; boundary=00221532cd00685bce046826ef37 X-Virus-Checked: Checked by ClamAV on apache.org --00221532cd00685bce046826ef37 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit 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 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 > dkulp@apache.org > http://www.dankulp.com/blog > --00221532cd00685bce046826ef37--