hibernate - Open Session In View 如何与 jms 连接/ session 一起使用?

标签 hibernate session grails jms

我们有一个 grails Web 应用程序,它接受 http 请求并使用 activemq 将处理委托(delegate)给 pub-sub jms。

由于在将消息发布到目的地后返回了 http 请求,因此 Open Session In View 拦截器 token 是否在发布后立即关闭?

当订阅者开始处理来自activemq队列的消息(这里的服务方法是订阅者)时,整个事务(订阅者服务方法中有多个事务)是否在单个 session 中或hibernate模板策略是否为单个事务打开 session 并在提交后关闭它会被使用吗?
如果是这样,对于单个jms消息处理,会不会有多个 session 会被打开和关闭?

我一直在挠头,但无法解决它,任何帮助都会有用!

最佳答案

好的,这里有几个问题。

让我们从第一个开始:

... is the Open Session In View interceptor token closed right after publishing?



它像往常一样关闭。当 HTTP 请求结束时。发布 JMS 消息对此没有影响。

下一个:

When the subscriber starts processing the message from activemq queue ... will the entire transaction be in a single session ... ?



答案是视情况而定。这取决于您可以使用自己的代码更改默认行为。但是,如果您遵循单一事务服务方法的最常见模式来处理消息,那么将只使用一个 hibernate session (由 JMS 插件功能提供)和一个事务(由您的服务方法提供)。事务和 hibernate session 都将关闭

关于hibernate - Open Session In View 如何与 jms 连接/ session 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41867590/

相关文章:

mysql - 如何以jsp形式绑定(bind)数据库中的类别列表

php - CodeIgniter session set-cookie duplicated -- 如何解决

grails - Groovy DAO可变范围问题

java - 单向关联比双向关联更抽象吗?

java - Hibernate 延迟加载单列

java - 使用 Hibernate createCriteria 和 beginTransaction 的顺序有什么不同吗?

jsp - 在 IE JSP 上按下后退按钮时使 session 无效

grails - 使用 Groovy Spring security getCurrentUser 获取有意义的字符串

javascript - 如何从JavaScript访问Grails对象的Arraylist

java - 如何获取 Hibernate entityManager.createNamedQuery 结果