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
路径下可用。
我有一些应用程序,我试图在其中公开一些 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
路径下可用。