You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Willem Jiang <wi...@gmail.com> on 2010/02/26 09:49:50 UTC

Re: Apache CXF - Camel wiki page : clarification requested

Daniel Kulp wrote:
> On Thu February 25 2010 8:09:48 am cmoulliard wrote:
>> Hi,
>>
>> The cxf camel wiki page introduces the following CXF concepts which are not
>> well described / explained. Can someone provide more info in order to
>> improve the documentation please ?
>>
>> Concepts to be clarified
>>
>> - PRE-STREAM
> 
> For some reason that I don't understand, Camel removes everything in this 
> phase.   I never really understood the complete details as to why.   
> Unfortunately, that means the Logging interceptor gets removed.

The interceptors which phase is PRE-STREM will be removed because we 
skip the java object to XML marshal interceptors for the camel-cxf 
endpoints that works in the PAYLOAD dataformat.
So the wiki shows you workaround of configure the LoggingOutInterceptor.
> 
> 
>> - IN-BAND
>> - OUT-BAND
> 
> Headers in a soap message are compared to stuff in the WSDL (and generated 
> code) in one of three ways:
> 
> 1) Header is defined as an element in the SAME wsdl message as the rest of the 
> body.   In this case, by default, a wsdl2java generates a parameter on the 
> method for it with header=true.
> 
> 2) Header is defined as an element in a DIFFERENT message in the wsdl.  By 
> default, jaxws does NOT generate a param for it.  However, we have an "-exsh 
> true" flag to wsdl2java to make it generate a param for it.  
> 
> 3) Header not defined in WSDL at all.   It's just on the soap message itself.  
> Things like ws-addressing headers, security headers, etc... would technically 
> fall into this.
> 
> I'm not really sure what camel is trying to describe and what it's donig with 
> it.   Most likely, the flag is trying to deal with #2 where the wsdl DOES 
> define the header, but the generated service may or may not have a parameter 
> for it depending on how the code was generated.
> 
> Does that help at all?
> 
> Dan

The Description of the Header part is for routing the message request 
from camel-cxf consumer to camel-cxf producer, if we set the 
relayHeaders option to be true, the headers which is not part of the 
WSDL contract will be copy to camel-cxf producer for sending.

Willem

> 
> 
> 
>> Coming from this part of the camel doc
>>
>> CXF's LoggingOutInterceptor outputs outbound message that goes on the wire
>> to logging system (Java Util Logging). Since the LoggingOutInterceptor is
>> in PRE_STREAM phase (but PRE_STREAM phase is removed in MESSAGE mode), you
>> have to configure LoggingOutInterceptor to be run during the WRITE phase.
>> The following is an example.
>>
>>    <bean id="loggingOutInterceptor"
>> class="org.apache.cxf.interceptor.LoggingOutInterceptor">
>>
>>         <!--  it really should have been user-prestream but CXF does have
>> such phase! -->
>>         <constructor-arg value="write"/>
>>
>>    </bean>
>>
>> <cxf:cxfEndpoint id="serviceEndpoint"
>> address="http://localhost:9002/helloworld"
>>
>> 	serviceClass="org.apache.camel.component.cxf.HelloService">
>> 	<cxf:outInterceptors>
>> 	    <ref bean="loggingOutInterceptor"/>
>>
>> 	</cxf:outInterceptors>
>> 	<cxf:properties>
>> 		<entry key="dataFormat" value="MESSAGE"/>
>>
>> 	</cxf:properties>
>> </cxf:cxfEndpoint>
>>
>> Description of relayHeaders option
>>
>> There are in-band and out-of-band on-the-wire headers from the perspective
>> of a JAXWS WSDL-first developer.
>>
>> The in-band headers are headers that are explicitly defined as part of the
>> WSDL binding contract for an endpoint such as SOAP headers.
>>
>> Kind regards,
>>
>> Charles
>>
>> -----
>> Charles Moulliard
>> SOA Architect
>>
>> My Blog :  http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/
>