You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by mindchi <tb...@acm.org> on 2010/07/22 17:47:18 UTC

Servicemix 4/CXF: Unable to locate Spring NamespaceHandler ...

I'm currently having problems creating and running a CXF client within
Servicemix 4. I've spent
quite some time reading posts and other information on the Internet, and
while others have
apparently run into a similar problem, I haven't seen anything that's in the
same context as what
I am doing.  What I'm trying to do is to create a Camel component which
among other things invokes an external web service using CXF. Using CXF
alone is not a problem, however, getting all of Servicemix
4/Camel/OSGi/Spring DM working together is not so easy. Perhaps someone can
shed some light on what
I am missing, or point me to a working example of something similar to what
I am doing. I've looked 
through both the Servicemix 4 and CXF examples, but none are close enough to
what I am doing to be
of much help.
 
Let me start with the beans.xml file. It looks like the following:

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:ctx="http://www.springframework.org/schema/context"
  xmlns:osgi="http://www.springframework.org/schema/osgi"
  xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
  xmlns:camel-osgi="http://camel.apache.org/schema/osgi"
  xmlns:jaxws="http://cxf.apache.org/jaxws"
  xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
        http://www.springframework.org/schema/osgi
        http://www.springframework.org/schema/osgi/spring-osgi.xsd
        http://www.springframework.org/schema/osgi-compendium
       
http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd
        http://www.springframework.org/schema/context
       	http://www.springframework.org/schema/context/spring-context.xsd
        http://camel.apache.org/schema/osgi
        http://camel.apache.org/schema/osgi/camel-osgi.xsd  
        http://cxf.apache.org/jaxws 
        http://cxf.apache.org/schemas/jaxws.xsd">

 <!--  I added these in, but they just caused more NamespaceHandler problems
    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
    <import resource="classpath:META-INF/cxf/osgi/cxf-extension-osgi.xml" />
 -->

  <bean id="proxyFactory"
class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
    <property name="serviceClass" value="com.myorg.ports.DEMOPortType"/>
    <property name="address" value="http://localhost:9002/DEMO"/>
  </bean>

  <bean id="client" class="com.myorg.ports.DEMOPortType"
    factory-bean="proxyFactory" factory-method="create"/>
 
  <camel-osgi:camelContext xmlns="http://camel.apache.org/schema/spring">
     <route>
        <from
uri="demo://route-test-demo?demoEndpointAddress=https://localhost:7443/DEMO"
/>
        <to uri="file:///C:/WSMR/C2GW/test/c2gw-pass" />
     </route>
  </camel-osgi:camelContext>

</beans>


My POM Import-Package are as follows:

	<Import-Package>
	             org.apache.commons.logging,
                             org.apache.commons.digester;version="2.0",
                             org.apache.commons.configuration;version="1.6",
                             org.apache.commons.io;version="1.4",
                             javax.jws.*,
                             javax.xml.*,
                             javax.net.*,
                             javax.wsdl,
                             META-INF.cxf,
                             META-INF.cxf.osgi, 

                             javax.xml.transform,
	             javax.xml.soap,
					
                             org.w3c.dom,
                             org.xml.sax,

                             org.apache.camel,
                             org.apache.camel.model,
                             org.apache.camel.spi,
                             org.apache.camel.builder,
                             org.apache.camel.language,
                             org.apache.camel.spring.handler,

                             org.apache.cxf,
                             org.apache.cxf.io,
                             org.apache.cxf.frontend,
                             org.apache.cxf.configuration.jsse,
                             org.apache.cxf.message,
                             org.apache.cxf.helpers,
                             org.apache.cxf.interceptor,
                             org.apache.cxf.binding.soap,
                             org.apache.cxf.binding.soap.interceptor,
                             org.apache.cxf.bus,
                             org.apache.cxf.jaxws,
                             org.apache.cxf.bus.resource,
                             org.apache.cxf.bus.spring,
                             org.apache.cxf.buslifecycle,
                             org.apache.cxf.catalog,
                             org.apache.cxf.configuration.spring,
                             org.apache.cxf.endpoint,
                             org.apache.cxf.headers,
                             org.apache.cxf.phase,
                             org.apache.cxf.resource,
                             org.apache.cxf.transport,
                             org.apache.cxf.transport.http,
                             org.apache.cxf.workqueue,
                             org.apache.cxf.wsdl11,
                             org.apache.cxf.transport.https,
                             org.apache.servicemix.cxf.transport.http_osgi,
                             org.apache.cxf.transport.http_jetty,
                             org.osgi.framework,
                             org.springframework.beans.factory.config,
			     *
                          </Import-Package>


