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




Reply via email to