You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by ychawla <pr...@yahoo.com> on 2009/06/11 20:37:18 UTC

No operation found in the CXF client

Hello All,
I am trying to consume a web service as the origin of a camel route and
later on down the line invoke a web service.  I have this working by just
consuming an xml message from a folder and invoking a web service, but when
I try to connect the two web services I get an error:

org.apache.camel.RuntimeCamelException: No operation found in the CXF
client, the operation is
{http://wijiscommons.org/ssaf/drop-off/}pointerUpload
	at
org.apache.camel.component.cxf.CxfProducer.invokeClient(CxfProducer.java:266)
	at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:182)
	at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:155)
	at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:69)

However, the service I am actually trying to call has a different namespace. 
Here are the beans:

<!-- web service that I call -->
	<cxf:cxfEndpoint id="pointerUploadService"
		address="https://someURL:17444/xfire/PointerUpload"
		serviceClass="somepackage.PointerUploadService"
		endpointName="puService:PointerUploadService"
	
xmlns:puService="http://www.wisconsin.gov/wijis/gateway/PointerUploadService/"/>
	
<!-- web service that I consume -->
	<cxf:cxfEndpoint id="dropoffSynchronousWebService-endpoint"
		serviceClass="org.wijiscommons.ssaf.drop_off.DropOffSynchronousService"
		address="/DropOffSynchronousService"
		endpointName="s:DropOffSynchronousService"
		serviceName="s:DropOffSynchronousService"
		xmlns:s="http://wijiscommons.org/ssaf/drop-off/"
		>
		<cxf:inInterceptors>
			<ref bean="x509Interceptor"/>
		</cxf:inInterceptors>
	</cxf:cxfEndpoint>

	
	<http-conf:conduit name="*.http-conduit">
		<http-conf:tlsClientParameters secureSocketProtocol="SSL">
			<sec:keyManagers keyPassword="changeit">
				<sec:keyStore type="JKS" password="changeit"
					file="something.key"/>
			</sec:keyManagers>       
			<sec:trustManagers>
				<sec:keyStore type="JKS" password="changeit"
					file="/somepath/cacerts"/>
			</sec:trustManagers>
			<sec:cipherSuitesFilter>
				<sec:include>.*.*</sec:include>
			</sec:cipherSuitesFilter>
		</http-conf:tlsClientParameters>
	</http-conf:conduit>	

Here are the routes:
<route>
   <from uri="cxf:bean:dropoffSynchronousWebService-endpoint" />
   <!-- do a bunch of stuff -->
<setHeader
headerName="operationName"><constant>pointerUpload</constant></setHeader>
		<to uri="cxf:bean:pointerUploadService?dataFormat=POJO"  />
</route>

Note all of the above is in Camel 1.6.0 and CXF 2.1.3

When I upgrade to Camel 1.6.1 and CXF 2.2.2, I get a different error and am
unable to start my server.  It looks like it tries to create the same
endpoint twice.  Can anyone help me out with what I am doing wrong here?  If
I take out either CXF bean, everything works fine, but ideally I would like
to hook these two services up through Camel.

