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