When I start the bundle, I get the following error output on the Karaf
console:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Unable to locate Spring NamespaceHandler for XML
 schema namespace [http://camel.apache.org/schema/osgi]
Offending resource: class path resource [META-INF/spring/beans.xml]

        at
org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
        at
org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
        at
org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)
        at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:281)
        at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1294)
        at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1287)
        at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.jav
a:135)
        at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.
java:92)
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:507)
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:398)
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
        at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
        at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
        at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
        at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
        at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212)
        at
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:113)
        at
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:80)
        at
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.jav
a:123)
        at
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:422)
        at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
        at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
        at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
                            :
                            :

So, one of the questions is, is the camel-spring-osgi bundle running in
Servicemix?

Here's the output from osgi:list command:

karaf@root> list |grep -i camel
[  98] [Active     ] [            ] [       ] [   60] camel-core
(2.2.0.fuse-01-00)
[ 100] [Active     ] [            ] [       ] [   60] camel-spring-osgi
(2.2.0.fuse-01-00)
[ 130] [Active     ] [            ] [       ] [   60] camel-cxf
(2.2.0.fuse-01-00)
[ 156] [Active     ] [            ] [       ] [   60] camel-jms
(2.2.0.fuse-01-00)
[ 169] [Active     ] [            ] [       ] [   60] ServiceMix :: Camel
(2010.01.0.fuse-01-00)
[ 180] [Active     ] [            ] [       ] [   60] Apache ServiceMix
Camel Component (4.2.0.fuse-01-00)
[ 190] [Active     ] [            ] [       ] [   60] camel-jxpath
(2.2.0.fuse-01-00)
karaf@root>

So, it appears that the camel-spring-osgi bundle is present.
Perhaps I need to include additional Import-Package? But if so, do I need to
do this for
every namespace? As I mentioned earlier when I added the additional imports
into my
beans.xml I get additional errors with reagards to finding
NamespaceHandlers.

I've been working on this for some time now, getting a bit frustrated and
thinking why does it 
need to be so difficult? If anyone has encountered this problem and can
explain to me how to 
correct it, it would be much appreciated. Failing that, if someone has a
working example of a
CXF client/server working in Servicemix 4, that would be appreciated as
well.

Thanks.


-T


-- 
View this message in context: http://servicemix.396122.n5.nabble.com/Servicemix-4-CXF-Unable-to-locate-Spring-NamespaceHandler-tp1842459p1842459.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Re: Servicemix 4/CXF: Unable to locate Spring NamespaceHandler ...

Posted by mindchi <tb...@acm.org>.
Hi,

Ultimately, my Camel component Consumer will accept data as
a web service.
When the Component is instantiated, it will connect to
another web Service and
make a subscription request, which will cause
that service to make service calls
back to my Component passing it
data. So, I have the CXF client being created in
the initialization
method of the Consumer. It needs to be executed once when the=A0
component is created.

Hopefully this clarifies things.

-T

-- 
View this message in context: http://servicemix.396122.n5.nabble.com/Servicemix-4-CXF-Unable-to-locate-Spring-NamespaceHandler-tp1842459p1843403.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Re: Servicemix 4/CXF: Unable to locate Spring NamespaceHandler ...

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

A quick question about your working flow as I can't understand it.

How is the cxf client working with camel router?


Freeman
On 2010-7-22, at 下午11:47, mindchi wrote:

