2012-04-20 26 views
1

我有一個彈簧mvc應用程序,它大量使用在 請求範圍中定義的bean。現在,我必須在此範圍之外使用此應用程序的一部分(在Magnolia CMS的 qwertz作業中)。這不,當然工作:如何在Spring MVC應用程序的真實請求之外激活請求範圍?

錯誤創建名爲「requestHelper」豆:範圍「要求」是 不是當前線程

活躍我不能改變的範圍豆和我不能改變代碼。所以我唯一的可能性 似乎將當前線程的範圍更改爲請求範圍模型。

我想是這樣

XmlWebApplicationContext context = (XmlWebApplicationContext) ApplicationContextProvider.getApplicationContext() ; 
    MockServletContext mockServletContext = new MockServletContext("/"); 
    context.setServletContext(mockServletContext); 
    context.refresh(); 

但是這仍然沒有激活當前線程的請求範圍。我怎樣才能達到 這個?

RequestContextHolder.setRequestAttributes(
    new ServletRequestAttributes(new MockHttpServletRequest()));  

... 

((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) 
    .requestCompleted(); 
RequestContextHolder.resetRequestAttributes(); 

Thoguh我認爲它不是在生產中使用代碼,黑客攻擊是一個好主意:

回答

1

請求範圍可以如下激活。

+0

我必須在生產環境中使用它。你爲什麼認爲這是一個壞主意? – 2012-04-24 06:54:51