我在使用 Jersey 实现使用 Restful Webservices 时遇到问题。在文档中写到我应该下载这个: Jersey JAX-RS 2.0 RI bundle,解压缩并将 jars 添加到我的 WEB-INF/lib 文件夹中。这些罐子是:
- 球衣客户
- 普通球衣
- jersey-container-servlet
- jersey-container-servlet-core
- 球衣服务器
如果我这样做,我总是会遇到以下异常:
java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer
经过一番研究,我发现我应该添加 jersey-servlet-1.12.jar 而不是从上面发布的下载源中添加 jar。所以我做到了。我将此添加到我的 web.xml
<servlet>
<servlet-name>JAX-RS 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 Servlet</servlet-name>
<url-pattern>/jaxrs/*</url-pattern>
</servlet-mapping>
我实现了一个小测试类:
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import de.hof.university.spj.model.Movie;
@Path("/test")
public class Test {
@GET
@Produces("application/json; charset=UTF-8")
public List<Movie> getMovieList() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("SPJUnit");
EntityManager em = factory.createEntityManager();
TypedQuery<Movie> query = em.createQuery("Select m FROM Movie m WHERE m.movieID = 4204", Movie.class);
return query.getResultList();
}
}
当我现在打电话时http://localhost:8080/MyApp/jaxrs/test
,我收到此错误:
HTTP Status 500 - Internal Server Error. The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.
我不知道如何正确使用球衣实现。