>
> I'm currently having problems creating and running a CXF client within
> Servicemix 4. I've spent
> quite some time reading posts and other information on the Internet,  
> and
> while others have
> apparently run into a similar problem, I haven't seen anything  
> that's in the
> same context as what
> I am doing.  What I'm trying to do is to create a Camel component  
> which
> among other things invokes an external web service using CXF. Using  
> CXF
> alone is not a problem, however, getting all of Servicemix
> 4/Camel/OSGi/Spring DM working together is not so easy. Perhaps  
> someone can
> shed some light on what
> I am missing, or point me to a working example of something similar  
> to what
> I am doing. I've looked
> through both the Servicemix 4 and CXF examples, but none are close  
> enough to
> what I am doing to be
> of much help.
>
> Let me start with the beans.xml file. It looks like the following:
>
> <beans xmlns="http://www.springframework.org/schema/beans"
>  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>  xmlns:ctx="http://www.springframework.org/schema/context"
>  xmlns:osgi="http://www.springframework.org/schema/osgi"
>  xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
>  xmlns:camel-osgi="http://camel.apache.org/schema/osgi"
>  xmlns:jaxws="http://cxf.apache.org/jaxws"
>  xsi:schemaLocation="
>        http://www.springframework.org/schema/beans
>        http://www.springframework.org/schema/beans/spring- 
> beans-2.0.xsd
>        http://www.springframework.org/schema/osgi
>        http://www.springframework.org/schema/osgi/spring-osgi.xsd
>        http://www.springframework.org/schema/osgi-compendium
>
> http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd
>        http://www.springframework.org/schema/context
>       	http://www.springframework.org/schema/context/spring- 
> context.xsd
>        http://camel.apache.org/schema/osgi
>        http://camel.apache.org/schema/osgi/camel-osgi.xsd
>        http://cxf.apache.org/jaxws
>        http://cxf.apache.org/schemas/jaxws.xsd">
>
> <!--  I added these in, but they just caused more NamespaceHandler  
> problems
>    <import resource="classpath:META-INF/cxf/cxf.xml" />
>    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
>    <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
>    <import resource="classpath:META-INF/cxf/osgi/cxf-extension- 
> osgi.xml" />
> -->
>
>  <bean id="proxyFactory"
> class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
>    <property name="serviceClass"  
> value="com.myorg.ports.DEMOPortType"/>
>    <property name="address" value="http://localhost:9002/DEMO"/>
>  </bean>
>
>  <bean id="client" class="com.myorg.ports.DEMOPortType"
>    factory-bean="proxyFactory" factory-method="create"/>
>
>  <camel-osgi:camelContext xmlns="http://camel.apache.org/schema/ 
> spring">
>     <route>
>        <from
> uri="demo://route-test-demo?demoEndpointAddress=https://localhost:7443/DEMO 
> "
> />
>        <to uri="file:///C:/WSMR/C2GW/test/c2gw-pass" />
>     </route>
>  </camel-osgi:camelContext>
>
> </beans>
>
>
> My POM Import-Package are as follows:
>
> 	<Import-Package>
> 	             org.apache.commons.logging,
>                             org.apache.commons.digester;version="2.0",
>                              
> org.apache.commons.configuration;version="1.6",
>                             org.apache.commons.io;version="1.4",
>                             javax.jws.*,
>                             javax.xml.*,
>                             javax.net.*,
>                             javax.wsdl,
>                             META-INF.cxf,
>                             META-INF.cxf.osgi,
>
>                             javax.xml.transform,
> 	             javax.xml.soap,
> 					
>                             org.w3c.dom,
>                             org.xml.sax,
>
>                             org.apache.camel,
>                             org.apache.camel.model,
>                             org.apache.camel.spi,
>                             org.apache.camel.builder,
>                             org.apache.camel.language,
>                             org.apache.camel.spring.handler,
>
>                             org.apache.cxf,
>                             org.apache.cxf.io,
>                             org.apache.cxf.frontend,
>                             org.apache.cxf.configuration.jsse,
>                             org.apache.cxf.message,
>                             org.apache.cxf.helpers,
>                             org.apache.cxf.interceptor,
>                             org.apache.cxf.binding.soap,
>                             org.apache.cxf.binding.soap.interceptor,
>                             org.apache.cxf.bus,
>                             org.apache.cxf.jaxws,
>                             org.apache.cxf.bus.resource,
>                             org.apache.cxf.bus.spring,
>                             org.apache.cxf.buslifecycle,
>                             org.apache.cxf.catalog,
>                             org.apache.cxf.configuration.spring,
>                             org.apache.cxf.endpoint,
>                             org.apache.cxf.headers,
>                             org.apache.cxf.phase,
>                             org.apache.cxf.resource,
>                             org.apache.cxf.transport,
>                             org.apache.cxf.transport.http,
>                             org.apache.cxf.workqueue,
>                             org.apache.cxf.wsdl11,
>                             org.apache.cxf.transport.https,
>                              
> org.apache.servicemix.cxf.transport.http_osgi,
>                             org.apache.cxf.transport.http_jetty,
>                             org.osgi.framework,
>                             org.springframework.beans.factory.config,
> 			     *
>                          </Import-Package>
>
>
> When I start the bundle, I get the following error output on the Karaf
> console:
>
> org 
> .springframework.beans.factory.parsing.BeanDefinitionParsingException:
> Configuration problem: Unable to locate Spring NamespaceHandler for  
> XML
> schema namespace [http://camel.apache.org/schema/osgi]
> Offending resource: class path resource [META-INF/spring/beans.xml]
>
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .parsing.FailFastProblemReporter.error(FailFastProblemReporter.java: 
> 68)
>        at
> org 
> .springframework 
> .beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
>        at
> org 
> .springframework 
> .beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .xml 
> .BeanDefinitionParserDelegate 
> .error(BeanDefinitionParserDelegate.java:281)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .xml 
> .BeanDefinitionParserDelegate 
> .parseCustomElement(BeanDefinitionParserDelegate.java:1294)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .xml 
> .BeanDefinitionParserDelegate 
> .parseCustomElement(BeanDefinitionParserDelegate.java:1287)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .xml 
> .DefaultBeanDefinitionDocumentReader 
> .parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.jav
> a:135)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .xml 
> .DefaultBeanDefinitionDocumentReader 
> .registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.
> java:92)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .xml 
> .XmlBeanDefinitionReader 
> .registerBeanDefinitions(XmlBeanDefinitionReader.java:507)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .xml 
> .XmlBeanDefinitionReader 
> .doLoadBeanDefinitions(XmlBeanDefinitionReader.java:398)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .xml 
> .XmlBeanDefinitionReader 
> .loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .xml 
> .XmlBeanDefinitionReader 
> .loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .support 
> .AbstractBeanDefinitionReader 
> .loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .support 
> .AbstractBeanDefinitionReader 
> .loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .support 
> .AbstractBeanDefinitionReader 
> .loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
>        at
> org 
> .springframework 
> .beans 
> .factory 
> .support 
> .AbstractBeanDefinitionReader 
> .loadBeanDefinitions(AbstractBeanDefinitionReader.java:212)
>        at
> org 
> .springframework 
> .context 
> .support 
> .AbstractXmlApplicationContext 
> .loadBeanDefinitions(AbstractXmlApplicationContext.java:113)
>        at
> org 
> .springframework 
> .context 
> .support 
> .AbstractXmlApplicationContext 
> .loadBeanDefinitions(AbstractXmlApplicationContext.java:80)
>        at
> org 
> .springframework 
> .context 
> .support 
> .AbstractRefreshableApplicationContext 
> .refreshBeanFactory(AbstractRefreshableApplicationContext.jav
> a:123)
>        at
> org 
> .springframework 
> .context 
> .support 
> .AbstractApplicationContext 
> .obtainFreshBeanFactory(AbstractApplicationContext.java:422)
>        at
> org 
> .springframework 
> .context 
> .support 
> .AbstractApplicationContext.refresh(AbstractApplicationContext.java: 
> 352)
>        at
> org 
> .springframework 
> .context 
> .support 
> .ClassPathXmlApplicationContext 
> .<init>(ClassPathXmlApplicationContext.java:139)
>        at
> org 
> .springframework 
> .context 
> .support 
> .ClassPathXmlApplicationContext 
> .<init>(ClassPathXmlApplicationContext.java:93)
>                            :
>                            :
>
> So, one of the questions is, is the camel-spring-osgi bundle running  
> in
> Servicemix?
>
> Here's the output from osgi:list command:
>
> karaf@root> list |grep -i camel
> [  98] [Active     ] [            ] [       ] [   60] camel-core
> (2.2.0.fuse-01-00)
> [ 100] [Active     ] [            ] [       ] [   60] camel-spring- 
> osgi
> (2.2.0.fuse-01-00)
> [ 130] [Active     ] [            ] [       ] [   60] camel-cxf
> (2.2.0.fuse-01-00)
> [ 156] [Active     ] [            ] [       ] [   60] camel-jms
> (2.2.0.fuse-01-00)
> [ 169] [Active     ] [            ] [       ] [   60] ServiceMix ::  
> Camel
> (2010.01.0.fuse-01-00)
> [ 180] [Active     ] [            ] [       ] [   60] Apache  
> ServiceMix
> Camel Component (4.2.0.fuse-01-00)
> [ 190] [Active     ] [            ] [       ] [   60] camel-jxpath
> (2.2.0.fuse-01-00)
> karaf@root>
>
> So, it appears that the camel-spring-osgi bundle is present.
> Perhaps I need to include additional Import-Package? But if so, do I  
> need to
> do this for
> every namespace? As I mentioned earlier when I added the additional  
> imports
> into my
> beans.xml I get additional errors with reagards to finding
> NamespaceHandlers.
>
> I've been working on this for some time now, getting a bit  
> frustrated and
> thinking why does it
> need to be so difficult? If anyone has encountered this problem and  
> can
> explain to me how to
> correct it, it would be much appreciated. Failing that, if someone  
> has a
> working example of a
> CXF client/server working in Servicemix 4, that would be appreciated  
> as
> well.
>
> Thanks.
>
>
> -T
>
>
> -- 
> View this message in context: http://servicemix.396122.n5.nabble.com/Servicemix-4-CXF-Unable-to-locate-Spring-NamespaceHandler-tp1842459p1842459.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.


-- 
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