我在使用Jersey實現使用Restful Webservices時遇到問題。 在文檔中寫道,我應該下載這個: Jersey JAX-RS 2.0 RI bundle,解壓縮並將jar添加到我的WEB-INF/lib文件夾中。這些罐子:Restful JAX-RS服務器錯誤
- 球衣的客戶端
- 球衣常見
- 球衣,容器的servlet
- 球衣,容器servlet的核心
- 球衣服務器
如果我這樣做,我總是得到以下異常:
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.
我不知道如何正確使用球衣執行。
因爲我已經做到了! javax.annotation,javax.inject,javax.ws.rs已經存在於我的項目中包含的javaee-api-6.0.jar中。如果我使用入門指南中的web.xml示例,則該項目甚至因此而失敗:java.lang.ClassNotFoundException:javax.ws.rs.ProcessingException。有關更多詳細信息,請參閱server.log。 – Mulgard