我正在尝试通过 Jersey 实现一个非常简单的 restful web 服务,但我不断收到 404 错误页面,而控制台上没有任何其他错误。
这是我努力学习的教程。
http://www.doublecloud.org/2013/08/rest-api-service-made-easy-with-jersey-framework-in-java/
因为我没有使用 maven,所以我没有记录任何依赖项。 我正在使用 Eclipse Java EE luna/Tomcat 8/Java 8/Servlet 3.0(我没有任何 web.xml)
我加载了 Jersey 2.22.1 库
我是否缺少使其正常工作的东西?我应该将它转换为 Maven 项目吗?
提前感谢您的帮助。
*********响应***************
1.下载 Jersey 库
2.将它们上传到application中的web-inf/lib文件夹中,并添加到Java构建路径中
3.创建一个HelloApp.java类
`package testwebservice.rest.demo;
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;
@ApplicationPath("/rest")
public class HelloApp extends ResourceConfig {
public void AppConfig() {
packages("testwebservice.rest.demo");
}
}`
4.创建 HelloWorldService.java 类
`package testwebservice.rest.demo;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/hi")
public class HelloWorldService
{
@GET
@Path("/{name}")
public Response getMessage(@PathParam("name") String name)
{
String outMsg = "Hello " + name + "!";
return Response.status(200).entity(outMsg).build();
}
}`
- 在 eClips 中项目/清理
- 启动服务器
- 测试链接“localhost:8080/testwebservice/rest/hi/Test”
result= 你好测试!
最佳答案
如果您拥有来自 Jersey JAX-RS 2.0 RI bundle 的 所有 jar ,您不需要 web.xml。只需要一个 javax.ws.rs.core.Application
sublcass,注释为@ApplicationPath
.所以这是最低要求的配置
@ApplicationPath("/api")
public class MyApplication extends Application {}
只有这个空类会触发类路径扫描,这将扫描用 @Path
和 @Provider
类注释的类。
如前所述here但是不推荐类路径扫描。最好使用 Jersey 的包裹扫描功能。首先不是扩展 Application
,您应该扩展 ResourceConfig
(它是一个 Application
子类)。然后只需调用 packages("..")
列出要扫描您的资源的包
@ApplicationPath("/api")
public class AppConfig extends ResourceConfig {
public AppConfig() {
packages("your.packages.to.scan");
}
}
就是这样。只要您的资源类结构正确,您就应该启动并运行。并确保在部署到 Tomcat 时所有的 jars 实际上都在你的 WEB-INF/lib 中。
另请参阅:
- Servlet Based Deployment对于其他部署选项(信息)
关于java - 我们可以在 Tomcat 8 上通过 Jersey 实现没有 maven 和 web.xml 的 restful web 服务吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34225224/