2013-10-14 101 views
0

在Servlet API 3.0中引入的新註釋對配置您自己實現的servlet /過濾器非常有用。但是...有沒有什麼辦法可以配置依賴關係提供的servlet/filter?是否可以使用Servlet 3.0註釋來配置外部servlet /過濾器?

例如,使用RestEasy的(實際上很多框架)是很常見的要求是這樣的:

<web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

    <listener> 
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> 
    </listener> 

    (...) 

</web-app 

因此,你不能使用註釋的存在。由於一些分佈問題,我想能夠使用一個空的web.xml,所以很高興能夠找到如何以編程方式聲明這樣的映射。

回答

0

檢查specs,第8.1節「註解和可插拔」:

在web應用中,使用註釋都會有自己的註解處理 只有當它們位於WEB-INF/classes目錄類,或者在應用程序中的WEB-INF/lib中的jar文件中打包 。

而關於metadata-complete的東西。

0

你可以這樣做 - 但這並不意味着你應該:)。

如果您不需要創建任何ServletContextListeners,那麼您可以編寫ServletContextListener並使用ServletContext的編程API將Servlet,Filters,HttpSessionListener等添加到您的Web應用程序中。用@WebListener註釋你的ServletContextListeners,你就完成了。

如果您需要創建ServletContextListeners,那麼您必須使用ServletContainerInitializer。再次使用ServletContext的編程API。在這種情況下,你可能會做ServletContainerInitializer中的所有事情。

相關問題