You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2015/07/06 11:40:04 UTC

[jira] [Resolved] (CAMEL-8929) Camel spring-ws. Can't specify messageFactory parameter in endpoint uri

     [ https://issues.apache.org/jira/browse/CAMEL-8929?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Claus Ibsen resolved CAMEL-8929.
--------------------------------
       Resolution: Not A Problem
         Assignee: Claus Ibsen
    Fix Version/s: 2.16.0

> Camel spring-ws. Can't specify messageFactory parameter in  endpoint uri
> ------------------------------------------------------------------------
>
>                 Key: CAMEL-8929
>                 URL: https://issues.apache.org/jira/browse/CAMEL-8929
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-spring-ws
>    Affects Versions: 2.15.2
>            Reporter: Bakomchev Dmitriy
>            Assignee: Claus Ibsen
>             Fix For: 2.16.0
>
>
> i use camel with spring-ws. i configure routes:
> {code}
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans"
>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>        xmlns:util="http://www.springframework.org/schema/util"
>        xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans.xsd
>                http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
> 	<camelContext id="someID"  xmlns="http://camel.apache.org/schema/spring">
> 	    <endpoint id="externalRequest" uri="spring-ws\:rootqname\:{http\://somehost.com/xsd/some-xsd}method?endpointMapping\=\endpointMapping&messageFactory\=\#soap12MessageFactory" />
> 	    <endpoint id="internalRequest" uri="spring-ws\:http://localhost:8080/someMock?messageSender\=\#someMessageSender" />
> 	    <route id="fromExternal">
> 	        <from ref="externalRequest" />
> 	        <to uri="direct:toInternalSystem" />
> 	    </route>
> 	    <route id="toInternal" trace = "true">
> 	        <from uri="direct:toInternalSystem" />
> 	        <log message="Received  ${body}" />
> 	        <to ref="internalRequest" pattern="InOut" />
> 	    </route>
> 	</camelContext>
> 	<bean id="soap12MessageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
> 	    <property name="soapVersion">
> 	        <util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_12"/>
> 	    </property>
> 	</bean>
> </beans>
> {code}
> and during startup i get error:
> {code}
> SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
> org.apache.camel.RuntimeCamelException: org.apache.camel.FailedToCreateRouteException: Failed to create route fromAxToEsb: Route(fromAxToEsb)[[From[ref:returnsAdviceRequestAx]] -> [To... because of org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'returnsAdviceRequestAx': FactoryBean threw exception on object creation; nested exception is org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: spring-ws://rootqname:%7Bhttp://lamoda.ru/xsd/goods-movement%7Dadvice?endpointMapping=endpointMapping&messageFactory=%23soap12MessageFactory due to: Failed to resolve endpoint: spring-ws://rootqname:(http://lamoda.ru/xsd/goods-movement)advice?endpointMapping=endpointMapping&messageFactory=%23soap12MessageFactory due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{messageFactory=#soap12MessageFactory}]
> 	at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1619)
> 	at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:123)
> 	at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:332)
> 	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:151)
> 	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:128)
> 	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:331)
> 	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:773)
> 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:483)
> 	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)
> 	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
> 	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
> 	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4994)
> 	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5492)
> 	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> 	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
> 	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
> 	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
> 	at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1762)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
> 	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
> 	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
> 	at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618)
> 	at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
> 	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
> 	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
> 	at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)
> 	at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
> 	at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
> 	at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)
> 	at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
> 	at sun.rmi.transport.Transport$1.run(Transport.java:177)
> 	at sun.rmi.transport.Transport$1.run(Transport.java:174)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
> 	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)
> 	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
> 	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> 	at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route fromAxToEsb: Route(fromAxToEsb)[[From[ref:returnsAdviceRequestAx]] -> [To... because of org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'returnsAdviceRequestAx': FactoryBean threw exception on object creation; nested exception is org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: spring-ws://rootqname:%7Bhttp://lamoda.ru/xsd/goods-movement%7Dadvice?endpointMapping=endpointMapping&messageFactory=%23soap12MessageFactory due to: Failed to resolve endpoint: spring-ws://rootqname:(http://lamoda.ru/xsd/goods-movement)advice?endpointMapping=endpointMapping&messageFactory=%23soap12MessageFactory due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{messageFactory=#soap12MessageFactory}]
> 	at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:190)
> 	at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:841)
> 	at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:2895)
> 	at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:2618)
> 	at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:167)
> 	at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2467)
> 	at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2463)
> 	at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2486)
> 	at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2463)
> 	at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
> 	at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2432)
> 	at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:255)
> 	at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:121)
> 	... 52 more
> Caused by: org.apache.camel.RuntimeCamelException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'returnsAdviceRequestAx': FactoryBean threw exception on object creation; nested exception is org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: spring-ws://rootqname:%7Bhttp://lamoda.ru/xsd/goods-movement%7Dadvice?endpointMapping=endpointMapping&messageFactory=%23soap12MessageFactory due to: Failed to resolve endpoint: spring-ws://rootqname:(http://lamoda.ru/xsd/goods-movement)advice?endpointMapping=endpointMapping&messageFactory=%23soap12MessageFactory due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{messageFactory=#soap12MessageFactory}]
> 	at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1619)
> 	at org.apache.camel.impl.PropertyPlaceholderDelegateRegistry.lookupByNameAndType(PropertyPlaceholderDelegateRegistry.java:65)
> 	at org.apache.camel.impl.DefaultRouteContext.lookup(DefaultRouteContext.java:142)
> 	at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:119)
> 	at org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:70)
> 	at org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:89)
> 	at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1008)
> 	at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:185)
> 	... 64 more
> Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'returnsAdviceRequestAx': FactoryBean threw exception on object creation; nested exception is org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: spring-ws://rootqname:%7Bhttp://lamoda.ru/xsd/goods-movement%7Dadvice?endpointMapping=endpointMapping&messageFactory=%23soap12MessageFactory due to: Failed to resolve endpoint: spring-ws://rootqname:(http://lamoda.ru/xsd/goods-movement)advice?endpointMapping=endpointMapping&messageFactory=%23soap12MessageFactory due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{messageFactory=#soap12MessageFactory}]
> 	at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:175)
> 	at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:103)
> 	at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1517)
> 	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:251)
> 	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
> 	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:962)
> 	at org.apache.camel.spring.spi.ApplicationContextRegistry.lookupByNameAndType(ApplicationContextRegistry.java:47)
> 	at org.apache.camel.impl.PropertyPlaceholderDelegateRegistry.lookupByNameAndType(PropertyPlaceholderDelegateRegistry.java:63)
> 	... 70 more
> Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: spring-ws://rootqname:%7Bhttp://lamoda.ru/xsd/goods-movement%7Dadvice?endpointMapping=endpointMapping&messageFactory=%23soap12MessageFactory due to: Failed to resolve endpoint: spring-ws://rootqname:(http://lamoda.ru/xsd/goods-movement)advice?endpointMapping=endpointMapping&messageFactory=%23soap12MessageFactory due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{messageFactory=#soap12MessageFactory}]
> 	at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:578)
> 	at org.apache.camel.core.xml.AbstractCamelEndpointFactoryBean.getObject(AbstractCamelEndpointFactoryBean.java:55)
> 	at org.apache.camel.spring.CamelEndpointFactoryBean.getObject(CamelEndpointFactoryBean.java:55)
> 	at org.apache.camel.spring.CamelEndpointFactoryBean.getObject(CamelEndpointFactoryBean.java:38)
> 	at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:168)
> 	... 77 more
> Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: spring-ws://rootqname:(http://lamoda.ru/xsd/goods-movement)advice?endpointMapping=endpointMapping&messageFactory=%23soap12MessageFactory due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{messageFactory=#soap12MessageFactory}]
> 	at org.apache.camel.impl.DefaultComponent.validateParameters(DefaultComponent.java:183)
> 	at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:128)
> 	at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:558)
> 	... 81 more
> {code}
> As i see org.apache.camel.component.spring.ws.SpringWebserviceConfiguration does not have messageFactory property
> but in documentation (http://camel.apache.org/spring-web-services.html)
> i read 
> {code}
> messageFactory --- 
> Option to provide a custom WebServiceMessageFactory. For example when you want Apache Axiom to handle web service messages instead of SAAJ{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)