我已经基于一些示例创建了一个简单的Restful Web服务,并将其构建为.war文件(项目结构在WEB-INF下具有web.xml),将其部署在glassfish ang上,当我尝试调用它时出现404 not found错误。我包含服务的班级是:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我的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>
Run Code Online (Sandbox Code Playgroud)
我尝试用http:// localhost:8080 / HSRestServices / hsrest / decks / sayHello / Nikos来调用它,但是我从glassfish中得到了404。任何帮助将不胜感激,谢谢。
您缺少在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>
Run Code Online (Sandbox Code Playgroud)
确保插入包含您的类的包的名称。
您不需要Spring。
还有另一种方法可以不使用web.xml。有关详细信息,请查看此问题。
| 归档时间: |
|
| 查看次数: |
2918 次 |
| 最近记录: |