如何将Hibernate会话与JmsListener方法相关联

时间:2016-11-08 17:46:11

标签: spring hibernate spring-data lazy-loading spring-jms

我有一个# create one plot p = plt.tripcolor(triang, xf) #delete this plot (you need both lines actually!!) p.remove() del p #create second plot p = plt.tripcolor(triang, zf) 应用使用SpringBoot来保存Oracle数据库上的数据,SpringData来处理JMS队列。

我正在暴露spring-boot-starter-activemq Rest WebService,需要一段时间。而且我不希望我的用户挂起响应。

所以我添加了一个用DELETE注释的方法来完成工作,我用@JmsListener调用它。

但是,如果我的处理的jmsTemplate.convertAndSend()部分完美无缺,那么只要我尝试访问使用我findAll()方法检索的数据(仅显示它){{1}在我的懒惰集合上,说我没有Hibernate会话。 findAll()

以下是我的代码片段,如果有帮助的话:

LazyLoadingException

我只想知道如何将我的会话附加到我的Jms方法。

干杯, 奥利弗

1 个答案:

答案 0 :(得分:0)

您的JmsListener方法是异步处理的(这就是您执行此操作的重点),因此它在不同的线程上运行。如果它在不同的线程上运行,则您无法使用相同的事务。

但是,您可以在处理JMS消息时启动 new 事务,但您必须意识到具体意味着什么。在@Transactional上添加runJob就可以了。因为它现在是异步的,所以您必须在响应中考虑到这一点。您将返回什么HTTP状态代码。例如,某些东西可能在后台失败。