Jersey服务开启却报404的错误

首先,在确保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" ;
    }
}


为了简单测试,这里就简单打印"Hello XXX"。注意一下,这里有两个方法,分别代表不同的访问资源。输出的内容也不一样。
这是很多时候的做法,我们将同一类型的资源(上面的jersey和ezfen)放在一个大的总体(上面的hello)中。很重要的一点,请注意。

web.xml:
<!-- 配置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 >



顺带提一点:这里的jersey是和spring一起使用的,将jersey的webservice交给spring管理。
因此容器这一块,必须选择: com.sun.jersey.spi.spring.container.servlet.SpringServlet

配置完后,开启服务器,看看能否加载到这个webservice:

可以看到,HelloResource已经启动,接下来访问一下:

发现输入url地址后错误,意外之际,访问/hello/ezfen,报的是同样的错误。。。。

404,那肯定是地址url的问题。但是复制粘贴,重新书写,依旧访问不到。
百度,google了一堆,掉坑,爬起来,再掉坑,再爬起来。
后来才发现, 访问的地址在web.xml中已经限制servlet前缀是/hello,

而此处的前缀是指访问该servlet的前缀,而非webservice的前缀。

问题解决,成功访问到了。

建议一点:通常在一个webservice中会有不少的资源以供访问。在配置webservice的路径时应慎重考虑,也应该清楚不同的路径对应的是什么。
上面强调过,很多时候,我们将同一类型的资源(上面的jersey和ezfen)放在一个大的总体(上面的hello)中。这会让我们以为web.xml中配置的路径就是Jersey中Webservice的路径(当然这是不正确的)。 因此, 使用Jersey的时候,在web.xml中配置servlet的url-pattern不应该包含webservice的路径。

怪自己学得不精不细 T_T

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值