Index: src/main/java/com/sun/jersey/spi/spring/container/servlet/SpringServlet.java =================================================================== --- src/main/java/com/sun/jersey/spi/spring/container/servlet/SpringServlet.java (revision 5823) +++ src/main/java/com/sun/jersey/spi/spring/container/servlet/SpringServlet.java (working copy) @@ -21,24 +21,25 @@ */ package com.sun.jersey.spi.spring.container.servlet; -import com.sun.jersey.spi.spring.container.SpringComponentProviderFactory; -import com.sun.jersey.api.core.DefaultResourceConfig; +import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; +import javax.servlet.ServletException; + import org.springframework.context.ConfigurableApplicationContext; import org.springframework.web.context.ConfigurableWebApplicationContext; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import org.springframework.web.context.support.XmlWebApplicationContext; +import com.sun.jersey.api.core.DefaultResourceConfig; import com.sun.jersey.api.core.ResourceConfig; import com.sun.jersey.core.spi.component.ioc.IoCComponentProviderFactory; import com.sun.jersey.spi.container.WebApplication; import com.sun.jersey.spi.container.servlet.ServletContainer; import com.sun.jersey.spi.container.servlet.WebConfig; -import java.util.Map; -import javax.servlet.ServletException; +import com.sun.jersey.spi.spring.container.SpringComponentProviderFactory; /** * A servlet or filter for deploying root resource classes with Spring @@ -153,7 +154,7 @@ final ConfigurableWebApplicationContext ctx = new XmlWebApplicationContext(); ctx.setParent(getDefaultContext()); ctx.setServletContext(getServletContext()); - ctx.setConfigLocation(contextConfigLocation); + ctx.setConfigLocations(new String[]{contextConfigLocation}); ctx.refresh(); return ctx; Index: src/main/java/com/sun/jersey/spi/spring/container/SpringComponentProviderFactory.java =================================================================== --- src/main/java/com/sun/jersey/spi/spring/container/SpringComponentProviderFactory.java (revision 5823) +++ src/main/java/com/sun/jersey/spi/spring/container/SpringComponentProviderFactory.java (working copy) @@ -39,7 +39,9 @@ import java.lang.annotation.Annotation; import java.util.Arrays; import java.util.Collection; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; @@ -50,7 +52,6 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.ApplicationContext; import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.util.ClassUtils; import com.sun.jersey.api.core.ResourceConfig; import com.sun.jersey.api.spring.Autowire; @@ -61,8 +62,6 @@ import com.sun.jersey.core.spi.component.ioc.IoCInstantiatedComponentProvider; import com.sun.jersey.core.spi.component.ioc.IoCManagedComponentProvider; import com.sun.jersey.spi.inject.Inject; -import java.util.HashMap; -import java.util.Map; /** * The Spring-based {@link IoCComponentProviderFactory}. @@ -86,7 +85,7 @@ private void register(ResourceConfig rc, ConfigurableApplicationContext springContext) { String[] names = BeanFactoryUtils.beanNamesIncludingAncestors(springContext); for (String name : names) { - Class type = ClassUtils.getUserClass(springContext.getType(name)); + Class type = getUserClass(springContext.getType(name)); if (ResourceConfig.isProviderClass(type)) { LOGGER.info("Registering Spring bean, " + name + ", of type " + type.getName() + @@ -254,7 +253,7 @@ boolean inheritedNames = false; String beanName = null; for (String name : names) { - Class beanType = ClassUtils.getUserClass(springContext.getType(name)); + Class beanType = getUserClass(springContext.getType(name)); inheritedNames = c.isAssignableFrom(beanType); @@ -330,4 +329,18 @@ } return sb.toString(); } + + /** The CGLIB class separator character "$$" */ + private static final String CGLIB_CLASS_SEPARATOR = "$$"; + + /** + * Return the user-defined class for the given class: usually simply the given + * class, but the original class in case of a CGLIB-generated subclass. + * @param clazz the class to check + * @return the user-defined class + */ + public static Class getUserClass(Class clazz) { + return (clazz != null && clazz.getName().indexOf(CGLIB_CLASS_SEPARATOR) != -1 ? + clazz.getSuperclass() : clazz); + } } Index: pom.xml =================================================================== --- pom.xml (revision 5823) +++ pom.xml (working copy) @@ -177,7 +177,7 @@ - 2.0.5 + 2.0.1 [2.5.2,3)