Jboss 7上的RESTful服务没有响应

时间:2015-05-21 15:50:02

标签: web-services rest jboss ejb resteasy

我得到了一些应用程序,其中我尝试公开一些RESTful Web服务。 不幸的是,我被困住了。项目构建和部署很好,但我无法使用GET请求访问我的服务。

我的战争看起来很像: 战。

war
|--index.html
|--WEB-INF
   |--web.xml
   |--classes
      |--classes here..

我空了web.xml

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
</web-app>

申请类:

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

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

}

服务类:     import javax.ejb.Stateless;     import javax.ws.rs.GET;     import javax.ws.rs.Path;     import javax.ws.rs.PathParam;     import javax.ws.rs.Produces;     import javax.ws.rs.core.MediaType;     import javax.ws.rs.core.Response;

@Path("/test")
@Stateless
public class RestTest {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/status")
    public Response getStatus() {
        return Response.ok("{\"status\":\"Service is running...\"}").build();
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/status/{param}")
    public Response getStatusParam(@PathParam("param") String param) {
        return Response.ok("{\"status\":\"Service is running...\"," +
                "\"param\":\"" + param + "\"}").build();
    }
}

我试图通过http://localhost:8080/rest/test/status访问我的服务,但我得到了404.如果我尝试http://localhost:8080/rest我得到index.html所以我的战争应该是正确部署。部署时也没有错误。

我尝试删除@Stateless注释并使用MyApplication.getClasses()方法返回我的课程,但它没有帮助。 Bean肯定是可见的,因为Jboss会记录我的绑定。

我还从战争中删除了所有jax-rs和restesy罐子,以确保我使用正确的罐子(由Jboss提供)。

我应该怎样做才能让我的服务正常运行?

@EDIT

如果我像这样部署战争那么有效。如果它包含在耳中,我该怎么做才能揭露战争呢?

2 个答案:

答案 0 :(得分:0)

我按照你描述的那样运行你的例子,服务正在运行,我收到{&#34; status&#34;:&#34;服务正在运行......&#34;}。

为了确保您的服务正确部署,您是否在运行Jboss时在日志文件中看到

[org.jboss.resteasy.spi.ResteasyDeployment](MSC服务主题1-8)部署javax.ws.rs.core.Application:MyApplication

答案 1 :(得分:0)

我知道这个问题有点不对,但我仍然想发表回答。也许这会对某些人有所帮助。

要使其正常工作,我必须在web.xml添加几行。这是这个片段:

<module id="war">
    <web>
        <web-uri>war-1.0.war</web-uri>
        <context-root>/rest</context-root>
    </web>
</module>

然后我必须通过http://localhost:8080/rest/rest/test/status路径调用我的服务,所以我还编辑了MyApplication类,将注释@ApplicationPath("/rest")更改为@ApplicationPath("/"),然后一切正常,服务在{{1}下可用路径。