You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Karolis Petrauskas <k....@gmail.com> on 2010/08/04 14:23:29 UTC

Problems with namespaces

Hello,

    I have a problem with processing of namespaces in the
servicemix-cxf-bc component. I'm exposing a web service using this
component, and trying to invoke it using apache-axis 1.4 client (i
cant change the stack for the client). I'm getting an error "Namespace
prefix 'xsd' has not been declared" (more details bellow). Axis
declares this namespace in the tag soapenv:Envelope, which is then
removed by the cxf-bc endpoint.
    I had a very similar situation in apache ode. There the
namespaces, especially those, used in the xsi:type attributes only,
were lost in assign and invoke statements. I fixed ode locally, and
added each namespace in the context explicitly by creating
corresponding attributes.
    I can try to fix this issue in the servicemix too, but i want to
ask you if i'm doing something wrong with namespaces, or is it a bug
in the servicemix?

org.apache.cxf.interceptor.LoggingInInterceptor writes the following
xml (irrelevant parts are ommited, and xml if formated to be more
readeable):
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope
        xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <soapenv:Body>
          <request xmlns="xxx">
              <maxSubscriptions xsi:type="xsd:long">0</maxSubscriptions>
           </request>
      </soapenv:Body>
    </soapenv:Envelope>

The Normalized message produced by the cxf-bc component is as follows:
    InOut[
      id: ID:10.40.137.92-12a3cbd4a84-13:117
      status: Active
      role: provider
      service: {zzz}www
      endpoint: xslt
      operation: {zzz}qqq
      in: <?xml version="1.0" encoding="UTF-8"?>
        <request xmlns="xxx">
          <maxSubscriptions xsi:type="xsd:long">0</maxSubscriptions>
        </request>
    ]

The further processing fails because of missing declaration of the
prefix "xsd", as it was in the Envelope tag and was removed by the
cxf-bc component. The error looks like this:
    ; Line#: -1; Column#: -1
    net.sf.saxon.trans.XPathException: Namespace prefix 'xsd' has not
been declared
        at net.sf.saxon.om.StructuredQName.fromLexicalQName(StructuredQName.java:108)
        at net.sf.saxon.functions.ResolveQName.evaluateItem(ResolveQName.java:34)
        at net.sf.saxon.functions.Component.evaluateItem(Component.java:61)
        at net.sf.saxon.expr.SingletonComparison.effectiveBooleanValue(SingletonComparison.java:96)
        at net.sf.saxon.instruct.Choose.processLeavingTail(Choose.java:679)
    ....

I'm, using apache-servicemix version 3.3.2 with components version 2010-01.
All hints and suggestions would be very valuable. Excuse me for my poor English.

Karolis Petrauskas

Re: Problems with namespaces

Posted by Karolis Petrauskas <k....@gmail.com>.
Thank you!

Karolis Petrauskas
On Wed, Aug 4, 2010 at 3:57 PM, Freeman Fang <fr...@gmail.com> wrote:
> Hi,
>
> This is a known issue  tracked by SMXCOMP-747[1] and already get fixed,  you
> ma need use servicemix-cxf-bc 2010.02-SNAPSHOT to pick up this fix.
>
> [1]https://issues.apache.org/activemq/browse/SMXCOMP-747
>
> Freeman
> On 2010-8-4, at 下午8:23, Karolis Petrauskas wrote:
>
>> Hello,
>>
>>   I have a problem with processing of namespaces in the
>> servicemix-cxf-bc component. I'm exposing a web service using this
>> component, and trying to invoke it using apache-axis 1.4 client (i
>> cant change the stack for the client). I'm getting an error "Namespace
>> prefix 'xsd' has not been declared" (more details bellow). Axis
>> declares this namespace in the tag soapenv:Envelope, which is then
>> removed by the cxf-bc endpoint.
>>   I had a very similar situation in apache ode. There the
>> namespaces, especially those, used in the xsi:type attributes only,
>> were lost in assign and invoke statements. I fixed ode locally, and
>> added each namespace in the context explicitly by creating
>> corresponding attributes.
>>   I can try to fix this issue in the servicemix too, but i want to
>> ask you if i'm doing something wrong with namespaces, or is it a bug
>> in the servicemix?
>>
>> org.apache.cxf.interceptor.LoggingInInterceptor writes the following
>> xml (irrelevant parts are ommited, and xml if formated to be more
>> readeable):
>>   <?xml version="1.0" encoding="UTF-8"?>
>>   <soapenv:Envelope
>>       xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>>       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>>       <soapenv:Body>
>>         <request xmlns="xxx">
>>             <maxSubscriptions xsi:type="xsd:long">0</maxSubscriptions>
>>          </request>
>>     </soapenv:Body>
>>   </soapenv:Envelope>
>>
>> The Normalized message produced by the cxf-bc component is as follows:
>>   InOut[
>>     id: ID:10.40.137.92-12a3cbd4a84-13:117
>>     status: Active
>>     role: provider
>>     service: {zzz}www
>>     endpoint: xslt
>>     operation: {zzz}qqq
>>     in: <?xml version="1.0" encoding="UTF-8"?>
>>       <request xmlns="xxx">
>>         <maxSubscriptions xsi:type="xsd:long">0</maxSubscriptions>
>>       </request>
>>   ]
>>
>> The further processing fails because of missing declaration of the
>> prefix "xsd", as it was in the Envelope tag and was removed by the
>> cxf-bc component. The error looks like this:
>>   ; Line#: -1; Column#: -1
>>   net.sf.saxon.trans.XPathException: Namespace prefix 'xsd' has not
>> been declared
>>       at
>> net.sf.saxon.om.StructuredQName.fromLexicalQName(StructuredQName.java:108)
>>       at
>> net.sf.saxon.functions.ResolveQName.evaluateItem(ResolveQName.java:34)
>>       at net.sf.saxon.functions.Component.evaluateItem(Component.java:61)
>>       at
>> net.sf.saxon.expr.SingletonComparison.effectiveBooleanValue(SingletonComparison.java:96)
>>       at net.sf.saxon.instruct.Choose.processLeavingTail(Choose.java:679)
>>   ....
>>
>> I'm, using apache-servicemix version 3.3.2 with components version
>> 2010-01.
>> All hints and suggestions would be very valuable. Excuse me for my poor
>> English.
>>
>> Karolis Petrauskas
>
>
> --
> Freeman Fang
>
> ------------------------
> Open Source SOA: http://fusesource.com
> Apache Servicemix:http://servicemix.apache.org
> Apache Cxf: http://cxf.apache.org
> Apache Karaf: http://karaf.apache.org
> Apache Felix: http://felix.apache.org
>
>

