You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Potluri5 <ko...@yahoo.com> on 2009/07/23 17:34:26 UTC

CXF is creating extra namespace declarations

Hi,

   I have a  CXF web service. Wsdl2Java approach is used to auto generate
code.

Generated method signature is,

@WebResult(name = "pointerCountResponse", targetNamespace =
"http://xxxxxxxxxx/service/pointerCount/v1.1/", partName =
"pointerCountResponse")
    @WebMethod(action =
"http://xxxxxxxxxx/PointerCountService/pointerCount")
    public java.lang.Object pointerCount(
        @WebParam(partName = "pointerCountRequest", name = "pointerCount",
targetNamespace = "http://xxxxxxxxxx/service/pointerCount/v1.1/")
        java.lang.Object pointerCountRequest,
        @WebParam(partName = "messageTrackingInfo", mode =
WebParam.Mode.INOUT, name = "messageTrackingInfo", targetNamespace =
"http://xxxxxxxxxx/schemas/message/v1.1/2007-01-12/", header = true)
        javax.xml.ws.Holder<java.lang.Object> messageTrackingInfo

Here  messageTrackingInfo which is header information, pointerCountRequest
which is request and pointerCountResponse which is response are all W3C
Documents. 

Once business logic is done I will update incoming messageTrackingInfo and
create pointerCountResponse document and send them as response.

Issue here is CXF is creating extra namespace declarations in soap:body
which is pointerCountResponse document.
xmlns:ns2="http://xxxxxxxxx/specs/schemas/message/v1.1/2007-01-12/" which is
related to soap:header is placed in soap:body. Not sure why it is creating
that namespace there, no one is referencing that.


To be more clear here is an example.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <ns2:messageTrackingInfo
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
            xmlns="http://xxxxxxxxx/specs/schemas/message/v1.1/2007-01-12/"
            xmlns:uri="http://xxxxxxxxx/specs/schemas/uri/v1.1/2007-01-12/"
           
xmlns:svc="http://xxxxxxxxx/specs/schemas/service/v1.1/2007-01-12/"
           
xmlns:ns2="http://xxxxxxxxx/specs/schemas/message/v1.1/2007-01-12/"
            branchStack="0" convSeq="0"
            svc:currentSendingOperatorURI="http://xxxxxxxxx"
            svc:currentServiceDefURI="http://xxxxxxxxx"
            svc:currentServiceLabel="dont know"
            svc:currentServiceProviderURI="xxxxxxxxx"
            svc:initialUserURI="xxxxxxxxx"
            svc:requesterInvocationNum="78" svc:serviceInvocationNum="78"
svc:serviceLabel="foobar"
            svc:serviceProviderURI="bar"
            svc:serviceRequesterURI="xxxxxxxxx"
            uri:serviceDefURI="foo"/>
    </soap:Header>
    <soap:Body>
        <pointerCountResponse
           
xmlns="http://xxxxxxxxx/specs/schemas/gateway/service/pointerCount/v1.1/"
           
xmlns:ns2="http://xxxxxxxxx/specs/schemas/message/v1.1/2007-01-12/">
            <pcsv:pointerCountConfirmation
               
xmlns:pcsv="http://xxxxxxxxx/specs/schemas/gateway/service/pointerCount/v1.1/"
               
xmlns:svc="http://xxxxxxxxx/specs/schemas/service/v1.1/2007-01-12/"
               
xmlns:wij-uri="http://xxxxxxxxx/specs/schemas/uri/v1.1/2007-01-12/"
                svc:recordCount="0"
                wij-uri:submitterURI="http://xxxxxxxxx"
            />
        </pointerCountResponse>
    </soap:Body>
</soap:Envelope>

If anyone has faced a similar issue or can think of anything to solve
this problem please get back to me.
-- 
View this message in context: http://www.nabble.com/CXF-is-creating-extra-namespace-declarations-tp24628505p24628505.html
Sent from the cxf-user mailing list archive at Nabble.com.


Re: CXF is creating extra namespace declarations

Posted by Potluri5 <ko...@yahoo.com>.
Thanks for pointing me to right direction. I'll try JAXB databinding
NamespaceMap .


dkulp wrote:
> 
> 
> 
> This is actually JAXB, not CXF, generating those.   This is logged as a
> bug 
> for JAXB:
> https://jaxb.dev.java.net/issues/show_bug.cgi?id=425
> but is considered low priority since it doesn't really affect the real 
> structure of the XML.    Basically, JAXB doesn't know which namespaces
> it's 
> going to need so it just outputs everything it knows about ahead of time.
> 
> 
> You can TRY setting a NamespaceMap  on the JAXB databinding to an empty
> map or 
> something.   That MAY work.   I'm not really sure. 
> 
> Dan
> 
> 
> 
> On Thu July 23 2009 11:34:26 am Potluri5 wrote:
>> Hi,
>>
>>    I have a  CXF web service. Wsdl2Java approach is used to auto generate
>> code.
>>
>> Generated method signature is,
>>
>> @WebResult(name = "pointerCountResponse", targetNamespace =
>> "http://xxxxxxxxxx/service/pointerCount/v1.1/", partName =
>> "pointerCountResponse")
>>     @WebMethod(action =
>> "http://xxxxxxxxxx/PointerCountService/pointerCount")
>>     public java.lang.Object pointerCount(
>>         @WebParam(partName = "pointerCountRequest", name =
>> "pointerCount",
>> targetNamespace = "http://xxxxxxxxxx/service/pointerCount/v1.1/")
>>         java.lang.Object pointerCountRequest,
>>         @WebParam(partName = "messageTrackingInfo", mode =
>> WebParam.Mode.INOUT, name = "messageTrackingInfo", targetNamespace =
>> "http://xxxxxxxxxx/schemas/message/v1.1/2007-01-12/", header = true)
>>         javax.xml.ws.Holder<java.lang.Object> messageTrackingInfo
>>
>> Here  messageTrackingInfo which is header information,
>> pointerCountRequest
>> which is request and pointerCountResponse which is response are all W3C
>> Documents.
>>
>> Once business logic is done I will update incoming messageTrackingInfo
>> and
>> create pointerCountResponse document and send them as response.
>>
>> Issue here is CXF is creating extra namespace declarations in soap:body
>> which is pointerCountResponse document.
>> xmlns:ns2="http://xxxxxxxxx/specs/schemas/message/v1.1/2007-01-12/" which
>> is related to soap:header is placed in soap:body. Not sure why it is
>> creating that namespace there, no one is referencing that.
>>
>>
>> To be more clear here is an example.
>>
>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
>>     <soap:Header>
>>         <ns2:messageTrackingInfo
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>             xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
>>            
>> xmlns="http://xxxxxxxxx/specs/schemas/message/v1.1/2007-01-12/"
>>            
>> xmlns:uri="http://xxxxxxxxx/specs/schemas/uri/v1.1/2007-01-12/"
>>
>> xmlns:svc="http://xxxxxxxxx/specs/schemas/service/v1.1/2007-01-12/"
>>
>> xmlns:ns2="http://xxxxxxxxx/specs/schemas/message/v1.1/2007-01-12/"
>>             branchStack="0" convSeq="0"
>>             svc:currentSendingOperatorURI="http://xxxxxxxxx"
>>             svc:currentServiceDefURI="http://xxxxxxxxx"
>>             svc:currentServiceLabel="dont know"
>>             svc:currentServiceProviderURI="xxxxxxxxx"
>>             svc:initialUserURI="xxxxxxxxx"
>>             svc:requesterInvocationNum="78" svc:serviceInvocationNum="78"
>> svc:serviceLabel="foobar"
>>             svc:serviceProviderURI="bar"
>>             svc:serviceRequesterURI="xxxxxxxxx"
>>             uri:serviceDefURI="foo"/>
>>     </soap:Header>
>>     <soap:Body>
>>         <pointerCountResponse
>>
>> xmlns="http://xxxxxxxxx/specs/schemas/gateway/service/pointerCount/v1.1/"
>>
>> xmlns:ns2="http://xxxxxxxxx/specs/schemas/message/v1.1/2007-01-12/">
>>             <pcsv:pointerCountConfirmation
>>
>> xmlns:pcsv="http://xxxxxxxxx/specs/schemas/gateway/service/pointerCount/v1.
>>1/"
>>
>> xmlns:svc="http://xxxxxxxxx/specs/schemas/service/v1.1/2007-01-12/"
>>
>> xmlns:wij-uri="http://xxxxxxxxx/specs/schemas/uri/v1.1/2007-01-12/"
>>                 svc:recordCount="0"
>>                 wij-uri:submitterURI="http://xxxxxxxxx"
>>             />
>>         </pointerCountResponse>
>>     </soap:Body>
>> </soap:Envelope>
>>
>> If anyone has faced a similar issue or can think of anything to solve
>> this problem please get back to me.
> 
> -- 
> Daniel Kulp
> dkulp@apache.org
> http://www.dankulp.com/blog
> 
> 

-- 
View this message in context: http://www.nabble.com/CXF-is-creating-extra-namespace-declarations-tp24628505p24629498.html
Sent from the cxf-user mailing list archive at Nabble.com.


Re: CXF is creating extra namespace declarations

Posted by Daniel Kulp <dk...@apache.org>.

This is actually JAXB, not CXF, generating those.   This is logged as a bug 
for JAXB:
https://jaxb.dev.java.net/issues/show_bug.cgi?id=425
but is considered low priority since it doesn't really affect the real 
structure of the XML.    Basically, JAXB doesn't know which namespaces it's 
going to need so it just outputs everything it knows about ahead of time.


You can TRY setting a NamespaceMap  on the JAXB databinding to an empty map or 
something.   That MAY work.   I'm not really sure. 

Dan



On Thu July 23 2009 11:34:26 am Potluri5 wrote:
> Hi,
>
>    I have a  CXF web service. Wsdl2Java approach is used to auto generate
> code.
>
> Generated method signature is,
>
> @WebResult(name = "pointerCountResponse", targetNamespace =
> "http://xxxxxxxxxx/service/pointerCount/v1.1/", partName =
> "pointerCountResponse")
>     @WebMethod(action =
> "http://xxxxxxxxxx/PointerCountService/pointerCount")
>     public java.lang.Object pointerCount(
>         @WebParam(partName = "pointerCountRequest", name = "pointerCount",
> targetNamespace = "http://xxxxxxxxxx/service/pointerCount/v1.1/")
>         java.lang.Object pointerCountRequest,
>         @WebParam(partName = "messageTrackingInfo", mode =
> WebParam.Mode.INOUT, name = "messageTrackingInfo", targetNamespace =
> "http://xxxxxxxxxx/schemas/message/v1.1/2007-01-12/", header = true)
>         javax.xml.ws.Holder<java.lang.Object> messageTrackingInfo
>
> Here  messageTrackingInfo which is header information, pointerCountRequest
> which is request and pointerCountResponse which is response are all W3C
> Documents.
>
> Once business logic is done I will update incoming messageTrackingInfo and
> create pointerCountResponse document and send them as response.
>
> Issue here is CXF is creating extra namespace declarations in soap:body
> which is pointerCountResponse document.
> xmlns:ns2="http://xxxxxxxxx/specs/schemas/message/v1.1/2007-01-12/" which
> is related to soap:header is placed in soap:body. Not sure why it is
> creating that namespace there, no one is referencing that.
>
>
> To be more clear here is an example.
>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
>     <soap:Header>
>         <ns2:messageTrackingInfo
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>             xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
>             xmlns="http://xxxxxxxxx/specs/schemas/message/v1.1/2007-01-12/"
>             xmlns:uri="http://xxxxxxxxx/specs/schemas/uri/v1.1/2007-01-12/"
>
> xmlns:svc="http://xxxxxxxxx/specs/schemas/service/v1.1/2007-01-12/"
>
> xmlns:ns2="http://xxxxxxxxx/specs/schemas/message/v1.1/2007-01-12/"
>             branchStack="0" convSeq="0"
>             svc:currentSendingOperatorURI="http://xxxxxxxxx"
>             svc:currentServiceDefURI="http://xxxxxxxxx"
>             svc:currentServiceLabel="dont know"
>             svc:currentServiceProviderURI="xxxxxxxxx"
>             svc:initialUserURI="xxxxxxxxx"
>             svc:requesterInvocationNum="78" svc:serviceInvocationNum="78"
> svc:serviceLabel="foobar"
>             svc:serviceProviderURI="bar"
>             svc:serviceRequesterURI="xxxxxxxxx"
>             uri:serviceDefURI="foo"/>
>     </soap:Header>
>     <soap:Body>
>         <pointerCountResponse
>
> xmlns="http://xxxxxxxxx/specs/schemas/gateway/service/pointerCount/v1.1/"
>
> xmlns:ns2="http://xxxxxxxxx/specs/schemas/message/v1.1/2007-01-12/">
>             <pcsv:pointerCountConfirmation
>
> xmlns:pcsv="http://xxxxxxxxx/specs/schemas/gateway/service/pointerCount/v1.
>1/"
>
> xmlns:svc="http://xxxxxxxxx/specs/schemas/service/v1.1/2007-01-12/"
>
> xmlns:wij-uri="http://xxxxxxxxx/specs/schemas/uri/v1.1/2007-01-12/"
>                 svc:recordCount="0"
>                 wij-uri:submitterURI="http://xxxxxxxxx"
>             />
>         </pointerCountResponse>
>     </soap:Body>
> </soap:Envelope>
>
> If anyone has faced a similar issue or can think of anything to solve
> this problem please get back to me.

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog