jersey实战

来源:互联网 发布:控制手机使用时间软件 编辑:程序博客网 时间:2024/05/16 07:39

因为我对jersey不了解,所以首先我先做了一个不用spring的jersey的restful服务,比较简单,建立web工程,使用maven增加jersey的依赖,然后在web.xml里增加jersey的servlet:

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  <display-name></display-name>  <servlet>  <display-name>JAX-RS REST Servlet</display-name>  <servlet-name>JAX-RS REST Servlet</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>JAX-RS REST Servlet</servlet-name>  <url-pattern>/services/*</url-pattern>  </servlet-mapping>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>
然后编写了文件,从网上找的例子:

package com.example;import java.util.HashMap;import java.util.Map;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;@Path("myresource")public class MyResource {@GET@Produces(MediaType.APPLICATION_JSON)public Map getIt() {HashMap map = new HashMap();map.put("abc", "def");return map;}}

保存后重启tomcat,报一个没有resource的错误:

com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.

我看了下tomcat的部署目录,发现classes目录里没有类文件。看来是编译过程出了问题,一般就是类库找不到啊,或是jdk版本等的问题。

用maven把依赖 resolve了一下,看了下,classes目录里面有类了,呵呵,再启动就启动成功了。

后台打印很简单,只有tomcat的东西,启动也很快900多ms。

打开浏览器,输入http://localhost:8080/rest3/services/myresource,报403错误,郁闷!

明明有,为什么不行?

同事说把工程得部署一下,我觉得也没有多大道理,人家即然说了就试试吧,把工程clean了一下,然后重新部署到tomcat中,重启tomcat。

再次打开浏览器,刷新,终于看到结果了,激动啊!

{"abc":"def"}
下一步就是与spring集成了,下一次再写。



0 0
原创粉丝点击