2015-05-21 31 views
1

我得到了一些應用程序,我試圖公開一些REST風格的web服務。 不幸的是我卡住了。項目構建和部署良好,但我不能使用GET請求訪問我的服務。Jboss 7上的RESTful服務沒有響應

我的戰爭看起來很相似:戰爭時期是 。

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 { 

} 

和服務類: 進口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 jar,以確保我使用的是正確的(由Jboss提供)。

我應該做些什麼來讓我的服務運行?

@EDIT

如果我像部署它的工作原理戰爭。我應該怎麼做才能揭露這樣的戰爭呢?

回答

0

我按照你所描述的運行你的例子,服務正在運行,我收到了{「status」:「服務正在運行......」}。

只是爲了確保您的服務已正確部署,並在日誌文件中看到,當你運行的Jboss這樣的事情

[org.jboss.resteasy.spi.ResteasyDeployment(MSC服務線程1 -8)部署javax.ws.rs.core.Application:MyApplication

+0

我的不好。如果我部署只是戰爭,它的作品。你知道如果內心發生戰爭,我該怎麼做才能奏效?我應該在application.xml中添加一些東西嗎? – Dcortez

+0

太好了。這是很好的信息。 –

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("/"),然後一切工作正常服務下http://localhost:8080/rest/test/status路徑可供選擇。