Hi Kiren Looks like a jaxrs:client/@serviceClass is missing
Cheers, Sergey On 07/08/14 14:25, Kiren Pillay wrote:
Hi Sergey, I'm trying to use the local transport as outlined in our email before. I can't seem to get the client injected into my Service bean (I'm using 2.7.7). <!-- local transport --> <jaxrs:server id="localRestContainer" address="local://rsservice" transportId="http://cxf.apache.org/transports/local"> <jaxrs:serviceBeans> <ref bean="msisdnLessSimService" /> </jaxrs:serviceBeans> <jaxrs:providers> <ref bean="jaxbProvider" /> <ref bean="pamsExceptionMapper" /> <ref bean="pamsRuntimeExceptionMapper" /> </jaxrs:providers> <jaxrs:invoker> <bean class="za.co.vodacom.pams.bs.WebServiceAuthorizationInvoker" /> </jaxrs:invoker> </jaxrs:server> <!-- Local transport --> <jaxrs:client id="webClient" address="local://rsservice" > </jaxrs:client> <bean id="pamsInfo" class="za.co.vodacom.pams.bs.info.PAMSInfoServiceImpl"> <property name="webClient" ref="webClient"></property> </bean> [ContextLoader]initWebApplicationContext(main) 308 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webClient': Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.cxf.jaxrs.client.Client org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean.create()] threw exception; nested exception is javax.ws.rs.NotFoundException at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:581) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1015) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911) On Sun, Nov 17, 2013 at 5:47 PM, Kiren Pillay <[email protected]> wrote:Okay, I was was supposed to use "#" in front of bean name. Thx On Sun, Nov 17, 2013 at 11:42 AM, Kiren Pillay <[email protected]> wrote:Hi Sergei, I'm trying to use the bean reference for the implementing class but am getting a classNotFoundError (CXF2.7.7). Is this a bug or is there a special way to reference the bean. Also, wouldn't it be better to have a bean-ref attribute rather than the implementor attribute? <bean id="soapMmsBilling" class="za.co.vodacom.pams.soap.SoapMmsBillingRequestImpl"> <!-- Inject local client <property name="localRestClient" ref="localHttpClient"/>--> </bean> <jaxws:endpoint id="MmsBillingSoapWebservice" serviceName="customer:OpenWaveMmsBilling" implementor="soapMmsBilling" xmlns:customer="http://www.openwave.com/protocols/oip/"> <jaxws:features> <bean class="org.apache.cxf.feature.LoggingFeature" /> </jaxws:features> </jaxws:endpoint> org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'MmsBillingSoapWebservice': Cannot create inner bean '(inner bean)' of type [soapMmsBilling] while setting constructor argument; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [soapMmsBilling] for bean with name '(inner bean)#1' defined in null; nested exception is java.lang.ClassNotFoundException: soapMmsBilling at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:281) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:125) at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:616) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:623) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675) at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1322) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065) at org.apache.catalina.core.StandardHost.start(StandardHost.java:862) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) at org.apache.catalina.core.StandardService.start(StandardService.java:525) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 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:601) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [soapMmsBilling] for bean with name '(inner bean)#1' defined in null; nested exception is java.lang.ClassNotFoundException: soapMmsBilling at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1262) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:433) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:270) ... 41 more Caused by: java.lang.ClassNotFoundException: soapMmsBilling at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) at org.springframework.util.ClassUtils.forName(ClassUtils.java:258) at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:417) at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1283) at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1254) On Thu, Nov 14, 2013 at 12:54 PM, Kiren Pillay <[email protected]> wrote:Thanks Sergey, will give it a try! Regards Kiren On Thu, Nov 14, 2013 at 12:36 PM, Sergey Beryozkin <[email protected]> wrote:Hi Kiren Add one more jaxrs:server endpoint with a local transport address, sharing the same JAX-RS bean with the HTTP-aware jaxrs:endpoint, and then inject a jaxrs:client or WebClient initialized with the local transport address into your JAX-WS server, example, <jaxrs:server address="/http"> <jaxrs:serviceBeans> <ref bean="service"/> </jaxrs:serviceBeans> </jaxrs:server> <jaxrs:server address="local://rsservice" transportId="http://cxf.apache.org/transports/local"> <jaxrs:serviceBeans> <ref bean="service"/> </jaxrs:serviceBeans> </jaxrs:server> <jaxrs:client address="local://rsservice"> </jaxrs:client> and inject this client (or WebClient) into the soap server This should do Cheers, Sergey On 13/11/13 23:10, Kiren Pillay wrote:Hi Sergey, I am trying to have a SOAP service calling a RESTFUL service, both deployed within the same CXF servlet. What is the best or most efficient way to invoke the RestFul service from the SOAP service?. I want the RestFul service to behave as if its being called from an external source so that the invokers etc are all called as normal. I'm trying the following call but it doesn't seem to be invoking the service. Both the SOAP and REST service are within the same Servlet Context. WebClient wc = WebClient.create( " http://localhost:8080/deploy-mms-billing/rest/function/mmsBilling", "test", "test", null); Regards Kiren-- Sergey Beryozkin Talend Community Coders http://coders.talend.com/ Blog: http://sberyozkin.blogspot.com
