[英]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根資源和提供程序。
在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容器,根本不需要web.xml
。 相反,可以使用@ApplicationPath
批注來批注自定義Application
或ResourceConfig
子類,並為應用程序中配置的所有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.