Jersey 2.22:我应该在哪里定义REST资源的位置?

时间:2015-10-13 01:10:19

标签: java rest dependency-injection resources jersey

目前,我知道两种方式:

  1. 在您的web.xml上将其指定为The columns in the subquery do not match.
  2. 创建一个扩展<init-param>的类并将其添加到您的web.xml
  3. 我有这个扩展ResourceConfig的类,因为我需要为依赖注入注册一个Application Binder(ResourceConfig)。

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

1 个答案:

答案 0 :(得分: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>
    
  3. 您也可以使用ResourceConfig并在Feature内注册活页夹,如上所述here

    另见: