`
dove19900520
  • 浏览: 592818 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jersey使用过程中遇到的问题

    博客分类:
  • java
阅读更多

在使用jersey框架搭建服务时,经常会报出如下异常:

com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
	at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99)
	at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1331)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:168)
	at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:774)
	at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:770)
	at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765)
	at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:489)
	at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319)
	at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
	at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
	at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374)
	at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
	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:601)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
	at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
	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:840)
	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:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

 下面是出现这种异常的几种情况

1、在不与spring整合,而是直接使用jersey搭建服务时,如果只在web.xml 中配置了如下代码:

<servlet>
  <servlet-name>abc</servlet-name>
   <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
   <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  <servlet-name>abc</servlet-name>
  <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

 

此时启动tomcat,会报出上面的异常,原因是实例张不包含任何启动资源的类,你要确保实例已经创建,例如:

@Path("abc")
@Produces("application/xml")
@Consumes("application/xml")
public class Abc
{
	@POST
	@Produces("application/xml")
	@Consumes("application/xml")
	public void abc(){
		
	}
	
}

 这样再启动,就可以了。

2、在与spring整合中时,如果出现如上异常,原因可能是:

1)缺少spring-jersey.jar包

将spring-jersey.jar包添加到工程lib下,然后修改下web.xml配置文件

<servlet>
  <servlet-name>abc</servlet-name>
   <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  <servlet-name>abc</servlet-name>
  <url-pattern>/services/*</url-pattern>
  </servlet-mapping> 

然后再重新启动tomcat,就可以了。

2)如果按照1)操作完成后,tomcat启动仍然报上面的异常,此时需要在web.xml中在重新添加点配置信息(红色部分):

<servlet>
  <servlet-name>abc</servlet-name>
  <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
  <init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
   <param-value>com.xxyd.map.webservice</param-value><!--代表的是你服务端的路径,要和你的工程服务器端路径保持一致-->
  </init-param>
  <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  <servlet-name>abc</servlet-name>
  <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

 此时再启动tomcat就可以了。

 

当然,还有一种方式就是重新将“com.sun.jersey.spi.spring.container.servlet.SpringServlet”替换回“com.sun.jersey.spi.spring.container.servlet.SpringServlet”,但如果是这样的话,就失去了spring与jersey整合的意义了,不提倡如此解决。

 

这些是我最近在做项目时遇到的问题,总结一些,供以后学习使用。

但有一点让我很奇怪,百思不得其解的是,在很久之前,我用1)中的配置方式可以正常启动tomcat,但最近写的一些项目中,居然失败了,必须改用2)中的方式,之前用的是jersey-spring-1.5.jar,最近用的是jersey-spring-1.1.7.jar,不知道是不是jar包版本的问题,希望了解或知道原因的朋友给指点迷津,谢谢。

分享到:
评论
3 楼 sz7250 2017-02-10  
我是第一种情况,只是配置jersey框架,报错,我检查了一下实体类,没问题。不知道为啥,tomcat启动就报错
com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
	at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:100)
	at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1013)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.access$600(WebApplicationImpl.java:153)
	at com.sun.jersey.server.impl.application.WebApplicationImpl$11.f(WebApplicationImpl.java:652)
	at com.sun.jersey.server.impl.application.WebApplicationImpl$11.f(WebApplicationImpl.java:649)
	at com.sun.jersey.spi.inject.Errors.processWithErrors(ava:177)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:649)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:644)
	at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:428)
	at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:277)
	at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:573)
	at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:211)
	at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:332)
	at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:496)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1213)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4451)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4768)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:803)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:780)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1080)
	at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1003)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:507)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1322)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:325)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1069)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
	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:759)
	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:606)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
2 楼 oldfoolwolf 2016-03-22  
遇到这个问题,请先检查是不是又Path相同了.
1 楼 stonesfour 2013-09-25  
你这问题怎样解决的呢,我用的jersey1.17版本。也是出现严重: Exception occurred when intialization
com.sun.jersey.spi.inject.Errors$ErrorMessagesException
at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170)
at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770)
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:319)
at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
2013-9-25 16:58:20 org.apache.catalina.core.ApplicationContext log
严重: StandardWrapper.Throwable
com.sun.jersey.spi.inject.Errors$ErrorMessagesException
at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170)
at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770)
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:319)
at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
2013-9-25 16:58:20 org.apache.catalina.core.StandardWrapperValve invoke
求解决???????????????

相关推荐

    Jersey+Spring:解决Jersey单实例问题

    Jersey+Spring:解决Jersey单实例问题

    jersey-core-1.19-API文档-中文版.zip

    赠送jar包:jersey-core-1.19.jar; 赠送原API文档:jersey-core-1.19-javadoc.jar; 赠送源代码:jersey-core-1.19-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    使用Jersey框架搭建Rest服务

    使用Jersey框架搭建Rest服务的教程

    Eclipse中使用Jersey和Tomcat构建RESTful WebService及其调用

    在Eclipse中使用Jersey和Tomcat构建RESTful WebService及其调用

    jersey学习

    jersey

    Jersey 2.25.1 User Guide

    Official Jersey 2.25.1 User Guide. This is user guide for Jersey 2.25.1. We are trying to keep it up to date as we add new features. When reading the user guide, please consult also our Jersey API ...

    jersey所有jar包下载

    Jersey官网下载jar,导入功能即可使用,Jersey官网下载jar,导入功能即可使用

    Jersey所需Jar包

    Jersey所需Jar包。jersey-client、jersey-core、jersey-grizzly2、jersey-server

    jersey-client-1.19-API文档-中文版.zip

    赠送jar包:jersey-client-1.19.jar; 赠送原API文档:jersey-client-1.19-javadoc.jar; 赠送源代码:jersey-client-1.19-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jersey-core-1.9-API文档-中文版.zip

    赠送jar包:jersey-core-1.9.jar; 赠送原API文档:jersey-core-1.9-javadoc.jar; 赠送源代码:jersey-core-1.9-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    flink需要的jersey-core和jersey-client

    如果flink提交jar到yarn上运行报如下错误:java.lang.NoClassDefFoundError: com/sun/jersey/core/util/FeaturesAndProperties,在flink的lib包里面添加这两个jar包

    jersey-common-2.22.2-API文档-中文版.zip

    赠送jar包:jersey-common-2.22.2.jar; 赠送原API文档:jersey-common-2.22.2-javadoc.jar; 赠送源代码:jersey-common-2.22.2-sources...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jersey和jersey+spring的demo

    下载后里面的target目录下有war包,可以直接放在tomcat下运行。...项目使用Intellij Idea 14 创建。 http://localhost:8080/rest/helloWorld/a 单独的jersey http://localhost:8080/rest/demo/hello 集成spring的jersey

    jersey-servlet-1.19-API文档-中文版.zip

    赠送jar包:jersey-servlet-1.19.jar; 赠送原API文档:jersey-servlet-1.19-javadoc.jar; 赠送源代码:jersey-servlet-1.19-sources....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jersey-json-1.19-API文档-中文版.zip

    赠送jar包:jersey-json-1.19.jar; 赠送原API文档:jersey-json-1.19-javadoc.jar; 赠送源代码:jersey-json-1.19-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jersey-server-1.19-API文档-中文版.zip

    赠送jar包:jersey-server-1.19.jar; 赠送原API文档:jersey-server-1.19-javadoc.jar; 赠送源代码:jersey-server-1.19-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    使用Jersey和Tomcat搭建的RESTful WebService

    一个使用Jersey和Tomcat搭建的RESTful WebService,实现了使用Get,POST,PUT,DELETE方法来操作资源,极具构建RESTful WebService的参考价值。

    jersey-media-jaxb-2.22.2-API文档-中英对照版.zip

    赠送jar包:jersey-media-jaxb-2.22.2.jar; 赠送原API文档:jersey-media-jaxb-2.22.2-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

Global site tag (gtag.js) - Google Analytics