簡體   English   中英

使用eclipse部署和測試rest-webservice

[英]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.xmlservlet 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.

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