2015-10-05 77 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

相关问题