Indeed, perfect, thank you !!!!
*Von:* [email protected] *Gesendet:* 18.12.07 03:39:14 *An:* [email protected] *Betreff:* Re: CXF access SOAP Header Hi, It works in maven plugin, but you need ensure that cxf-rt-bindings-soap is in your classpath try add <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-bindings-soap</artifactId> <version>${cxf-version}</version> </dependency> in your pom Best Regards Freeman [EMAIL PROTECTED] wrote: > 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. >> >> >> > > > > >
