Jersey服务开启却报404的错误
2015-08-17 15:14
591 查看
首先,在确保Jar包没有导错的情况下。我们来看一下源代码:
webservice:
[align=left]
[/align]
[align=left]为了简单测试,这里就简单打印"Hello XXX"。注意一下,这里有两个方法,分别代表不同的访问资源。输出的内容也不一样。[/align]
[align=left]这是很多时候的做法,我们将同一类型的资源(上面的jersey和ezfen)放在一个大的总体(上面的hello)中。很重要的一点,请注意。[/align]
[align=left]
[/align]
[align=left]web.xml:[/align]
[align=left]
[/align]
[align=left]顺带提一点:这里的jersey是和spring一起使用的,将jersey的webservice交给spring管理。[/align]
[align=left]因此容器这一块,必须选择:com.sun.jersey.spi.spring.container.servlet.SpringServlet[/align]
[align=left]
[/align]
[align=left]配置完后,开启服务器,看看能否加载到这个webservice:[/align]
[align=left]可以看到,HelloResource已经启动,接下来访问一下:[/align]
[align=left]发现输入url地址后错误,意外之际,访问/hello/ezfen,报的是同样的错误。。。。[/align]
[align=left]
[/align]
[align=left]404,那肯定是地址url的问题。但是复制粘贴,重新书写,依旧访问不到。[/align]
[align=left]百度,google了一堆,掉坑,爬起来,再掉坑,再爬起来。[/align]
[align=left]后来才发现,访问的地址在web.xml中已经限制servlet前缀是/hello,[/align]
[align=left]而此处的前缀是指访问该servlet的前缀,而非webservice的前缀。[/align]
[align=left]因此,将访问url改为http://localhost:8080/goManager/hello/hello/jersey[/align]
[align=left]问题解决,成功访问到了。[/align]
[align=left]
[/align]
[align=left]建议一点:通常在一个webservice中会有不少的资源以供访问。在配置webservice的路径时应慎重考虑,也应该清楚不同的路径对应的是什么。[/align]
[align=left]上面强调过,很多时候,我们将同一类型的资源(上面的jersey和ezfen)放在一个大的总体(上面的hello)中。这会让我们以为web.xml中配置的路径就是Jersey中Webservice的路径(当然这是不正确的)。因此,使用Jersey的时候,在web.xml中配置servlet的url-pattern不应该包含webservice的路径。[/align]
[align=left]
[/align]
[align=left]怪自己学得不精不细 T_T[/align]
webservice:
package com.gosun.cluster.web.service; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/hello" ) public class HelloResource { @GET @Path ("/jersey" ) @Produces(MediaType. TEXT_PLAIN) public String helloJersey() { return "Hello Jersey" ; } @GET @Path ("/ezfen" ) @Produces(MediaType. TEXT_PLAIN ) public String helloEzfen() { return "Hello Ezfen" ; } }
[align=left]
[/align]
[align=left]为了简单测试,这里就简单打印"Hello XXX"。注意一下,这里有两个方法,分别代表不同的访问资源。输出的内容也不一样。[/align]
[align=left]这是很多时候的做法,我们将同一类型的资源(上面的jersey和ezfen)放在一个大的总体(上面的hello)中。很重要的一点,请注意。[/align]
[align=left]
[/align]
[align=left]web.xml:[/align]
<!-- 配置jersey启动Webservice --> <servlet > <servlet-name >jersey-serlvet</ 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.gosun.cluster.web.service</param-value > </init-param > <load-on-startup >1</ load-on-startup> </servlet > <servlet-mapping > <servlet-name >jersey-serlvet</ servlet-name> <url-pattern >/hello/*</ url-pattern> </servlet-mapping >
[align=left]
[/align]
[align=left]顺带提一点:这里的jersey是和spring一起使用的,将jersey的webservice交给spring管理。[/align]
[align=left]因此容器这一块,必须选择:com.sun.jersey.spi.spring.container.servlet.SpringServlet[/align]
[align=left]
[/align]
[align=left]配置完后,开启服务器,看看能否加载到这个webservice:[/align]
[align=left]可以看到,HelloResource已经启动,接下来访问一下:[/align]
[align=left]发现输入url地址后错误,意外之际,访问/hello/ezfen,报的是同样的错误。。。。[/align]
[align=left]
[/align]
[align=left]404,那肯定是地址url的问题。但是复制粘贴,重新书写,依旧访问不到。[/align]
[align=left]百度,google了一堆,掉坑,爬起来,再掉坑,再爬起来。[/align]
[align=left]后来才发现,访问的地址在web.xml中已经限制servlet前缀是/hello,[/align]
[align=left]而此处的前缀是指访问该servlet的前缀,而非webservice的前缀。[/align]
[align=left]因此,将访问url改为http://localhost:8080/goManager/hello/hello/jersey[/align]
[align=left]问题解决,成功访问到了。[/align]
[align=left]
[/align]
[align=left]建议一点:通常在一个webservice中会有不少的资源以供访问。在配置webservice的路径时应慎重考虑,也应该清楚不同的路径对应的是什么。[/align]
[align=left]上面强调过,很多时候,我们将同一类型的资源(上面的jersey和ezfen)放在一个大的总体(上面的hello)中。这会让我们以为web.xml中配置的路径就是Jersey中Webservice的路径(当然这是不正确的)。因此,使用Jersey的时候,在web.xml中配置servlet的url-pattern不应该包含webservice的路径。[/align]
[align=left]
[/align]
[align=left]怪自己学得不精不细 T_T[/align]
相关文章推荐
- 基于JAVA中Jersey处理Http协议中的Multipart的详解
- Jersey服务中文乱码解决方法
- Java Jersey使用總結
- 在Jersey JAX-RS 处理泛型Collection
- jersey学习笔记
- MyEclipse + Jetty + Jersey 创建RESTFul service
- 使用jersey开发简单Rest服务
- JAX-RS2初探-Unsupported major.minor version 51.0
- jersey post方式上传文件
- 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务
- Jersey+Spring+Hibernate整合
- webservice框架jersey简单总结
- Java Jersey使用總結
- PhoneGap 跨平台应用:HealthWorking (2) 通过REST Service与服务器交互实现登陆
- Jersery——RESTful Web Services in Java,RESTful服务,Jersey+Spring实现REST服务调用
- 用Java实现RESTful Web Services框架的简要步骤
- 首次涉水Maven+Jersey,入门笔记
- 一个包含Jersey库的简单Web Service以及一个发送Json数据的Java客户端
- [点点搬家] 声讨一下Jersey Client,或者鄙视一下Tomcat realm