3

I am trying to implement restfull webservice using apache cxf.

while deploying the war file in tomcat I am getting the error as Error creating bean with name 'Analysis': Invocation of init method failed; nested exception is org.apache.cxf.service.factory.ServiceConstructionException

INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/cxf.xml]
03-Nov-2014 17:03:40 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@12f41a5: defining beans [/Analysis/,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,Analysis,AnalysisResponse,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy
03-Nov-2014 17:03:40 org.apache.cxf.jaxrs.utils.ResourceUtils checkMethodDispatcher
WARNING: No resource methods have been found for resource class com.bt.ws.pointsystem.pojo.AnalysisResponse
03-Nov-2014 17:03:40 org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean checkResources
SEVERE: No resource classes found
03-Nov-2014 17:03:40 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@12f41a5: defining beans [/Analysis/,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,Analysis,AnalysisResponse,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy
03-Nov-2014 17:03:40 org.springframework.web.context.ContextLoader initWebApplicationContext
SEVERE: Context initialization failed

Below is cxf.xml:

<beans default-autowire="byName" xmlns="http://www.springframework.org/schema/beans"
xmlns:jaxrs="http://cxf.apache.org/jaxrs" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:tx="http://www.springframework.org/schema/tx" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd">

  <context:component-scan base-package="com.bt.ws.pointsystem,com.bt.ws.pointsystem.pojo" />


  <jaxrs:server address="/" id="Analysis">
   <jaxrs:serviceBeans>
              <ref bean="AnalysisResponse" />

   </jaxrs:serviceBeans>
   <jaxrs:extensionMappings>
    <entry key="xml" value="application/xml">
    </entry>
   </jaxrs:extensionMappings>
  </jaxrs:server>
    <bean class="com.bt.ws.pointsystem.pojo.AnalysisResponse" id="AnalysisResponse">
    </bean>
</beans>

web.xml:

<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

 <web-app>
  <display-name>PointSystemService</display-name>

  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>WEB-INF/cxf.xml</param-value>
  </context-param>
  <listener>

   <listener-class>
    org.springframework.web.context.ContextLoaderListener
   </listener-class>
  </listener>
  <servlet>
   <servlet-name>CXFServlet</servlet-name>

   <servlet-class>
    org.apache.cxf.transport.servlet.CXFServlet
   </servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>CXFServlet</servlet-name>

   <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
 </web-app>

Class Definition:

package com.bt.ws.pointsystem.pojo;

public class AnalysisResponse {
    private String UserId;
    private String AnalysisType;
    public String getUserId() {
        return UserId;
    }
    public void setUserId(String userId) {
        UserId = userId;
    }
    public String getAnalysisType() {
        return AnalysisType;
    }
    public void setAnalysisType(String analysisType) {
        AnalysisType = analysisType;
    }





}

what else I am missing here?

TIA

kavuru
  • 379
  • 3
  • 4
  • 14
  • possible duplicate of [No resource classes found on a cxf Servlet](http://stackoverflow.com/questions/5244112/no-resource-classes-found-on-a-cxf-servlet) – kolossus Nov 04 '14 at 17:11
  • In may case I enabled the trace log and I saw the following [error](http://stackoverflow.com/questions/33023730/jax-rs-method-has-no-path-or-http-method-annotations) – Christian Oct 22 '15 at 07:23

3 Answers3

3

Another common cause of this problem is having the method annotated with @Path protected rather than public.

Holly Cummins
  • 10,767
  • 3
  • 23
  • 25
1

I experienced a similar problem that disappeared when I corrected the @WebService annotation, which needs to be on the interface and not the service class.

Matthias Wuttke
  • 1,982
  • 2
  • 21
  • 38
0

I get the same problem after upgrading dependency. I had to replace every javax with jakarta.

Galigator
  • 8,957
  • 2
  • 25
  • 39