Have you confirmed, via Wireshark[1] or similar tool, that the service
is indeed receiving the client message with those soap:header elements?
I'm not sure if the client is actually sending what it claims to be
sending.
In my JAX-WS handler tutorial[2] service-side SOAPHandler.java class
(Step #5) I show a generic way of reading in SOAP header elements, you
may wish to check if the element is readable that way.
Finally, if the SOAP header elements are defined in the WSDL:binding and
not the wsdl:portType sections there are some possibilities[3] to
simplify the way you can read in the header elements.
HTH,
Glen
[1] http://www.jroller.com/gmazza/entry/soap_calls_over_wireshark
[2] http://www.jroller.com/gmazza/entry/jaxws_handler_tutorial
[3] http://www.jroller.com/gmazza/entry/using_implicit_soap_headers_with
On 12/29/2011 10:51 AM, dkundo wrote:
Hi,
I'm having the following problem:
The client (WCF/.NET) sends a custom soap header with some value but on the
server side the header's value is null.
This is the SOAP message sent by client:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
*<CustomHeader xmlns="http://schemas.devleap.com/CustomHeader">
<Key>3859e0ee-4036-4f90-b8e9-7eb016c77b37</Key>
</CustomHeader>
*</s:Header>
<s:Body><login xmlns="http://ws.mycompany.com"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><arg0
xmlns="">A</arg0><arg1 xmlns="">123</arg1></login></s:Body></s:Envelope>
The SoapMessage on the server looks like:
this = {dleserver.SessionInterceptor@2947}
message = {org.apache.cxf.binding.soap.SoapMessage@2954} size = 32
[0] = {java.util.HashMap$Entry@4156} javax.xml.ws.wsdl.port ->
{http://ws.mycompany.com}LoginSvcImplPort
[1] = {java.util.HashMap$Entry@4165}
org.apache.cxf.service.model.MessageInfo -> [MessageInfo INPUT:
{http://ws.mycompany.com}login]
[2] = {java.util.HashMap$Entry@4174}
org.apache.cxf.message.Message.PROTOCOL_HEADERS -> {accept-encoding=[gzip,
deflate], connection=[keep-alive], Content-Length=[387],
content-type=[text/xml; charset=UTF-8], Expect=[100-continue],
Host=[dkundo-tc:9005], MYHEAD...
[3] = {java.util.HashMap$Entry@4183} HTTP_CONTEXT_MATCH_STRATEGY -> stem
[4] = {java.util.HashMap$Entry@4191} org.apache.cxf.request.url ->
http://dkundo-tc:9005/LoginSvc
[5] = {java.util.HashMap$Entry@4199} javax.xml.ws.wsdl.interface ->
{http://ws.mycompany.com}LoginSvc
[6] = {java.util.HashMap$Entry@4207} org.apache.cxf.request.uri -> /LoginSvc
[7] = {java.util.HashMap$Entry@4215} HTTP.REQUEST -> (POST
/LoginSvc)@1328597432 org.eclipse.jetty.server.Request@4f30c9b8
[8] = {java.util.HashMap$Entry@4224}
org.apache.cxf.transport.https.CertConstraints -> null
[9] = {java.util.HashMap$Entry@4231} HTTP.CONFIG -> null
[10] = {java.util.HashMap$Entry@4238} Accept -> null
[11] = {java.util.HashMap$Entry@4245} org.apache.cxf.headers.Header.list ->
[org.apache.cxf.binding.soap.SoapHeader@20b8610d]
key: java.lang.String =
{java.lang.String@4247}"org.apache.cxf.headers.Header.list"
value: java.util.ArrayList = {java.util.ArrayList@4251} size = 1
*[0] = {org.apache.cxf.binding.soap.SoapHeader@4425}
mustUnderstand = false
actor = null
dataBinding = null
name =
{javax.xml.namespace.QName@4426}"{http://schemas.devleap.com/CustomHeader}CustomHeader"
namespaceURI =
{java.lang.String@4434}"http://schemas.devleap.com/CustomHeader"
localPart = {java.lang.String@4435}"CustomHeader"
prefix = {java.lang.String@4436}""
object =
{com.sun.org.apache.xerces.internal.dom.ElementNSImpl@4427}"[CustomHeader:
null]"
namespaceURI =
{java.lang.String@4434}"http://schemas.devleap.com/CustomHeader"
localName = {java.lang.String@4435}"CustomHeader"
type = null
name = {java.lang.String@4435}"CustomHeader"
attributes = {com.sun.org.apache.xerces.internal.dom.AttributeMap@4440}
ownerDocument =
{com.sun.org.apache.xerces.internal.dom.DocumentImpl@4441}"[#document:
null]"
firstChild =
{com.sun.org.apache.xerces.internal.dom.ElementNSImpl@4442}"[Key: null]"
fNodeListCache = null
fBufferStr = null
previousSibling =
{com.sun.org.apache.xerces.internal.dom.ElementNSImpl@4427}"[CustomHeader:
null]"
nextSibling = null
ownerNode =
{com.sun.org.apache.xerces.internal.dom.ElementNSImpl@4443}"[s:Header:
null]"
flags = 24
direction = {org.apache.cxf.headers.Header$Direction@4428}"DIRECTION_IN"
*[12] = {java.util.HashMap$Entry@4254}
org.apache.cxf.message.Message.BASE_PATH -> /LoginSvc
[13] = {java.util.HashMap$Entry@4262}
org.apache.cxf.message.Message.PATH_INFO -> /LoginSvc
[14] = {java.util.HashMap$Entry@4270}
org.apache.cxf.continuations.ContinuationProvider ->
org.apache.cxf.transport.http_jetty.continuations.JettyContinuationProvider@37312d86
[15] = {java.util.HashMap$Entry@4279} javax.xml.ws.wsdl.service ->
{http://ws.mycompany.com}LoginSvcImplService
[16] = {java.util.HashMap$Entry@4288}
org.apache.cxf.message.Message.IN_INTERCEPTORS ->
[org.apache.cxf.transport.https.CertConstraintsInterceptor@62f570b5]
[17] = {java.util.HashMap$Entry@4297}
org.apache.cxf.message.Message.ENCODING -> UTF-8
[18] = {java.util.HashMap$Entry@4305}
org.apache.cxf.binding.soap.SoapVersion ->
org.apache.cxf.binding.soap.Soap11@57a32cb5
[19] = {java.util.HashMap$Entry@4314}
org.apache.cxf.message.Message.QUERY_STRING -> null
[20] = {java.util.HashMap$Entry@4321} HTTP.RESPONSE -> HTTP/1.1 200 \r\n\r\n
[21] = {java.util.HashMap$Entry@4330}
org.apache.cxf.security.SecurityContext ->
org.apache.cxf.transport.http.AbstractHTTPDestination$2@5e41108b
[22] = {java.util.HashMap$Entry@4339}
org.apache.cxf.configuration.security.AuthorizationPolicy -> null
[23] = {java.util.HashMap$Entry@4346}
org.apache.cxf.async.post.response.dispatch -> true
[24] = {java.util.HashMap$Entry@4355} org.apache.cxf.request.method -> POST
[25] = {java.util.HashMap$Entry@4363} javax.xml.ws.wsdl.operation ->
{http://ws.mycompany.com}login
[26] = {java.util.HashMap$Entry@4372} org.apache.cxf.transport.Destination
-> org.apache.cxf.transport.http_jetty.JettyHTTPDestination@87db50a
[27] = {java.util.HashMap$Entry@4380}
org.apache.cxf.message.MessageFIXED_PARAMETER_ORDER -> false
[28] = {java.util.HashMap$Entry@4389} javax.xml.ws.wsdl.description ->
http://dkundo-tc:9005/LoginSvc?wsdl
[29] = {java.util.HashMap$Entry@4398}
org.apache.cxf.service.model.BindingMessageInfo ->
org.apache.cxf.service.model.BindingMessageInfo@2cfb5baa
[30] = {java.util.HashMap$Entry@4407} HTTP.CONTEXT ->
[email protected]{,null}
[31] = {java.util.HashMap$Entry@4416} Content-Type -> text/xml;
charset=UTF-8
serviceInterface =
{javax.xml.namespace.QName@2955}"{http://ws.mycompany.com}LoginSvc"
Any ideas why?
--
View this message in context:
http://cxf.547215.n5.nabble.com/Custom-SOAP-header-tp5107937p5107937.html
Sent from the cxf-user mailing list archive at Nabble.com.
--
Glen Mazza
Talend Community Coders
http://coders.talend.com
blog: http://www.jroller.com/gmazza