INFO: Creating Service
{http://wijiscommons.org/ssaf/drop-off/}DropOffSynchronousService from class
org.wijiscommons.ssaf.drop_off.DropOffSynchronousService
Jun 11, 2009 1:41:01 PM org.apache.cxf.endpoint.ServerImpl initDestination
INFO: Setting the server's publish address to be /DropOffSynchronousService
Jun 11, 2009 1:41:02 PM
org.apache.cxf.service.factory.ReflectionServiceFactoryBean
buildServiceFromClass
INFO: Creating Service
{http://www.wisconsin.gov/wijis/gateway/PointerUploadService/}PointerUploadServiceService
from class
gov.wisconsin.wijis.gateway.pointeruploadservice.PointerUploadService
2009-06-11 13:41:03,141 INFO [org.apache.camel.impl.DefaultCamelContext] -
Apache Camel 1.6.1 (CamelContext:camelContext) started
2009-06-11 13:41:03,255 INFO [org.springframework.web.context.ContextLoader]
- Root WebApplicationContext: initialization completed in 9329 ms
Jun 11, 2009 1:41:03 PM org.apache.cxf.transport.servlet.CXFServlet
updateContext
INFO: Load the bus with application context
2009-06-11 13:41:03,272 INFO
[org.apache.cxf.bus.spring.BusApplicationContext] - Refreshing
org.apache.cxf.bus.spring.BusApplicationContext@fe0ce1: display name
[org.apache.cxf.bus.spring.BusApplicationContext@fe0ce1]; startup date [Thu
Jun 11 13:41:03 CDT 2009]; parent:
org.springframework.web.context.support.XmlWebApplicationContext@1884174
Jun 11, 2009 1:41:03 PM org.apache.cxf.bus.spring.BusApplicationContext
getConfigResources
INFO: No cxf.xml configuration file detected, relying on defaults.
2009-06-11 13:41:03,290 INFO
[org.apache.cxf.bus.spring.BusApplicationContext] - Bean factory for
application context
[org.apache.cxf.bus.spring.BusApplicationContext@fe0ce1]:
org.springframework.beans.factory.support.DefaultListableBeanFactory@29d838
2009-06-11 13:41:03,290 INFO
[org.springframework.beans.factory.support.DefaultListableBeanFactory] -
Pre-instantiating singletons in
org.springframework.beans.factory.support.DefaultListableBeanFactory@29d838:
defining beans []; parent:
org.springframework.beans.factory.support.DefaultListableBeanFactory@1d03a4e
Jun 11, 2009 1:41:03 PM
org.apache.cxf.service.factory.ReflectionServiceFactoryBean
buildServiceFromClass
INFO: Creating Service
{http://wijiscommons.org/ssaf/drop-off/}DropOffSynchronousService from class
org.wijiscommons.ssaf.drop_off.DropOffSynchronousService
Jun 11, 2009 1:41:03 PM org.apache.cxf.endpoint.ServerImpl initDestination
INFO: Setting the server's publish address to be /DropOffSynchronousService
Jun 11, 2009 1:41:03 PM org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.RuntimeException: Soap 1.1 endpoint already registered on address
/DropOffSynchronousService
	at
org.apache.cxf.binding.soap.SoapBindingFactory.addListener(SoapBindingFactory.java:769)
	at org.apache.cxf.endpoint.ServerImpl.start(ServerImpl.java:122)
	at org.apache.camel.component.cxf.CxfConsumer.doStart(CxfConsumer.java:110)
	at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:53)
	at
org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:427)
	at
org.apache.camel.impl.DefaultCamelContext.startRoutes(DefaultCamelContext.java:694)
	at
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:611)
	at
org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:96)
	at
org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:115)
	at
org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)
	at
org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
	at
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)
	at
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274)
	at
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:276)
	at
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736)
	at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:383)
	at
org.apache.cxf.bus.spring.BusApplicationContext.<init>(BusApplicationContext.java:91)
	at
org.apache.cxf.bus.spring.SpringBusFactory.createApplicationContext(SpringBusFactory.java:102)
	at
org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:93)
	at
org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:86)
	at
org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:64)
	at
org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:53)
	at
org.apache.cxf.transport.servlet.CXFServlet.updateContext(CXFServlet.java:121)
	at
org.apache.cxf.transport.servlet.CXFServlet.loadSpringBus(CXFServlet.java:101)
	at org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:70)
	at
org.apache.cxf.transport.servlet.AbstractCXFServlet.init(AbstractCXFServlet.java:79)
	at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
	at
org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
	at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)


-- 
View this message in context: http://www.nabble.com/No-operation-found-in-the-CXF-client-tp23986700p23986700.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: No operation found in the CXF client

