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.



        


Reply via email to