使用wildfly的简单RESTful端点

时间:2014-12-23 18:20:38

标签: rest java-ee curl jboss wildfly

我正在使用wildfly从头开始运行javaee Web应用程序,并且只是希望公开一些RESTful Web服务。我的wildfly应用程序服务器使用它附带的默认值运行,我没有使用任何数据库实体,尽管我有一个persisitance.xml使wildfly开心。我的应用程序部署正常,如下面的日志消息所示。

12:50:38,585 INFO  [org.jboss.resteasy.spi.ResteasyDeployment] (MSC service thread 1-5) Deploying javax.ws.rs.core.Application: class org.netbeans.rest.application.config.ApplicationConfig
12:50:38,585 INFO  [org.jboss.resteasy.spi.ResteasyDeployment] (MSC service thread 1-5) Adding class resource os.acquisition.acq.Acquisition from Application class org.netbeans.rest.application.config.ApplicationConfig
12:50:38,588 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-5) JBAS017534: Registered web context: /acq-1.0
12:50:38,712 INFO  [org.jboss.as.server] (management-handler-thread - 29) JBAS018565: Replaced deployment "acq-1.0.war" with deployment "acq-1.0.war"

我的问题出现在尝试调用下面的GET请求时。 (总是返回404)

@Path("/acq")
public class Acquisition {

    @GET
    @Path("ping")
    public Response ping(@Context HttpServletRequest req) {
        return Response.ok().entity(GenericResponse.OK).build();
    }

}

我还使用了标准IDE生成的ApplicationConfig.java,它将此服务作为其资源之一。

@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new java.util.HashSet<>();
        addRestResourceClasses(resources);
        return resources;
    }

    /**
     * Do not modify addRestResourceClasses() method.
     * It is automatically populated with
     * all resources defined in the project.
     * If required, comment out calling this method in getClasses().
     */
    private void addRestResourceClasses(Set<Class<?>> resources) {
        resources.add(os.acquisition.acq.Acquisition.class);
    }

}

我一直在使用一个简短的curl脚本来调用其余的服务,并尝试了@Path参数和URL配置的所有可能组合,但无济于事。

#!/bin/bash
curl -v -X GET http://localhost:8080/acq-1.0/acq/ping

此外,当调用curl -v -X GET http://localhost:8080/acq-1.0/时,它会像我期望的那样返回index.html页面。

似乎我在这里遗漏了一些基础。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

@ ApplicationPath的值在各个资源路径之前附加到资源URI 。看起来您的curl请求缺少“webresources”部分。