可以调用JAR中打包的REST-API控制器吗?

时间:2014-12-15 09:40:02

标签: java rest jax-rs

我已经在JBOSS EAP-6.2的EAR中的JAR(testrest.jar)中打包并部署了我的TestRestController.java(PFB代码),

如何访问我的REST-API,我尝试从REST客户端访问http:// {WEB-SERVER-IP}:8080 / testrest / test / execute URL?但我得到HTTP 404。

甚至可能吗?

TestRestController.java:

@Path("/test")
public class TestRestController
{

    @POST
    @Path("/execute")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response executeRestApi(TestControllerDTO testControllerDto)
    {
        try
        {
            if (validateRequestParams(testControllerDto))
            {
                System.out.println("Validation success.");
                response = Response.status(Status.OK).entity("Validation success.").build();
            }
            else
            {
                System.out.println("Validation failed.");
                response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Validation failed.").build();
            }
        }
        catch (Exception e)
        {
            response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Validation failed.").build();
        }
        return response;
    }

    private boolean validateRequestParams(TestControllerDTO testControllerDto)
    {
        boolean areParamsValid = false;
        if (null != testControllerDto)
        {
            areParamsValid = true;
        }
        return areParamsValid;
    }
}

请帮帮我。

P.S。 :我是Java和REST的新手。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你需要以某种方式启动其余的servlet。最简单的方法是在应用程序中添加javax.ws.rs.core.Application @ApplicationPath注释。

@ApplicationPath("/rest")
public class JaxRSApplication extends Application {

}

它可以留空。它可以打包在.jar或.war中(请记住,.jar也应该包含在WEB-INF / lib的war中)。这样,其余的servlet将自动初始化,并且将扫描类路径以查找使用@Path注释的资源类

您可以看到其他部署选项here,有关详细信息,请参阅the spec

使用上面的Application类,您应该能够访问

  

http://localhost:8080/my-app/rest/test/execute