我得到了一些应用程序,其中我尝试公开一些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
如果我像这样部署战争那么有效。如果它包含在耳中,我该怎么做才能揭露战争呢?
答案 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}下可用路径。