`

Spring JMS MessageListener实现类不能参与事务拦截

 
阅读更多

Spring JMS MessageListener实现类不能参与事务拦截,否则会出现MessageListener的实现类在操作数据库时找不到数据库,特别是多租户数据库切换条件下,会出现两种情况:

(1)服务器刚启动第一次执行Listener时会报错:

  Hibernate:Could not execute JDBC batch update 以及Hibernate:NO database selected

  Exception in thread "main" org.hibernate.exception.GenericJDBCException: Could not execute JDBC  b

(2)执行第二次以后,如果涉及到不同租户的交替操作,当前租户的Listener运行所取得的数据库是上一个租户的数据库,造成存储的数据窜库。

解决办法:

(1)配置Listener实现类不参与Spring事务拦截,如图1:

(2)如果与方法(1)事务拦截冲突,直接修改类名把Listener实现类排除在hibernate事务拦截之外,如把

SmsJMSReceiverServiceImpl改成SmsJMSReceiver。

  • 大小: 599.2 KB
分享到:
评论

相关推荐

    Spring API

    12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...

    Spring中文帮助文档

    12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...

    springMVC+activeMQ例子

    5. **编写消息消费者**:创建一个实现`MessageListener`接口的类,用于接收并处理从ActiveMQ接收到的消息。 6. **集成测试**:编写测试用例,验证消息的发送和接收是否正常。 在提供的文件列表中,我们可能找到如`...

    Java Web 整合开发 完全自学手册 源代码

    5. **JTA与JMS**:Java Transaction API(JTA)和Java Message Service(JMS)是企业级Java应用中处理分布式事务和消息传递的关键技术。学习如何使用JTA进行事务管理,以及通过JMS实现异步通信和解耦。 6. **EJB...

    郭克华-J2EE视频源代码

    5. **Java Message Service (JMS)**:JMS允许应用之间通过消息传递进行通信。源码可能包含生产者和消费者示例,展示如何发送和接收消息。 6. **Java Transaction API (JTA)**:JTA提供了分布式事务处理的能力,确保...

    JavaWeb

    JMS(Java Message Service)提供消息队列服务,实现异步通信,提高系统的可扩展性和可靠性。 7. **Web容器**: Tomcat、Jetty、WebLogic、WebSphere等是JavaWeb应用的运行环境,它们提供Servlet和JSP的运行支持,...

    JavaEE Tutorial

    此外,JavaEE还提供了过滤器(Filter)和监听器(Listener)机制,它们在Web应用的生命周期中起着监控和拦截请求的作用。例如,过滤器可以用于认证、日志记录或数据转换,监听器则可以监听特定事件,如会话创建或...

    游戏论坛网站

    6. **JMS(Java Message Service)**:用于实现异步通信,例如,当大量用户同时发帖或回帖时,JMS可以帮助处理消息队列,避免服务器过载。 7. **JTA(Java Transaction API)**:确保在多资源事务中的一致性,对于...

    J2EE高级框架PPT.rar

    7. **Java Servlet Filter和Listener**:Filter用于拦截和处理Servlet请求,而Listener监听特定事件并作出响应,它们是增强应用程序功能和监控的重要机制。 8. **Web服务(Web Services)**:包括SOAP、WSDL和UDDI...

    javaEE知识点复习资料

    9. **JMS(Java Message Service)**:JMS允许应用之间通过消息传递进行通信,实现异步处理和解耦。 10. **WebSocket**:JavaEE 7引入了WebSocket API,支持双向通信,为实时应用如在线游戏、聊天室等提供了可能。 ...

    jee基础教程jeeAPI

    9. **MVC模式**: 虽然JEE本身并不强制使用特定的开发模式,但开发者常借助JSF(JavaServer Faces)、Spring MVC等框架实现Model-View-Controller模式,以提高代码组织和复用。 10. **持续集成与测试**: 开发JEE应用...

    javaweb题库

    9. **JMS(Java Message Service)**:JMS是Java消息服务,用于实现异步通信。在JavaWeb应用中,可以使用JMS进行解耦和消息队列的处理。 10. **WebSocket**:WebSocket是HTML5引入的一种协议,提供全双工的通信方式...

    javaEE小代码

    Filter可以拦截请求,进行预处理或后处理,而Listener则可以监听特定事件,如session的创建和销毁。 10. **RESTful API**:随着Web服务的发展,使用JAX-RS创建RESTful API变得越来越常见。通过这些小代码,你可以...

    java J2EE面试题集

    4. **JMS(Java Message Service)** - **消息队列**:理解点对点和发布/订阅两种模型,以及MessageProducer和MessageConsumer的概念。 - **消息API**:如何创建和发送消息,以及处理消息的生命周期。 5. **JPA...

    张孝祥在sd2c大会上的JavaWeb高级应用讲课ppt

    5. **JMS(Java Message Service)**:JMS允许应用程序之间通过消息传递进行异步通信,常用于解耦系统组件,提高系统的可伸缩性和可靠性。 6. **JPA(Java Persistence API)**与**Hibernate**:JPA是JavaEE规范的...

    JavaWeb综合笔试题(带答案).doc

    8. **JMS(Java Message Service)**:JMS是Java消息服务,允许应用程序之间进行异步通信,常用于解耦系统组件。 9. **JSP标签库**:包括自定义标签库(TLD)和标准标签库(JSTL),提供了一种更简洁的方式来编写JSP...

    j2ee interview

    7. **JMS(Java Message Service)**:消息传递接口,支持发布/订阅和点对点消息模式,用于实现解耦和异步处理。 8. **Web服务**: - **SOAP(Simple Object Access Protocol)**:基于XML的协议,用于交换结构化...

    JavaEE基础实用教程源代码

    7. **JMS(Java Message Service)**:JMS是Java消息服务规范,提供了异步通信的能力,常用于分布式系统中的解耦和消息传递。 8. **Filter与Listener**:Filter在JavaEE中用于拦截和处理HTTP请求,可以实现数据过滤...

    Javaweb实验打包文件.rar

    实验可能涉及使用Servlet或框架如Spring MVC实现这一模式。 4. **JNDI(Java Naming and Directory Interface)**:JNDI 提供了查找和访问各种命名和目录服务的接口。在JavaWeb应用中,JNDI可用于查找数据库连接池...

    Java Web从入门到精通_PPT

    7. **Filter和Listener**:Filter用于拦截请求和响应,实现预处理或后处理功能;Listener可以监听Web应用中的特定事件。 8. **JSP标签库**:例如JSTL(JavaServer Pages Standard Tag Library),简化了JSP页面的...

Global site tag (gtag.js) - Google Analytics