java - 使用 Eclipse 部署和测试 rest-webservice

标签 java eclipse web-services glassfish jax-rs

我使用 eclipse + glassfish 从 eclipse 部署了我的第一个网络服务。 我有以下类(class):

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>

只要我读到 jersey 已经包含在 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 服务?

最佳答案

我想你的类(class)扩展了javax.ws.rs.core.Application .另外它应该用@javax.ws.rs.ApplicationPath("your_rest_path")注释.

有了这个注释,您就不需要 web.xml 中的 servlet 了。 GlassFish 将能够自动拾取它。

您还必须将所有 JAX-RS 资源类添加到 getClasses() 返回的 Set

关于java - 使用 Eclipse 部署和测试 rest-webservice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13299617/

相关文章:

java - 根据属性获取 ListView

java - (Java) 计算句子中的字母?

java - Testng 报告头等舱 2 个类(class)的所有测试

web-services - 如何在外部 WS-policy 附件文件中指定服务实例?

java - 更改和改进了从 Web Servlet 到 Web 服务的数据传递

java - 使用 Spring boot 配置 Jersey

java - "The system cannot find the file C:\ProgramData\Oracle\Java\javapath\java.exe"

java - 使用面向对象获取重写方法中的值

eclipse - Aptana文件差异?

java - 更改 ListView 中的字体大小 - Android/Eclipse