簡體   English   中英

Java:部署沒有平針織的restful Web服務

[英]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以及如何使用此客戶端發送XMLJSON請求。

問題是你告訴你的類是一個不正確的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM