[英]Java : Deploy restful web service without jersey
提前致謝。 我是Web服務的新手,當我嘗試使用java部署restful web服務時,它會產生異常。 我遵循RESTful Java與JAX-RS學習Web服務,根據本書第3章,我嘗試構建示例,在部署示例之后它將生成異常,我知道,我想念一些東西,但我不知道我知道我錯過了什么。 以下是我的示例代碼。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web- app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>RestfulTest</display-name>
<servlet>
<servlet-name>Rest</servlet-name>
<servlet-class>com.restfultest.controller.ShoppingApplication</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Rest</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
以下是課程
public class ShoppingApplication extends Application {
private Set<Object> singletons = new HashSet<Object>();
private Set<Class<?>> empty = new HashSet<Class<?>>();
public ShoppingApplication() {
singletons.add(new CustomerResources());
}
@Override
public Set<Class<?>> getClasses() {
return empty;
}
@Override
public Set<Object> getSingletons() {
return singletons;
}
}
當發生異常時嘗試部署應用程序時。
java.lang.ClassCastException: com.restfultest.controller.ShoppingApplication cannot be cast to javax.servlet.Servlet
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
這是一個愚蠢的問題我知道, ShoppingApplication
不是servlet類,但是根據本書,它是servlet類。 要調用此服務,我使用chrome
restful client。 請建議我如何使用chrome restful client以及如何使用此客戶端發送XML
或JSON
請求。
問題是你告訴你的類是一個不正確的servlet。 您所關注的文檔中必定存在問題。 看看這個http://www.ibm.com/developerworks/library/wa-aj-tomcat/
你應該有
<servlet-name>com.restfultest.controller.ShoppingApplication</servlet-name>
而且沒有servlet-class
。 Jersey項目對部署JAX-RS 1.1應用程序的各種選項(包括此特定情況)有很好的參考。
另請注意,這僅適用於Servlet 3.0。 在早期的servlet規范中,你必須提供一個實現一個JAX-RS容器的實際servlet類,比如Jersey的ServletContainer 。
出現此問題是因為Tomcat Container
不了解JAX-RS
。 因此,要定義JAX-RS
的實現,我們需要添加第三方庫。 當我添加Jersey
lib並在容器中添加Jersey
servlet定義時,我的示例運行成功。 以下是`web.xml
...............................
<servlet>
<servlet-name>Rest</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.restfultest.controller.ShoppingApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Rest</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
..................................
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.