【问题标题】:Jersey 2.22: Where should I define the location of REST resources?Jersey 2.22:我应该在哪里定义 REST 资源的位置?
【发布时间】:2015-10-13 01:10:18
【问题描述】:

目前,我知道两种方法:

  1. 在您的 web.xml 上将其指定为 <init-param>
  2. 创建一个扩展 ResourceConfig 的类并将其添加到您的 web.xml 中

我有一个扩展 ResourceConfig 的类,因为我需要为依赖注入注册一个应用程序绑定器 (AbstractBinder)。

我应该在哪里定义 REST 资源的位置?这里的最佳做法是什么?

【问题讨论】:

    标签: java rest dependency-injection resources jersey


    【解决方案1】:

    ResourceConfig中,你可以调用packages("reource.packages"),其作用与扫描<init-param>中声明的包相同

    public class Config extends ResourceConfig {
        public Config() {
            packages("...");
            register(new AbstractBinder()..);
        }
    }
    

    要使用 Config 类,您有几个选择。

    1. @ApplicationPath("/appPath")注释它

      有了这个,就不需要 web.xml。您需要确保您具有 jersey-container-servlet 依赖项才能使其正常工作。注释中的值的工作方式与 web.xml 中的 <servlet-mapping> 相同。

    2. 在 web.xml 中声明 Config

      <servlet>
          <servlet-name>MyApplication</servlet-name>
          <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
          <init-param>
              <param-name>javax.ws.rs.Application</param-name>
              <param-value>org.foo.Config</param-value>
          </init-param>
      </servlet>
      ...
      <servlet-mapping>
          <servlet-name>MyApplication</servlet-name>
          <url-pattern>/myPath/*</url-pattern>
      </servlet-mapping>
      

    您也可以使用ResourceConfig 并在Feature 中注册活页夹,如here 所讨论的那样

    另请参阅:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2012-10-29
      • 1970-01-01
      相关资源
      最近更新 更多