休息服务网址不工作(404) - 玻璃鱼

时间:2015-10-22 20:25:35

标签: java rest glassfish

我基于一些示例创建了一个简单的restful Web服务并将其构建到.war文件中(项目结构在WEB-INF下具有web.xml),将其部署在glassfish上当我尝试时遇到404未找到错误打电话给它。 我的课程包含:

    import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;

/**
 * Created by Nikos Kritikos on 10/22/2015.
 */

@Path("/decks")
public class HS_Services {

    @Path("sayHello/{name}")
    @GET
    public String doSayHello(@PathParam("name") String name) {
        return "Hello there "+name;
    }

}

我的web.xml是这样的:

<servlet>
    <servlet-name>HSRestServices</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <load-on-startup>1</load-on-startup>

</servlet>
<servlet-mapping>
    <servlet-name>HSRestServices</servlet-name>
    <url-pattern>/hsrest/*</url-pattern>
</servlet-mapping>

我尝试用http://localhost:8080/HSRestServices/hsrest/decks/sayHello/Nikos调用它,但我从glassfish获得404 .. 非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:4)

您缺少init-param,您可以在其中指定应针对REST端点类扫描哪些软件包。

将您的web.xml更改为:

<servlet>
        <servlet-name>HSRestServices</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>insert.packagename.where.your.class.is.here</param-value>
        </init-param>
</servlet>

确保插入包含您的类的包的名称。

你不需要Spring。

还有另一种方法可以在没有web.xml的情况下工作。有关详细信息,请查看this question