Glassfish路径选择中的JAX-RS不起作用

时间:2014-04-23 19:26:52

标签: jax-rs glassfish-4

Glassfish 4,应用非常简单。我正在使用Kepler,使用Glassfish 4作为服务器创建了一个动态Web服务项目,允许Eclipse生成web.xml和glassfish-web.xml。上下文名称是/ calls。

应用

package com.deltacontractservices.calls.service;

import java.util.HashSet;
import java.util.Set;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/rest/*")
public class CallsApplication extends Application
{
    @Override
    public Set<Class<?>> getClasses()
    {
        final Set<Class<?>> classes = new HashSet<Class<?>>();

        classes.add(Controller.class);

        return classes;
    }
}

资源

package com.deltacontractservices.calls.service;

import javax.enterprise.context.ApplicationScoped;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

/**
 * This class implements a JAX-RS service controller for the Calls API
 */
@ApplicationScoped
@Path("/rest")
public class Controller
{

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String base()
    {
        return "Calls application default.";
    }

    @GET
    @Path("ping")
    @Produces(MediaType.TEXT_PLAIN)
    public String ping()
    {
        return "Calls application ping.";
    }
}

http:// localhost:8080 / calls / rest产生“调用应用程序默认值”。好。

http:// localhost:8080 / calls / rest /产生404。

http:// localhost:8080 / calls / rest / ping产生404。

我必须遗漏一些明显的东西。请帮忙......

2 个答案:

答案 0 :(得分:1)

好。我需要做一些像... / calls / rest / rest / ping这样的事情。我在应用程序和资源中复制了“/ rest”。将资源类更改为@Path(“”)可以正确响应 / calls / rest /和/ calls / rest / ping但不是/ calls / rest(没有尾随/)另外,更改应用程序@ApplicationPath(“/ rest”)似乎没有任何影响。

答案 1 :(得分:0)

尝试将控制器类首先放入@path这样的@Path“/”。我是这个工作人员的新手。 洗澡你可以尝试!然后答案可能是这个类的第一个方法(在休息客户端类型... / calls / rest)。如果您在rest client ../calls/rest/ping中键入请求,则可以从控制器类中的第二个方法生成答案。洗澡我不确定!只是试着帮忙!