`
dove19900520
  • 浏览: 597467 次
  • 性别: 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

    10. **社区支持**:作为开源项目,Jersey拥有活跃的社区和丰富的文档资源,开发者可以在遇到问题时寻求帮助,或者参与项目的改进。 综上所述,Jersey是一个强大的工具,可以帮助开发者快速、高效地构建RESTful Web...

    Jersey初次使用有感

    总结来说,"Jersey初次使用有感" 这篇文章可能涵盖了从安装配置到编写 RESTful 服务的整个过程,以及作者对源码学习和使用测试工具的体会。对于想要涉足 RESTful 服务开发的 Java 开发者而言,这是一篇极具价值的...

    jersey 1.1.7

    9. **文档和社区支持**:了解官方文档、用户手册、论坛以及社区资源,以便在开发过程中遇到问题时寻求帮助。 10. **最佳实践**:根据1.1.7版本的特性,提出开发REST服务的最佳实践和注意事项。 通过以上这些知识点...

    jersey整合spring示例,亲测可行

    本文将通过一个实际的案例,详述整合过程中可能遇到的问题以及解决方法,帮助开发者避免花费过多时间在调试上。 1. **集成环境准备**: - JDK:确保安装了 Java 开发环境,并且版本与项目需求相符。 - Maven 或 ...

    基于restful框架jersey

    在实际项目中,经常会遇到需要将Jersey与Spring MVC框架结合使用的场景。下面详细介绍如何进行整合: ##### 1. pom.xml中的依赖配置 ```xml &lt;groupId&gt;org.glassfish.jersey.ext &lt;artifactId&gt;jersey-spring3 ${...

    Jersey Java规范下REST风格Web Service开发框架

    这为解决开发过程中遇到的问题提供了便利。 #### 四、示例代码分析 下面的示例代码展示了如何使用 Jersey 创建一个简单的 RESTful Web 服务: ```java import java.util.HashMap; import javax.ws.rs.GET; import...

    JERSEY-2878:演示我在 Jersey HTTP 客户端中发现的错误

    在描述中,我们看到这是一个使用 Gradle 构建的简单示例项目,用于重现 JIRA 问题 JERSEY-2878。 Java 是一种广泛使用的面向对象的编程语言,特别是在服务器端应用程序开发中。Gradle 是一个现代的构建自动化工具,...

    jersey-post-test

    在 "jersey-post-test" 项目中,问题可能出现在 Apache HTTP 客户端向使用 Jersey 和 Grizzly 的服务器发送分块请求时。这可能涉及到数据解析、缓冲区管理或者错误的边界处理。测试用例的目标是复现和解决这类问题,...

    jersey:泽西岛Java REST API

    10. **社区支持**:作为开源项目,泽西有活跃的社区,提供文档、示例和问题解答,有助于开发者解决开发过程中遇到的问题。 通过学习和使用泽西框架,开发者可以高效地构建出符合REST原则的Java Web服务,提供简洁、...

    jersey119:球衣1.19试用

    在实践过程中,可能会遇到的问题包括但不限于:配置错误导致服务无法启动、HTTP方法映射不正确、JSON或XML序列化/反序列化问题、客户端与服务端的版本兼容性等。解决这些问题通常需要对Java、HTTP协议、REST原则以及...

    openfire3.10编译缺少的JAR包

    在编译Openfire 3.10版本时,可能会遇到由于缺少依赖JAR包导致的编译问题。为了解决这一困扰,我们已经收集并整理了大约20个关键的JAR包,旨在确保编译过程的顺利进行。下面,我们将逐一解析这些JAR包的功能和作用。...

    Web Services示例Java代码.zip

    通过深入研究这个压缩包中的Java代码示例,你可以学习到如何在实际项目中创建和使用Web服务,理解它们的工作原理,以及如何解决在开发过程中遇到的问题。这将对你的Java Web开发能力提升大有裨益。

    njit-client已编译,适合Ubuntu

    njit-client在5月18日的更新中修复了5月9日版本中存在的一些问题,这表明开发者对软件的维护和更新非常积极,以确保用户的稳定使用体验。这样的持续改进对于任何软件来说都是至关重要的,因为它可以减少用户遇到的...

    SpringBoot中文手册

    针对在学习过程中遇到的问题,可以通过多种渠道获取帮助,例如官方文档、社区论坛等。 #### 二、入门指南 **2.1 第一步** 介绍如何开始使用SpringBoot,包括理解其核心概念和特性。 **2.2 使用SpringBoot** 概述...

    jerseyEntityFilteringNestingIssue

    标题“jerseyEntityFilteringNestingIssue”暗示了一个与Jersey框架有关的问题,可能是关于实体过滤(Entity Filtering)在嵌套结构中的应用遇到了困难。Jersey是Java的一个RESTful Web服务客户端和服务器实现,它...

    Spring boot 中文.pdf

    - **启动失败**:遇到问题时,如何调试启动过程。 - **自定义 Banner**:在应用程序启动时显示自定义的信息。 - **定制 SpringApplication**:如何扩展或自定义 SpringApplication 的行为。 - **流式构建 API**...

    jax-rs jax-ws所需包,亲测可用

    3. 如果在IDE中使用Maven或Gradle,需要将这些依赖添加到相应的配置文件中。 4. 重新编译并运行项目,确认错误是否已消除。 通过以上步骤,开发者可以快速搭建一个能正确处理JAX-RS和JAX-WS服务的环境,无需手动...

Global site tag (gtag.js) - Google Analytics