2015-10-05 75 views
1

我正在使用java ee 6並試圖找出是否可以從servlet或過濾器開始對話。到目前爲止,我有以下代碼:是否可以從servlet或過濾器開始對話

的方法:

private static HttpConversationContext getHttpConversationContext() { 
    return Container.instance().deploymentManager().instance().select(HttpConversationContext.class).get(); 
} 

,然後我有:

final HttpConversationContext httpConversationContext = getHttpConversationContext(); 
httpConversationContext.associate((HttpServletRequest) request); 
httpConversationContext.getCurrentConversation().begin(conversationId); 

但這似乎並沒有工作。此外,當我嘗試檢查,如果他們的談話開始用下面的代碼:

Conversation conversation = httpConversationContext.getConversation(conversationId); 

談話總是空的,因爲前面的代碼沒有工作。

任何線索如何以正確的方式做到這一點?

請注意,雖然標籤中使用jboss7,但我不介意與其他服務器相關的解決方案是否已發佈,即。 wildfly。

很多謝謝。

+1

'HttpConversationContext',我猜'Container'和'Conversation',都是JBoss特有的類,它們不是任何發佈版本的Servlet API的一部分。請重新提出您的問題(刪除[java-ee- *]並添加適當的JBoss標籤)。我會爲你做,但我不知道你的JBoss細節。 –

+0

感謝@JohnBollinger的評論,我正在使用jboss 7,請隨時更改標籤。但我也想知道是否有可能通過服務器不可知的代碼實現這樣的事情。相關技術仍然是Java 6/7,所以它可能會給讀者一些線索。也許這樣的事情可以用不同的方式實現。不一定是我這樣做的方式。 – Ikthiander

+0

爲什麼不只是將對話注入到過濾器或servlet中,希望你使用的是servlet 3+ api,因爲它們支持注入 – maress

回答

0

如果你想以Java EE的方式來做,那麼你應該注入一個Conversation範圍會話bean到Servlet中。

+0

對話範圍不存在於servlet上下文中。 – Ikthiander

相關問題