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:

ka...@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)
ka...@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

Reply via email to