2010-06-09 58 views
2

我在seam-gen(2.1.2)應用程序中創建了一個普通的servlet,現在我想使用注入。因此,我有@Name註釋它和它的公認的成分:可以將普通的servlet配置爲接縫組件嗎?

 INFO [Component] Component: ConfigReport, 
scope: EVENT, type: JAVA_BEAN, class: com.mycompany.servlet.ConfigReport 

不幸的是記錄器的注入不init()

import org.jboss.seam.annotations.Logger; 
import org.jboss.seam.annotations.Name; 
import org.jboss.seam.log.Log; 

@Name("ConfigReport") 
public class ConfigReport extends HttpServlet { 

    @Logger 
    private Log log; 

    public void init(ServletConfig config) throws ServletException { 
     log.info("BOOM"); 
    } 

}

工作NullPointerException是我的做法濫用?
什麼是替代方案(向servlet發送請求的客戶端是curl而不是瀏覽器)?

回答

3

堆棧器,如果你想Seam @ Inject的任何啓用組件,它必須攔截你的請求。例如,@ In-jection在使用EJB時​​工作,因爲Seam使用EJB攔截器。它解釋了爲什麼你使用EJB時​​應該聲明Seam EJB攔截器。另一方面,Seam利用表達式語言解析器爲您提供訪問任何Seam組件,當安裝Seam核心jar時,Seam組件默認安裝爲

的關鍵,以實現與任何網絡科技Seam集成是ContextFilter - 請注意,您必須啓用縫過濾器使用ContextFilter - 這是根據煤層在行動書如下

可將接縫容器和上下文描述非JSF請求。不應該應用於JSF請求,因爲它會導致重複的邏輯被執行,導致未定義的結果。

...

的ContextFilter打開訪問Seam容器和它的上下文變量非JSF 的servlet,如Struts,Spring MVC和直接Web遠程(DWR)。儘管Seam的大部分工作都是在JSF servlet中完成的,但這些額外的過濾器允許Seam 至 將其生命週期的邊界延伸超出JSF servlet的範圍。

爲了使ContextFilter你在components.xml

<component name="org.jboss.seam.web.contextFilter"> 
    <property name="disabled">false</property> 
</component> 

聲明它因爲沒有空閒時間,我不知道如何使用這種的funcionality的。看看ContextFilter源代碼。它可以給你一個很好的見解。

+0

+謝謝,前幾天剛買了這本書,你給我指針 – stacker 2010-06-09 18:41:50

6

對於記錄:

除了重要的提示阿瑟 - 羅納德-F-d-加西亞放棄。

注入組件仍然不起作用,至少我可以手動查找組件,因此需要上下文ContextualHttpServletRequest

組件。XML

<web:context-filter regex-url-pattern="/config/*"/> 

servlet.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     final HttpServletRequest req = request; 
     final HttpServletResponse res = response; 
     new ContextualHttpServletRequest(req) { 
       public void process() throws Exception { 
        wrappedGet(req, res); 
       } 
       }.run(); 
    } 

在包裹servlet代碼

entityManager = (EntityManager) Component.getInstance("entityManager"); 

鏈接:

+0

謝謝。好工作(+1)。我假裝在其他Web框架中使用ContextFilter。 – 2010-06-10 16:56:40

相關問題