[
https://issues.apache.org/jira/browse/CXF-5306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13789658#comment-13789658
]
Daniel Kulp commented on CXF-5306:
----------------------------------
Slightly amused by this bug. :-)
CXF and the JAX-WS reference implementation are BOTH outputting the data in the
soap header. However, it definitely is a bug (in both implementations). I'm
testing a fix now.
If you can change the WSDL, you can get it to work for both implementations.
If you change:
{code:xml}
<message name="Meta">
<part name="part1" element="meta:MetaHeader"/>
</message>
{code}
to something like:
{code:xml}
<message name="Meta">
<part name="meta" element="meta:MetaHeader"/>
</message>
{code}
and then also update the "part" attribute on the soap:header lines to match the
name, then it should work fine. That also has NO effect of the on-the-wire
format and is thus completely compatible.
> Soap body in header
> -------------------
>
> Key: CXF-5306
> URL: https://issues.apache.org/jira/browse/CXF-5306
> Project: CXF
> Issue Type: Bug
> Affects Versions: 2.7.6
> Reporter: matej
> Attachments: MessageDelivery.wsdl, MessageDelivery.zip
>
>
> I am using apache-cxf-2.7.6. I generated soap client from wsdl. In Java code
> I set values for the request object and send request. Soap xml request is not
> valid. In the header is request body and soap:body is empty. This is
> generated xml which is not valid:
> {code:xml}
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
> <soap:Header>
> <ns7:MetaHeader xmlns:ns12="http://www.csob.cz/common/v1"
> xmlns:ns11="http://www.csob.cz/infrastructure/MessageDelivery/SendSMS/res/v1"
> xmlns:ns10="http://www.csob.cz/infrastructure/MessageDelivery/SendSMS/req/v1"
> xmlns:ns9="http://www.csob.cz/infrastructure/SMS/v1"
> xmlns:ns8="http://www.csob.cz/infrastructure/SMS/core"
> xmlns:ns7="http://ed6.kbc.com/metaheader.1"
> xmlns:ns6="http://www.csob.cz/common/core"
> xmlns:ns5="http://services.csob.cz/base_v1"
> xmlns:ns4="http://www.csob.cz/infrastructure/MessageDelivery/SendEmail/res/v1"
> xmlns:ns3="http://www.csob.cz/infrastructure/Email/v1"
> xmlns:ns2="http://www.csob.cz/infrastructure/MessageDelivery/SendEmail/req/v1"
> xmlns="http://www.csob.cz/infrastructure/Email/core">
> <ns2:EmailToFields>
> <EmailToField>[email protected]</EmailToField>
> </ns2:EmailToFields>
> <EmailSubject>test</EmailSubject>
> <EmailFromField>[email protected]</EmailFromField>
> <ns2:EmailBody>Hello World!</ns2:EmailBody>
> <DeliveryPriority>1</DeliveryPriority>
> </ns7:MetaHeader>
> </soap:Header>
> <soap:Body/>
> </soap:Envelope>
> {code}
> Here is the code how I am sending request:
> {code:java}
> MessageDelivery messageDelivery = new MessageDelivery();
> SendEmailPortType client =
> messageDelivery.getSendEmailPortTypeBindingPort();
> org.apache.cxf.endpoint.Client clientEnd =
> ClientProxy.getClient(client);
> clientEnd.getOutInterceptors().add(new
> MyLogInterceptor());
>
> SendEmailReq sendEmailReq = new SendEmailReq();
> sendEmailReq.setEmailSubject("test");
> sendEmailReq.setEmailBody(body);
> sendEmailReq.setEmailFromField("[email protected]");
> sendEmailReq.setEmailToFields(new
> SendEmailReq.EmailToFields());
>
> sendEmailReq.getEmailToFields().getEmailToField().add("[email protected]");
> sendEmailReq.setDeliveryPriority(new Integer(1));
>
> client.sendEmailV1(sendEmailReq);
> {code}
--
This message was sent by Atlassian JIRA
(v6.1#6144)