簡體   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