2012-11-08 61 views
1

我已經使用eclipse + glassfish從eclipse部署我的第一個web服務。 我有以下類:用eclipse部署和測試rest-webservice

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 didnt將任何東西放入lib文件夾的網絡項目。

但HTEN當我啓動應用程序在瀏覽器中:

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

我也寫了一個簡單的客戶端,連接到服務throught java.io.URL , 但其中一個返回:

404 
Location:null 

什麼是錯的服務,我該如何解決? +將非常感激 - 如何測試服務?是否總是這樣 - 編寫一個使用這些URL連接的測試類,或者是否有任何標準的方法來測試Web服務?

回答

1

我有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> 

您的REST應用可以隨後通過添加訪問/資源/上下文根。