[英]deploying and testing rest-webservice with eclipse
我使用eclipse + glassfish從eclipse部署我的第一個web服務。 我有以下課程:
package com.restfully.shop.services;
import javax.ws.rs.core.*;
import java.util.*;
public class ShoppingApplication extends Application {
private Set<Object> singletons = new HashSet<Object>();
private Set<Class<?>> empty = new HashSet<Class<?>>();
public ShoppingApplication() {
singletons.add(new CustomerResource());
}
@Override
public Set<Class<?>> getClasses() {
return empty;
}
@Override
public Set<Object> getSingletons() {
return singletons;
}
}
和以下web.xml:
<?xml version="1.0" ?>
<web-app>
<servlet>
<servlet-name>Rest</servlet-name>
<servlet-class>com.restfully.shop.services.ShoppingApplication</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Rest</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
只要我讀到球衣已經包含在glassfish中 - id沒有把任何東西放到web項目的lib文件夾中。
但是當我在瀏覽器中啟動應用程序時:
Exception
javax.servlet.ServletException: PWC1403: Class com.restfully.shop.services.ShoppingApplication is not a Servlet
root cause
java.lang.ClassCastException: com.restfully.shop.services.ShoppingApplication cannot be cast to javax.servlet.Servlet
glassfish版本是3.1.1
我還寫了一個簡單的客戶端,通過java.io.URL連接到服務,但是那個返回:
404
Location:null
該服務有什么問題,我該如何解決? +將非常感激 - 如何測試服務??? 總是這樣 - 編寫一個使用這些URL連接的測試類,或者有任何標准方法來測試Web服務?
我猜你的類擴展了javax.ws.rs.core.Application
。 此外,它應該使用@javax.ws.rs.ApplicationPath("your_rest_path")
進行注釋。
使用此批注,您不需要web.xml
的servlet
。 GlassFish將能夠自動拾取它。
您還必須將所有JAX-RS資源類添加到getClasses()
返回的Set
。
我沒有Glassfish的經驗,但v3似乎是JAX-RS意識到的。
這意味着不需要javax.ws.rs.core.Application的子類。
只需使用web.xml部署JAX-RS帶注釋的類,如下所示
<servlet>
<servlet-name>ServletAdaptor</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>ServletAdaptor</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
隨后可以通過將/ resources /添加到上下文根來訪問您的REST應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.