Posted by Willem Jiang <wi...@gmail.com>.
Yeah, the behavior of the camel-1.6.1 is not right.
Please feel free to create a JIRA with it.
Since we have same unit tests with you use case in camel-1.x branch, and
they look good, please submit a test case to reproduce this issue, so I
can dig the issue sooner.

Thanks for you contribution on the wiki page.

Willem


ychawla wrote:
> Hello All,
> I solved the issue on Camel 1.6.0.  The solution was to add a header called
> operationNameSpace:
> <setHeader
> headerName="operationNameSpace"><constant>http://www.wisconsin.gov/wijis/gateway/PointerUploadService/</constant></setHeader>
> 
> This did the trick.  My assumption was that since this message went over a
> JMS queue that the header called operationNameSpace was added and took on
> the original consuming endpoint namespace of:
> operationNameSpace=http://wijiscommons.org/ssaf/drop-off/
> 
> This might have been to support Soap over JMS.  When I updated this
> operation namespace, my service worked.  I am concerned that it doesn't work
> in 1.6.1.  Should I file a JIRA about this?
> 
> I also updated the CXF WIKI page:
> http://cwiki.apache.org/confluence/display/CAMEL/CXF
> 
> I added the sentence: When you are invoking the service endpoint, you can
> set the operationName and operationNameSpace headers to explicitly state
> which operation you are calling.
> 
> Hope this is okay with Camel folks out there.
> 
> Cheers,
> Yogesh
> 
> 
> 
> ychawla wrote:
>> Hello All,
>> I am trying to consume a web service as the origin of a camel route and
>> later on down the line invoke a web service.  I have this working by just
>> consuming an xml message from a folder and invoking a web service, but
>> when I try to connect the two web services I get an error:
>>
>> org.apache.camel.RuntimeCamelException: No operation found in the CXF
>> client, the operation is
>> {http://wijiscommons.org/ssaf/drop-off/}pointerUpload
>> 	at
>> org.apache.camel.component.cxf.CxfProducer.invokeClient(CxfProducer.java:266)
>> 	at
>> org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:182)
>> 	at
>> org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:155)
>> 	at
>> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:69)
>>
>> However, the service I am actually trying to call has a different
>> namespace.  Here are the beans:
>>
>> <!-- web service that I call -->
>> 	<cxf:cxfEndpoint id="pointerUploadService"
>> 		address="https://someURL:17444/xfire/PointerUpload"
>> 		serviceClass="somepackage.PointerUploadService"
>> 		endpointName="puService:PointerUploadService"
>> 	
>> xmlns:puService="http://www.wisconsin.gov/wijis/gateway/PointerUploadService/"/>
>> 	
>> <!-- web service that I consume -->
>> 	<cxf:cxfEndpoint id="dropoffSynchronousWebService-endpoint"
>> 		serviceClass="org.wijiscommons.ssaf.drop_off.DropOffSynchronousService"
>> 		address="/DropOffSynchronousService"
>> 		endpointName="s:DropOffSynchronousService"
>> 		serviceName="s:DropOffSynchronousService"
>> 		xmlns:s="http://wijiscommons.org/ssaf/drop-off/"
>> 		>
>> 		<cxf:inInterceptors>
>> 			<ref bean="x509Interceptor"/>
>> 		</cxf:inInterceptors>
>> 	</cxf:cxfEndpoint>
>>
>> 	
>> 	<http-conf:conduit name="*.http-conduit">
>> 		<http-conf:tlsClientParameters secureSocketProtocol="SSL">
>> 			<sec:keyManagers keyPassword="changeit">
>> 				<sec:keyStore type="JKS" password="changeit"
>> 					file="something.key"/>
>> 			</sec:keyManagers>       
>> 			<sec:trustManagers>
>> 				<sec:keyStore type="JKS" password="changeit"
>> 					file="/somepath/cacerts"/>
>> 			</sec:trustManagers>
>> 			<sec:cipherSuitesFilter>
>> 				<sec:include>.*.*</sec:include>
>> 			</sec:cipherSuitesFilter>
>> 		</http-conf:tlsClientParameters>
>> 	</http-conf:conduit>	
>>
>> Here are the routes:
>> <route>
>>    <from uri="cxf:bean:dropoffSynchronousWebService-endpoint" />
>>    <!-- do a bunch of stuff -->
>> <setHeader
>> headerName="operationName"><constant>pointerUpload</constant></setHeader>
>> 		<to uri="cxf:bean:pointerUploadService?dataFormat=POJO"  />
>> </route>
>>
>> Note all of the above is in Camel 1.6.0 and CXF 2.1.3
>>
>> When I upgrade to Camel 1.6.1 and CXF 2.2.2, I get a different error and
>> am unable to start my server.  It looks like it tries to create the same
>> endpoint twice.  Can anyone help me out with what I am doing wrong here? 
>> If I take out either CXF bean, everything works fine, but ideally I would
>> like to hook these two services up through Camel.
>>
>> INFO: Creating Service
>> {http://wijiscommons.org/ssaf/drop-off/}DropOffSynchronousService from
>> class org.wijiscommons.ssaf.drop_off.DropOffSynchronousService
>> Jun 11, 2009 1:41:01 PM org.apache.cxf.endpoint.ServerImpl initDestination
>> INFO: Setting the server's publish address to be
>> /DropOffSynchronousService
>> Jun 11, 2009 1:41:02 PM
>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
>> buildServiceFromClass
>> INFO: Creating Service
>> {http://www.wisconsin.gov/wijis/gateway/PointerUploadService/}PointerUploadServiceService
>> from class
>> gov.wisconsin.wijis.gateway.pointeruploadservice.PointerUploadService
>> 2009-06-11 13:41:03,141 INFO [org.apache.camel.impl.DefaultCamelContext] -
>> Apache Camel 1.6.1 (CamelContext:camelContext) started
>> 2009-06-11 13:41:03,255 INFO
>> [org.springframework.web.context.ContextLoader] - Root
>> WebApplicationContext: initialization completed in 9329 ms
>> Jun 11, 2009 1:41:03 PM org.apache.cxf.transport.servlet.CXFServlet
>> updateContext
>> INFO: Load the bus with application context
>> 2009-06-11 13:41:03,272 INFO
>> [org.apache.cxf.bus.spring.BusApplicationContext] - Refreshing
>> org.apache.cxf.bus.spring.BusApplicationContext@fe0ce1: display name
>> [org.apache.cxf.bus.spring.BusApplicationContext@fe0ce1]; startup date
>> [Thu Jun 11 13:41:03 CDT 2009]; parent:
>> org.springframework.web.context.support.XmlWebApplicationContext@1884174
>> Jun 11, 2009 1:41:03 PM org.apache.cxf.bus.spring.BusApplicationContext
>> getConfigResources
>> INFO: No cxf.xml configuration file detected, relying on defaults.
>> 2009-06-11 13:41:03,290 INFO
>> [org.apache.cxf.bus.spring.BusApplicationContext] - Bean factory for
>> application context
>> [org.apache.cxf.bus.spring.BusApplicationContext@fe0ce1]:
>> org.springframework.beans.factory.support.DefaultListableBeanFactory@29d838
>> 2009-06-11 13:41:03,290 INFO
>> [org.springframework.beans.factory.support.DefaultListableBeanFactory] -
>> Pre-instantiating singletons in
>> org.springframework.beans.factory.support.DefaultListableBeanFactory@29d838:
>> defining beans []; parent:
>> org.springframework.beans.factory.support.DefaultListableBeanFactory@1d03a4e
>> Jun 11, 2009 1:41:03 PM
>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
>> buildServiceFromClass
>> INFO: Creating Service
>> {http://wijiscommons.org/ssaf/drop-off/}DropOffSynchronousService from
>> class org.wijiscommons.ssaf.drop_off.DropOffSynchronousService
>> Jun 11, 2009 1:41:03 PM org.apache.cxf.endpoint.ServerImpl initDestination
>> INFO: Setting the server's publish address to be
>> /DropOffSynchronousService
>> Jun 11, 2009 1:41:03 PM org.apache.catalina.core.ApplicationContext log
>> SEVERE: StandardWrapper.Throwable
>> java.lang.RuntimeException: Soap 1.1 endpoint already registered on
>> address /DropOffSynchronousService
>> 	at
>> org.apache.cxf.binding.soap.SoapBindingFactory.addListener(SoapBindingFactory.java:769)
>> 	at org.apache.cxf.endpoint.ServerImpl.start(ServerImpl.java:122)
>> 	at
>> org.apache.camel.component.cxf.CxfConsumer.doStart(CxfConsumer.java:110)
>> 	at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:53)
>> 	at
>> org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:427)
>> 	at
>> org.apache.camel.impl.DefaultCamelContext.startRoutes(DefaultCamelContext.java:694)
>> 	at
>> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:611)
>> 	at
>> org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:96)
>> 	at
>> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:115)
>> 	at
>> org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)
>> 	at
>> org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
>> 	at
>> org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)
>> 	at
>> org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274)
>> 	at
>> org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:276)
>> 	at
>> org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736)
>> 	at
>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:383)
>> 	at
>> org.apache.cxf.bus.spring.BusApplicationContext.<init>(BusApplicationContext.java:91)
>> 	at
>> org.apache.cxf.bus.spring.SpringBusFactory.createApplicationContext(SpringBusFactory.java:102)
>> 	at
>> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:93)
>> 	at
>> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:86)
>> 	at
>> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:64)
>> 	at
>> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:53)
>> 	at
>> org.apache.cxf.transport.servlet.CXFServlet.updateContext(CXFServlet.java:121)
>> 	at
>> org.apache.cxf.transport.servlet.CXFServlet.loadSpringBus(CXFServlet.java:101)
>> 	at
>> org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:70)
>> 	at
>> org.apache.cxf.transport.servlet.AbstractCXFServlet.init(AbstractCXFServlet.java:79)
>> 	at
>> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
>> 	at
>> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
>> 	at
>> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
>> 	at
>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
>> 	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>> 	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>> 	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>> 	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>> 	at
>> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>> 	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>> 	at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> 	at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> 	at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> 	at java.lang.reflect.Method.invoke(Method.java:597)
>> 	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>> 	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>>
>>
>>
> 


