繁体   English   中英

使用Jersey在web.xml中配置提供程序包

[英]Configuring provider packages in web.xml with Jersey

我正在使用Web服务,但出现非常奇怪的错误。 这是我的web.xml的行:

<init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>service</param-value>
</init-param>

据我所知, <param-value>必须被引用到我的主要应用程序所在的包中。 但是,我的应用程序位于rest.main包中,但是Web服务仅适用于上面定义的service值。

有什么问题,有人可以向我解释这些内容吗?

看看有关jersey.config.server.provider.packages配置属性的文档

定义一个或多个包含特定于应用程序的资源和提供程序的程序包。 如果设置了该属性,将在指定的程序包中扫描JAX-RS根资源和提供程序。

Servlet 2.x容器

web.xml部署描述符中经常使用此设置,以指示Jersey扫描这些软件包并自动注册所有找到的资源和提供程序:

<init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>
        org.foo.myresources,org.bar.otherresources
    </param-value>
</init-param>

使用此设置,Jersey将自动发现所选软件包中的资源和提供者。 默认情况下,Jersey也将递归扫描子软件包。

Servlet 3.x容器

对于Servlet 3.x容器,根本不需要web.xml 相反,可以使用@ApplicationPath批注来批注自定义ApplicationResourceConfig子类,并为应用程序中配置的所有JAX-RS资源定义基本应用程序URI。

使用以下命令定义将要扫描的软件包:

@ApplicationPath("resources")
public class MyApplication extends ResourceConfig {

    public MyApplication() {
        packages("org.foo.myresources,org.bar.otherresources");
    }
}

有关更多详细信息,请查看Jersey文档的“ 部署”部分

重要

  • 始终使用包装的合格名称;
  • 使用,; 声明多个软件包时用作分隔符。

如果应用程序仅包含存储在特定程序包中的资源和提供程序,则Jersey可以对其进行扫描并自动注册。

<web-app>
<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>org.foo.rest;org.bar.rest</param-value>
    </init-param>
    ...
</servlet>
...
</web-app>

参数值是指将被自动扫描的软件包。

您只需将软件包名称添加到

如果我将资源类放在com.ft.resources包中,则形成一个示例,然后我必须在其中添加包名称

<init-param> 
    <!-- For Jersey 2.x -->
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.ft.resources</param-value>
</init-param>

希望这可以解决您的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM