You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Willem Jiang <wi...@gmail.com> on 2011/02/01 06:03:30 UTC
Re: CXF and spring
On 2/1/11 5:45 AM, Loïc ¨Paillotin wrote:
> Hello,
>
> I am fairly new to CXF and Spring, and have been tasked to port an existing
> XFire Soap service to CXF.
>
> Right now, my service seems to be correctly configured: I can access the
> WSDL which seems correct (minor differences but I'll worry about that
> later).
>
> The problem I have is that some beans that were injected by spring in my
> service under XFire are not injected in my CXF implementation.
What's the bean that is not injected into your CXF implementation?
>
> My implementation class looks something like this:
>
> @WebService(endpointInterface = "demo.cxf.ServiceCxf")
> public class ServiceCxfImpl implements ServiceCxf {
> private SearchService search;
> private SearchSpec spec;
> /**
> * @inheritDoc
> */
> public SearchResult[] searchSimple(SearchSpec spec) {
> return search.searchSimple(spec);
> }
>
> The problem is that my SearchService bean is never instantiated.
>
> My config:
> searchService.xml
> <beans xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:jaxws="http://cxf.apache.org/jaxws"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
>
> <import resource="classpath:META-INF/cxf/cxf.xml" />
> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
> <bean id="aegisBean"
> class="org.apache.cxf.aegis.databinding.AegisDatabinding"
> scope="prototype"/>
> <bean id="jaxws-and-aegis-service-factory"
> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"
> scope="prototype">
> <property name="dataBinding" ref="aegisBean"/>
> <property name="serviceConfigurations">
> <list>
> <bean
> class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/>
> <bean
> class="org.apache.cxf.aegis.databinding.XFireCompatibilityServiceConfiguration"/>
> <bean
> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
> </list>
> </property>
> </bean>
>
>
> <bean id="searchService"
> class="demo.cxf.SearchService"/>
>
>
> <jaxws:endpoint id="ServiceCxf"
> implementor=demo.cxf.ServiceCxfImpl"
CXF will create the service implementer for your in this case.
> address="/searchServiceCxf">
> <jaxws:serviceFactory>
> <ref bean='jaxws-and-aegis-service-factory'/>
> <ref bean='searchService'/>
> </jaxws:serviceFactory>
>
>
> </jaxws:endpoint>
> </beans>
>
> In web.xml, my servlet is simply configured like so:
>
> <servlet>
> <servlet-name>CXFServlet</servlet-name>
> <display-name>CXF Servlet</display-name>
> <servlet-class>
> org.apache.cxf.transport.servlet.CXFServlet
> </servlet-class>
> </servlet>
>
> <servlet-mapping>
> <servlet-name>CXFServlet</servlet-name>
> <url-pattern>/cxf/*</url-pattern>
> </servlet-mapping>
>
>
> I have no idea why I can't inject the bean using spring. I tried lots of
> different things that probably make no sense, and I am a bit lost to be
> honest.
> Could somebody point me in the right direction?
>
> Thanks a lot in advance for your help.
>
> --
> Loïc Paillotin
>
--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.javaeye.com (Chinese)
Twitter: willemjiang