当前位置: 首页 > 知识库问答 >
问题:

如何使用Jersey作为没有web.xml的JAX-RS实现?

阳光辉
2023-03-14

我从JavaEE 6web.xml中读到了这一点。

所以如果没有web.xml,我如何告诉应用程序服务器使用Jersey作为JAX-RS规范的实现呢?

共有1个答案

符修杰
2023-03-14

@Alexnevidomsky在他的答案中写的是正确的,就如何在没有web.xml的情况下实现app配置而言;您可以在application子类上使用@applicationpath注释。

@ApplicationPath("/api")
public class AppConfig extends Application {}

有关部署选项的更多信息,请参阅泽西文档:第4章。应用程序部署和运行时环境

或者更常见的是,使用Jersey作为实现,我们将扩展resourceConfig(它扩展了application)。

@ApplicationPath("api")
public class AppConfig extends ResourceConfig {
    public AppConfig() {
        packages("package.to.scan");
    }
}

Servlet3.0引入了可插拔性机制,它使用ServletContainerInitializer。它的工作原理是,当服务器/servlet容器启动时,它扫描jars以查找meta-inf/services文件夹,该文件夹中有一个名为javax.servlet.ServletContainerInitializer的文件。此文件应包括ServletContainerInitializer实现的一个或多个完全限定的名称。

此接口只有一个方法

void onStartup(java.util.Set<java.lang.Class<?>> c, ServletContext ctx)

将是一个类列表,符合ServletContainerInitializer实现上的@handlestypes注释中的条件。如果您查看Jersey实现

@HandlesTypes({ Path.class, Provider.class, Application.class, ApplicationPath.class })
public final class JerseyServletContainerInitializer 
                   implements ServletContainerInitializer {

您应该注意到一些熟悉的注释类,以及application.class。扫描时,匹配条件的所有这些类都被html" target="_blank">添加到传递给onstartup方法的set中。

如果您扫描源代码的其余部分,您将看到所有这些类都完成了注册。

Resteasy的使用

@HandlesTypes({Application.class, Path.class, Provider.class})
public class ResteasyServletInitializer implements ServletContainerInitializer
    null
 类似资料:
  • 问题内容: 我从 JavaEE 6中 了解到,它是可选的。 因此,如果没有 web.xml ,如何告诉应用程序服务器使用Jersey作为JAX-RS规范的实现? 问题答案: 就如何在没有web.xml的情况下实现应用程序配置而言,@AlexNevidomsky的回答是正确的。您在子类上使用注释。 有关部署选项的更多信息,请参见JAX-RS规范-> 2.3发布-> 2.3.2Servlet。 或更常

  • 问题内容: 我正在开发一个Java脚本客户端应用程序,在服务器端我需要处理CORS,以及我用JERSEY用JAX-RS编写的所有服务。我的代码: 到目前为止,我收到错误消息请求的资源上没有标头。因此,不允许访问源’ http:// localhost:8080 ‘。” 请协助我。 问题答案: 注意:请务必阅读底部的UPDATE 是CXF批注,因此不适用于Jersey。 对于Jersey,要处理CO

  • 这是MyResource: 和我的web.xml: 在客户端,我使用这个url:http://localhost:8080/[projectname]/webapi/helloworld 谢了!

  • 我正在开发一个java脚本客户端应用程序,在服务器端我需要处理CORS,所有我用JAX-RS和Jersey编写的服务。我的代码: 感谢佛普尼

  • 问题内容: 我正在努力弄清Java中的一些概念: JSR:描述规格,但不包含实际的实现。例如,http://jsr311.java.net/是“ RESTful Web服务的Java™API”的“主页”。它用作JSR-311的所有实现的通用参考。 可以从http://mvnrepository.com/artifact/javax.ws.rs/jsr311-api下载JSR-311的接口(?),但

  • 我们可以通过 实现创建JAX-RS示例。 为此,需要加载 jersey相关jar文件或使用Maven框架。 在这个例子中,我们使用jersey jar文件来实现JAX-RS jersey示例。 Jersey Jar文件下载网址:https://jersey.github.io/download.html 打开Eclipse,创建一个Web工程: restfuljersey,如下图所示 - JAX-