Re: Problems with namespaces

Posted by Freeman Fang <fr...@gmail.com>.
Hi,

This is a known issue  tracked by SMXCOMP-747[1] and already get  
fixed,  you ma need use servicemix-cxf-bc 2010.02-SNAPSHOT to pick up  
this fix.

[1]https://issues.apache.org/activemq/browse/SMXCOMP-747

Freeman
On 2010-8-4, at 下午8:23, Karolis Petrauskas wrote:

> Hello,
>
>    I have a problem with processing of namespaces in the
> servicemix-cxf-bc component. I'm exposing a web service using this
> component, and trying to invoke it using apache-axis 1.4 client (i
> cant change the stack for the client). I'm getting an error "Namespace
> prefix 'xsd' has not been declared" (more details bellow). Axis
> declares this namespace in the tag soapenv:Envelope, which is then
> removed by the cxf-bc endpoint.
>    I had a very similar situation in apache ode. There the
> namespaces, especially those, used in the xsi:type attributes only,
> were lost in assign and invoke statements. I fixed ode locally, and
> added each namespace in the context explicitly by creating
> corresponding attributes.
>    I can try to fix this issue in the servicemix too, but i want to
> ask you if i'm doing something wrong with namespaces, or is it a bug
> in the servicemix?
>
> org.apache.cxf.interceptor.LoggingInInterceptor writes the following
> xml (irrelevant parts are ommited, and xml if formated to be more
> readeable):
>    <?xml version="1.0" encoding="UTF-8"?>
>    <soapenv:Envelope
>        xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>        <soapenv:Body>
>          <request xmlns="xxx">
>              <maxSubscriptions xsi:type="xsd:long">0</ 
> maxSubscriptions>
>           </request>
>      </soapenv:Body>
>    </soapenv:Envelope>
>
> The Normalized message produced by the cxf-bc component is as follows:
>    InOut[
>      id: ID:10.40.137.92-12a3cbd4a84-13:117
>      status: Active
>      role: provider
>      service: {zzz}www
>      endpoint: xslt
>      operation: {zzz}qqq
>      in: <?xml version="1.0" encoding="UTF-8"?>
>        <request xmlns="xxx">
>          <maxSubscriptions xsi:type="xsd:long">0</maxSubscriptions>
>        </request>
>    ]
>
> The further processing fails because of missing declaration of the
> prefix "xsd", as it was in the Envelope tag and was removed by the
> cxf-bc component. The error looks like this:
>    ; Line#: -1; Column#: -1
>    net.sf.saxon.trans.XPathException: Namespace prefix 'xsd' has not
> been declared
>        at  
> net 
> .sf.saxon.om.StructuredQName.fromLexicalQName(StructuredQName.java: 
> 108)
>        at  
> net.sf.saxon.functions.ResolveQName.evaluateItem(ResolveQName.java:34)
>        at  
> net.sf.saxon.functions.Component.evaluateItem(Component.java:61)
>        at  
> net 
> .sf 
> .saxon 
> .expr 
> .SingletonComparison.effectiveBooleanValue(SingletonComparison.java: 
> 96)
>        at  
> net.sf.saxon.instruct.Choose.processLeavingTail(Choose.java:679)
>    ....
>
> I'm, using apache-servicemix version 3.3.2 with components version  
> 2010-01.
> All hints and suggestions would be very valuable. Excuse me for my  
> poor English.
>
> Karolis Petrauskas


-- 
Freeman Fang

------------------------
Open Source SOA: http://fusesource.com
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org