Re: No operation found in the CXF client

Posted by ychawla <pr...@yahoo.com>.
Hello All,
I solved the issue on Camel 1.6.0.  The solution was to add a header called
operationNameSpace:
<setHeader
headerName="operationNameSpace"><constant>http://www.wisconsin.gov/wijis/gateway/PointerUploadService/</constant></setHeader>

This did the trick.  My assumption was that since this message went over a
JMS queue that the header called operationNameSpace was added and took on
the original consuming endpoint namespace of:
operationNameSpace=http://wijiscommons.org/ssaf/drop-off/

This might have been to support Soap over JMS.  When I updated this
operation namespace, my service worked.  I am concerned that it doesn't work
in 1.6.1.  Should I file a JIRA about this?

I also updated the CXF WIKI page:
http://cwiki.apache.org/confluence/display/CAMEL/CXF

I added the sentence: When you are invoking the service endpoint, you can
set the operationName and operationNameSpace headers to explicitly state
which operation you are calling.

Hope this is okay with Camel folks out there.

Cheers,
Yogesh



ychawla wrote:
> 
> Hello All,
> I am trying to consume a web service as the origin of a camel route and
> later on down the line invoke a web service.  I have this working by just
> consuming an xml message from a folder and invoking a web service, but
> when I try to connect the two web services I get an error:
> 
> org.apache.camel.RuntimeCamelException: No operation found in the CXF
> client, the operation is
> {http://wijiscommons.org/ssaf/drop-off/}pointerUpload
> 	at
> org.apache.camel.component.cxf.CxfProducer.invokeClient(CxfProducer.java:266)
> 	at
> org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:182)
> 	at
> org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:155)
> 	at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:69)
> 
> However, the service I am actually trying to call has a different
> namespace.  Here are the beans:
> 
> <!-- web service that I call -->
> 	<cxf:cxfEndpoint id="pointerUploadService"
> 		address="https://someURL:17444/xfire/PointerUpload"
> 		serviceClass="somepackage.PointerUploadService"
> 		endpointName="puService:PointerUploadService"
> 	
> xmlns:puService="http://www.wisconsin.gov/wijis/gateway/PointerUploadService/"/>
> 	
> <!-- web service that I consume -->
> 	<cxf:cxfEndpoint id="dropoffSynchronousWebService-endpoint"
> 		serviceClass="org.wijiscommons.ssaf.drop_off.DropOffSynchronousService"
> 		address="/DropOffSynchronousService"
> 		endpointName="s:DropOffSynchronousService"
> 		serviceName="s:DropOffSynchronousService"
> 		xmlns:s="http://wijiscommons.org/ssaf/drop-off/"
> 		>
> 		<cxf:inInterceptors>
> 			<ref bean="x509Interceptor"/>
> 		</cxf:inInterceptors>
> 	</cxf:cxfEndpoint>
> 
> 	
> 	<http-conf:conduit name="*.http-conduit">
> 		<http-conf:tlsClientParameters secureSocketProtocol="SSL">
> 			<sec:keyManagers keyPassword="changeit">
> 				<sec:keyStore type="JKS" password="changeit"
> 					file="something.key"/>
> 			</sec:keyManagers>       
> 			<sec:trustManagers>
> 				<sec:keyStore type="JKS" password="changeit"
> 					file="/somepath/cacerts"/>
> 			</sec:trustManagers>
> 			<sec:cipherSuitesFilter>
> 				<sec:include>.*.*</sec:include>
> 			</sec:cipherSuitesFilter>
> 		</http-conf:tlsClientParameters>
> 	</http-conf:conduit>	
> 
> Here are the routes:
> <route>
>    <from uri="cxf:bean:dropoffSynchronousWebService-endpoint" />
>    <!-- do a bunch of stuff -->
> <setHeader
> headerName="operationName"><constant>pointerUpload</constant></setHeader>
> 		<to uri="cxf:bean:pointerUploadService?dataFormat=POJO"  />
> </route>
> 
> Note all of the above is in Camel 1.6.0 and CXF 2.1.3
> 
> When I upgrade to Camel 1.6.1 and CXF 2.2.2, I get a different error and
> am unable to start my server.  It looks like it tries to create the same
> endpoint twice.  Can anyone help me out with what I am doing wrong here? 
> If I take out either CXF bean, everything works fine, but ideally I would
> like to hook these two services up through Camel.
> 
> INFO: Creating Service
> {http://wijiscommons.org/ssaf/drop-off/}DropOffSynchronousService from
> class org.wijiscommons.ssaf.drop_off.DropOffSynchronousService
> Jun 11, 2009 1:41:01 PM org.apache.cxf.endpoint.ServerImpl initDestination
> INFO: Setting the server's publish address to be
> /DropOffSynchronousService
> Jun 11, 2009 1:41:02 PM
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromClass
> INFO: Creating Service
> {http://www.wisconsin.gov/wijis/gateway/PointerUploadService/}PointerUploadServiceService
> from class
> gov.wisconsin.wijis.gateway.pointeruploadservice.PointerUploadService
> 2009-06-11 13:41:03,141 INFO [org.apache.camel.impl.DefaultCamelContext] -
> Apache Camel 1.6.1 (CamelContext:camelContext) started
> 2009-06-11 13:41:03,255 INFO
> [org.springframework.web.context.ContextLoader] - Root
> WebApplicationContext: initialization completed in 9329 ms
> Jun 11, 2009 1:41:03 PM org.apache.cxf.transport.servlet.CXFServlet
> updateContext
> INFO: Load the bus with application context
> 2009-06-11 13:41:03,272 INFO
> [org.apache.cxf.bus.spring.BusApplicationContext] - Refreshing
> org.apache.cxf.bus.spring.BusApplicationContext@fe0ce1: display name
> [org.apache.cxf.bus.spring.BusApplicationContext@fe0ce1]; startup date
> [Thu Jun 11 13:41:03 CDT 2009]; parent:
> org.springframework.web.context.support.XmlWebApplicationContext@1884174
> Jun 11, 2009 1:41:03 PM org.apache.cxf.bus.spring.BusApplicationContext
> getConfigResources
> INFO: No cxf.xml configuration file detected, relying on defaults.
> 2009-06-11 13:41:03,290 INFO
> [org.apache.cxf.bus.spring.BusApplicationContext] - Bean factory for
> application context
> [org.apache.cxf.bus.spring.BusApplicationContext@fe0ce1]:
> org.springframework.beans.factory.support.DefaultListableBeanFactory@29d838
> 2009-06-11 13:41:03,290 INFO
> [org.springframework.beans.factory.support.DefaultListableBeanFactory] -
> Pre-instantiating singletons in
> org.springframework.beans.factory.support.DefaultListableBeanFactory@29d838:
> defining beans []; parent:
> org.springframework.beans.factory.support.DefaultListableBeanFactory@1d03a4e
> Jun 11, 2009 1:41:03 PM
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromClass
> INFO: Creating Service
> {http://wijiscommons.org/ssaf/drop-off/}DropOffSynchronousService from
> class org.wijiscommons.ssaf.drop_off.DropOffSynchronousService
> Jun 11, 2009 1:41:03 PM org.apache.cxf.endpoint.ServerImpl initDestination
> INFO: Setting the server's publish address to be
> /DropOffSynchronousService
> Jun 11, 2009 1:41:03 PM org.apache.catalina.core.ApplicationContext log
> SEVERE: StandardWrapper.Throwable
> java.lang.RuntimeException: Soap 1.1 endpoint already registered on
> address /DropOffSynchronousService
> 	at
> org.apache.cxf.binding.soap.SoapBindingFactory.addListener(SoapBindingFactory.java:769)
> 	at org.apache.cxf.endpoint.ServerImpl.start(ServerImpl.java:122)
> 	at
> org.apache.camel.component.cxf.CxfConsumer.doStart(CxfConsumer.java:110)
> 	at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:53)
> 	at
> org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:427)
> 	at
> org.apache.camel.impl.DefaultCamelContext.startRoutes(DefaultCamelContext.java:694)
> 	at
> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:611)
> 	at
> org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:96)
> 	at
> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:115)
> 	at
> org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)
> 	at
> org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
> 	at
> org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)
> 	at
> org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274)
> 	at
> org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:276)
> 	at
> org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736)
> 	at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:383)
> 	at
> org.apache.cxf.bus.spring.BusApplicationContext.<init>(BusApplicationContext.java:91)
> 	at
> org.apache.cxf.bus.spring.SpringBusFactory.createApplicationContext(SpringBusFactory.java:102)
> 	at
> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:93)
> 	at
> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:86)
> 	at
> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:64)
> 	at
> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:53)
> 	at
> org.apache.cxf.transport.servlet.CXFServlet.updateContext(CXFServlet.java:121)
> 	at
> org.apache.cxf.transport.servlet.CXFServlet.loadSpringBus(CXFServlet.java:101)
> 	at
> org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:70)
> 	at
> org.apache.cxf.transport.servlet.AbstractCXFServlet.init(AbstractCXFServlet.java:79)
> 	at
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
> 	at
> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
> 	at
> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
> 	at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
> 	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
> 	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
> 	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
> 	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
> 	at
> org.apache.catalina.core.StandardService.start(StandardService.java:516)
> 	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
> 	at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
> 	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/No-operation-found-in-the-CXF-client-tp23986700p24005954.html
Sent from the Camel - Users mailing list archive at Nabble.com.