2013-08-31 103 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

相关问题