2013-08-31 105 views
2

我無法讓我的REST服務啓動。我有一個包含了我service.jar中一個戰爭文件,並在service.jar中我有我用下面的代碼在glassfish上部署REST服務4

import javax.ws.rs.GET; 
import javax.ws.rs.POST; 
import javax.ws.rs.PUT; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

import se.questify.entities.exam.Question; 


@Path("/services/question") 
public class QuestionWebService { 

    @GET 
    @Path("/ping") 
    @Produces({MediaType.TEXT_PLAIN}) 
    public String ping() { 
     return "ping from localhost webservice"; 
    } 
} 

當這個被部署到Glassfish的4(我是從Eclipse中運行)的web服務的web服務不可達在http://localhost:8080/web/services/question/ping(我的上下文根是/ web)。

任何人都知道爲什麼這不起作用?

的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"> 


    <display-name>Counter Web Application</display-name> 

    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class> 
      javax.faces.webapp.FacesServlet 
     </servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
     <welcome-file>index.xhtml</welcome-file> 
    </welcome-file-list> 
</web-app> 
+0

你能夠到達你的上下文根目錄:http:// localhost:8080/web嗎? –

+0

是的所有其他HTML和JSF頁面正常工作 – Marthin

+0

然後這意味着您的Web服務映射不正確。你可以分享你的web.xml。以及您的服務類如何作爲REST公開? –

回答

5

您未設置映射到REST的servlet。你需要在你web.xml文件是這樣的:

<servlet-mapping> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
</servlet-mapping> 

或者,你可以添加一個應用類別及使用@ApplicationPath設置映射。

@ApplicationPath("/services") 
public class QuestionApplication extends Application { 
    @Override 
    public Set<Class<?>> getClasses() { 
     final Set<Class<?>> classes = new HashSet<>(); 
     // register root resource 
     classes.add(QuestionWebService.class); 
     return classes; 
    } 
} 

然後根據映射的URL設置@Path

@Path("/question") 
public class QuestionWebService { 
... 
} 
+2

請注意,GlassFish 4中的休息服務不再需要任何web.xml配置 – dendini

相關問題