RESTful Jboss 7 上的服务没有响应

RESTful services on Jboss 7 not responding

我有一些应用程序,我试图在其中公开一些 RESTful 网络服务。 不幸的是我被困住了。项目构建和部署正常,但我无法使用 GET 请求访问我的服务。

我的 war 看起来很像: war.

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>

申请class:

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

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

}

和服务class: 导入 javax.ejb.Stateless; 导入 javax.ws.rs.GET; 导入 javax.ws.rs.Path; 导入javax.ws.rs.Path参数; 导入 javax.ws.rs.Produces; 导入 javax.ws.rs.core.MediaType; 导入 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 所以我的 war应该正确部署。部署时也没有错误。

我试图删除 @Stateless 注释和 return 我的 class 在 MyApplication.getClasses() 方法中,但它没有帮助。 Bean 肯定是可见的,因为 Jboss 记录了我的绑定。

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

我还应该做些什么才能得到我的服务运行?

@编辑

如果我像那样部署 war 就可以了。把war塞进耳朵里了怎么办才这样暴露?

我 运行 你描述的例子和服务是 运行ning,我收到了 {"status":"Service is running..."}。

只是为了确保您的服务部署正确,当您 运行 Jboss 时,您是否在日志文件中看到类似这样的东西

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

我知道问题有点不对,但还是想post回答一下。也许它会对某些人有所帮助 body.

为了让它工作,我必须向 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 class 将注释 @ApplicationPath("/rest") 更改为 @ApplicationPath("/"),然后一切正常,服务在 http://localhost:8080/rest/test/status 路径下可用。