您的位置:首页 > 其它

Jersey服务开启却报404的错误

2015-08-17 15:14 591 查看
首先,在确保Jar包没有导错的情况下。我们来看一下源代码:
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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jersey