我正在研究球衣网络服务。我能够创建一些服务,它工作得很好。
当我创建此服务 MClientManagerImpl 时,我收到以下提到的错误。
该球衣正在注册类型为com.vxl.service.impl.MClientManagerImpl的Spring bean,mClientManager作为根资源类。我不知道为什么泽西将这个注册为根资源类。
@Service("mClientManager")
@Path("/clientmanager")
public class MClientManagerImpl extends GenericManagerImpl<MClient, Long>
implements MClientManager {
MClientDao mClientDao;
@Inject
@Autowired
public MClientManagerImpl(@InjectParam MClientDao mClientDao) {
super(mClientDao);
this.mClientDao = mClientDao;
}
@POST
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
@Path("/getclient")
@Override
public String getclient(String json) {
System.out.println(json);
return null;
}
}
INFO: Initializing Spring root WebApplicationContext
Oct 16, 2013 9:52:53 AM com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
com.vxl.service
Oct 16, 2013 9:52:53 AM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
class com.vxl.service.impl.FDefectManagerImpl
class com.vxl.service.impl.FComponentCodeMetricManagerImpl
class com.vxl.service.impl.DimTestCaseManagerImpl
class com.vxl.service.impl.FProjectManagerImpl
class com.vxl.service.impl.DimOrganizationManagerImpl
class com.vxl.service.impl.DimRequirementManagerImpl
class com.vxl.service.impl.FCodingBestPracticeViolationsManagerImpl
class com.vxl.service.impl.DimDefectManagerImpl
class com.vxl.service.impl.MSourceInstanceManagerImpl
class com.vxl.service.impl.DimProjectManagerImpl
Oct 16, 2013 9:52:53 AM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
Oct 16, 2013 9:52:53 AM com.sun.jersey.spi.spring.container.servlet.SpringServlet getContext
INFO: Using default applicationContext
Oct 16, 2013 9:52:53 AM com.sun.jersey.spi.spring.container.SpringComponentProviderFactory registerSpringBeans
INFO: Registering Spring bean, mClientManager, of type com.vxl.service.impl.MClientManagerImpl as a root resource class
Oct 16, 2013 9:52:53 AM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.8 06/24/2011 12:17 PM'
Oct 16, 2013 9:52:54 AM com.sun.jersey.spi.spring.container.servlet.SpringServlet initiate
SEVERE: Exception occurred when intialization
org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'mClientManager' must be of type [com.vxl.service.impl.MClientManagerImpl], but was actually of type [com.sun.proxy.$Proxy134]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:360)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1109)
at com.sun.jersey.spi.spring.container.SpringComponentProviderFactory$SpringManagedComponentProvider.getInstance(SpringComponentProviderFactory.java:235)
at com.sun.jersey.server.impl.component.IoCResourceFactory$SingletonWrapper.init(IoCResourceFactory.java:178)
at com.sun.jersey.server.impl.application.WebApplicationImpl$10.f(WebApplicationImpl.java:584)
at com.sun.jersey.server.impl.application.WebApplicationImpl$10.f(WebApplicationImpl.java:581)
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
at com.sun.jersey.server.impl.application.WebApplicationImpl.getResourceComponentProvider(WebApplicationImpl.java:581)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiateResource(WebApplicationImpl.java:658)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiateResource(WebApplicationImpl.java:653)
at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:124)
at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1298)
at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:169)
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:775)
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:771)
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:771)
at com.sun.jersey.spi.spring.container.servlet.SpringServlet.initiate(SpringServlet.java:117)
at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:318)
at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:609)
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:373)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:556)
at javax.servlet.GenericServlet.init(GenericServlet.java:160)
我用谷歌搜索,我没有得到答案,请帮助我。
答案 0 :(得分:0)
@Inject
@Autowired
public MClientManagerImpl(@InjectParam MClientDao mClientDao) {
super(mClientDao);
this.mClientDao = mClientDao;
}
此代码是您问题的根本原因,您应该完全依赖界面而不是自动装配课程,请查看this answer by Tomasz Nurkiewicz