thanks, that's what I was looking for.
However, it looks like the "-exsh true" parameter works only from command line.

I tried this:
<extraarg>-exsh true</extraarg>

which produces an error 
and also this
<extraarg>-exsh</extraarg>
<extraarg>true</extraarg>
But in this case nothing was generated by maven.

Anyhow, it works from the command line, which is fine so far (probably a bug in 
cxf?).

Thanks and best regards!!!!
*Von:* [email protected]
*Gesendet:* 17.12.07 14:17:07
*An:* [email protected]
*Betreff:* Re: CXF access SOAP Header


In your case, the input header in saop binding part refer to a message part
which is not defined in the operation message of portType.
To enable cxf wsdl2java to genarate this header args for your method, you
need add "-exsh true", which means enable extended soap header message
binding, by this way, you should see two arguments in your method.

[1] for more details about the cxf wsdl2java arguments, and how to configure
it in maven code gen plugin

the explaination about exsh is
-exsh (true/false) Enables or disables processing of implicit SOAP headers (
i.e. SOAP headers defined in the wsdl:binding but not wsdl:portType
section.) Default is false.
[1]http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html

Best Regards
Freeman

On Dec 17, 2007 6:25 PM, Cybexion <[EMAIL PROTECTED]> wrote:

>
> Hi,
>
> my java method looks like this:
>
> public CreateOrderEventResponse createOrder(BaseOrder baseOrder) throws
> CreateOrderFaultResponse;
>
> It takes a BaseOrder as input, which is defined in XSD and imported in
> WSDL:
> ...
> <portType name="orderServicePort">
> <operation name="createOrder">
> <input message="tns:createOrderRequest"/>
> <output message="tns:createOrderResponse"/>
> <fault name="OrderServiceFault"
> message="tns:createOrderFaultResponse"/>
> </operation>
> </portType>
> ...
>
> The SOAP Header (systemRequest) contains the email address of the user who
> has initiated the communication. I thought as it is not neccessary for the
> communication, I did not put it in the payload, but in the header.
> Now, lets say we get an Exception in my createOrder method, I would like
> to
> get the email address from the soap header and send the user a mail.
> Means normally I should not need the user's mail from the systemRequest
> element, only in case of Errors.
> So again, lets say I have an exception in my createorder() method.
> I think I need what you mentioned below:
>
> List<SoapHeaderInfo> headers =
> wsdlMessage.getExtensors(SoapHeaderInfo.class);
>
> Where do I get the WSDLMessage from. Currently I don't have it in my
> createOrder() method.
>
> Thanks & regards!
>
>
>
> Freeman Fang wrote:
> >
> > Hi,
> >
> > Your createorder method has input parameter, right?
> > It should be defined as message="tns:systemRequest" part="parameters"
> >
> >
> > In fact, this parameter will be mashelled as soap header in soap message
> > according to
> > your soap binding part defined in your wsdl.
> >
> > So, the input parameter is soap header you want.
> >
> > Btw, [1] & [2] is preview for the cxf component docs
> > [1]http://servicemix.apache.org/servicemix-cxf-se.html
> > [2]http://servicemix.apache.org/servicemix-cxf-bc.html
> > Best Regards
> >
> > Freeman
> >
> > On 12/14/07, Cybexion <[EMAIL PROTECTED]> wrote:
> >>
> >>
> >> OK,
> >> my example is build completely on cxf_wsdl_first.
> >> Just a different WSDL and a different java implementation (se).
> >> I have a bc, se, and sa (like cxf_wsdl_first).
> >> bc just contains the wsdl.
> >> Code ist generated by maven/wsdl2java from wsdl.
> >> My java code does not see any soap header stuff, just the
> >> createorder(...)
> >> method.
> >> Yes, I wanted to access the header from my se.
> >> However, I don't know about the interceptor (where to put it, how to
> >> use).
> >> I'll try to find out more about it (docs) ...
> >>
> >> Thanks!!!
> >>
> >>
> >>
> >> Freeman Fang-2 wrote:
> >> >
> >> > I am not sure I understand your scenario correctly
> >> > Would you please describe your use case more detail?
> >> > Did you use cxf bc or se inside servicemix? Did you generate your
> code
> >> > stub using cxf codegen from the wsdl? Did you want to access soap
> >> header
> >> > inside servicemix cxf se ?
> >> > Cxf will do soap header / method para mapping for you according to
> >> the
> >> > service model so generallly you shouldn't care about the soap header
> >> > issue yourself.
> >> >
> >> > If you want to access soap headder in your incerceptors, you can do
> as
> >> > follows
> >> > List<SoapHeaderInfo> headers =
> >> > wsdlMessage.getExtensors(SoapHeaderInfo.class);
> >> > List<Header> headerElement = message.getHeaders();
> >> > You can get more details from JbiInWsdl1Interceptor.java of
> >> > servicemix-cxf-bc component
> >> >
> >> > Best Regards
> >> >
> >> > Freeman
> >> >
> >> >
> >> > Cybexion wrote:
> >> >> Hi,
> >> >>
> >> >> I've specified a WSDL for an OrderService. Inside my Binding I have
> >> >> defined
> >> >> that a SOAP Header should be send.
> >> >>
> >> >> <<<WSDL
> >> >> ...
> >> >> <binding name="OrderServiceBinding" type="tns:orderServicePort">
> >> >> <soap:binding style="document"
> >> >> transport="http://schemas.xmlsoap.org/soap/http"/>
> >> >> <operation name="createOrder">
> >> >> <soap:operation
> >> >> soapAction="http://localhost/adf/OrderService"/>
> >> >> <input>
> >> >> <soap:header message="tns:systemRequest"
> >> >> part="parameters"
> >> >> use="literal"/>
> >> >> <soap:body use="literal"/>
> >> >> </input>
> >> >> <output>
> >> >> <soap:body use="literal"/>
> >> >> </output>
> >> >> </operation>
> >> >> </binding>
> >> >> WSDL >>>
> >> >>
> >> >>
> >> >>
> >> >> <<<SOAP
> >> >> ...
> >> >> <Header>
> >> >> <adf:system id="1" version="1">
> >> >> <adf:loginuseremail>[EMAIL PROTECTED]</adf:loginuseremail>
> >> >> </adf:system>
> >> >> </Header>
> >> >> ...
> >> >> SOAP>>>
> >> >>
> >> >> The request and response works fine. Also the Javacode for the
> payload
> >> is
> >> >> executed.
> >> >> Now some questions:
> >> >> 1) How and where can I access the data from the SOAP Header?
> >> >> 2) If I remove the Header Stuff from my SOAP Request, everything
> stil
> >> >> works
> >> >> fine.
> >> >> (Do I need must understand = true to make it required)
> >> >>
> >> >> Thanks!
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >>
> http://www.nabble.com/CXF-access-SOAP-Header-tp14314133s12049p14333665.html
> >> Sent from the ServiceMix - User mailing list archive at Nabble.com.
> >>
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/CXF-access-SOAP-Header-tp14314133s12049p14370205.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>

        

Reply via email to