java - 我们可以在 Tomcat 8 上通过 Jersey 实现没有 maven 和 web.xml 的 restful web 服务吗

标签 java eclipse web-services rest tomcat

我正在尝试通过 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();
              }
            }`
  1. 在 eClips 中项目/清理
  2. 启动服务器
  3. 测试链接“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 中。

另请参阅:

关于java - 我们可以在 Tomcat 8 上通过 Jersey 实现没有 maven 和 web.xml 的 restful web 服务吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34225224/

相关文章:

java - 如何禁用 Logback 文件附加程序的日志

java - java中如何返回一张表的数据的数组列表?

c++ - cout 上没有控制台输出

Java Byte/字节数组空间效率比较

java - Liferay 中的模块路径集为空

java - 线程 : Busy Waiting - Empty While-Loop

Java:从命令行运行时重定向内部进程输出

java - 如何在 Java 中将 SOAP 模板加载到 SOAP 消息中?

web-services - Grails CXF Web服务,包括WSDL中的所有方法

c# - 通过 WSDL url 使用 Web 服务