J2EE容器的理解 -- 让Spring JMS使用WebSphere的线程池

记得几个月前在解决一个SSL Handshake问题后感悟到WAS是一个J2EE容器的含义,近期的一个事情又加深了我对“容器”一词的感受。

项目的背景是用微服务架构重构一个十多年前开发的基于WAS的一个J2EE应用时。在重构过程中需要暂时性在该WAS应用上增加一个MQ进行侦听器,无需多想两种解决方案就浮现出来:传统过时的MDB(Message Driven Bean)和Spring JMS Container。对于以年轻人为主的团队来说,EJB无论如何都不会成为首选,毕竟那是十年前的技术流派了,大家只是听说过。所以自然而然地选择了后者–Spring JMS Container。

线上线下关于Spring的资料很丰富,所以实现一个需要的JMS Listener Container是很顺利的,最后就只剩下一个事务问题待解决。WebSphere提供了JTA的实现, 而Spring的事务管理器接口很简单,但是由于这是一个改造项目,业务逻辑很复杂,并且代码运行了很多年,所以任何一点代码改动都可能造成业务问题,结果就只能最大限度的保留现有代码。而该代码是原来是一个EJB(MDB)的一部分,通过EJB容器来获取一个JTA事务的,在把该代码移植到基于Spring的JMS Container时,我们仅仅把获取事务管理器的代码改成了通过JNDI来获取一个WebSphere上的JTA实例。一切看起来都是水到渠成。

但是部署到WebSphere上运行的时候却碰到了问题,错误提示该线程不是在WebSphere下的线程无法获取JNDI对象。问题来了,我们的应用不是部署在WebSphere上的吗?什么叫线程不在WebSphere里?这个问题一下子刺激了“WebSphere是容器”的理解,根本原因就是我们用的Spring的JMS Container是由Spring通过java线程池方式来创建的线程,这些线程是直接通过Java标准API建立的直接运行在JVM上的,对WebSphere而言是透明的,正是由于它不是运行在WebSphere的容器里,WebSphere容器本身的资源和服务对它也是透明的。明白了这个之后,解决办法就很简单了,在Spring里配置一下线程池,让它用WebSphere的线程池,比如wm/default。简单改动之后重新部署,问题解决。

补记:
关于J2EE容器的理解也让另一个问题的解决有了新的思路。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WebSphere MQ6是一个企业级消息传递中间件,由IBM公司开发。它被广泛应用于各种复杂的分布式系统中,用于在不同的应用程序之间传递消息。通过使用消息队列的方式,WebSphere MQ6可以确保消息的可靠传递,以及处理大量的消息流量。 CSDN(中国软件开发网)是一个专注于软件开发和IT技术的在线社区,提供各种技术文章、问答、博客等资源。在CSDN上,有很多关于WebSphere MQ6的相关文章和教程,可以帮助开发人员理解使用这个中间件。这些文章包括WebSphere MQ6的基本概念、配置和部署等方面的内容。 在CSDN上,开发人员可以通过搜索关键字“WebSphere MQ6”来找到相关的文章和资源。这些资源可以帮助开发人员快速上手WebSphere MQ6,了解其特性和功能。此外,CSDN上还有很多社区成员分享自己的经验和问题解决方案,可以帮助开发人员更好地使用和管理WebSphere MQ6。 总之,通过在CSDN上搜索WebSphere MQ6,开发人员可以找到关于这个中间件的相关文档、教程和社区资源,以帮助他们更好地理解使用WebSphere MQ6,从而构建可靠的分布式系统。 ### 回答2: WebSphere MQ6是一个消息传递中间件系统,有着广泛的应用。在CSDN(中国软件开发者社区)上,关于WebSphere MQ6的相关文章、教程、问题解答等资源应该是非常丰富的。 在CSDN上,可以找到大量关于WebSphere MQ6的介绍文章,这些文章通常会从系统概述、功能特性、架构设计等方面进行详细讲解,帮助开发者更好地了解和掌握WebSphere MQ6的使用方法。 此外,还会有许多针对WebSphere MQ6的实践经验文章,这些文章通常会介绍如何在具体的应用场景中使用WebSphere MQ6来解决实际问题,分享经验和技巧,帮助开发者更好地应用WebSphere MQ6。 在CSDN上,也会有很多WebSphere MQ6的教程和案例分析,这些教程会从入门到高级逐步讲解WebSphere MQ6的各个方面知识,同时结合实际案例进行分析和演示,帮助开发者更好地理解和应用WebSphere MQ6。 此外,如果遇到问题,也可以在CSDN上提问,有很多MQ6的专家和开发者会提供解答和指导。在CSDN的MQ6技术论坛中,可以经常看到一些关于MQ6的问题和解答,这对于遇到问题的开发者来说是非常有帮助的。 总之,CSDN作为一个IT技术社区,提供了丰富的WebSphere MQ6相关资源,包括文章、教程、案例分析和问答等,对于想要了解和学习WebSphere MQ6的开发者来说是一个非常好的平台。 ### 回答3: WebSphere MQ是一款由IBM开发和提供的消息传递中间件(MQ)产品。它是一种跨平台、可靠、安全的消息传递解决方案,用于在分布式环境中实现应用程序之间的通信。 CSDN是中国软件开发者社区的一个著名平台,它为开发者提供了丰富的技术资源、博客文章、问答社区等互动交流的工具和平台。 在WebSphere MQ6中,CSDN可作为一个重要的资源和参考来源。开发者们可以在CSDN上找到关于WebSphere MQ6的技术教程、案例分析、最佳实践等相关内容。这些资源可以帮助开发者了解和学习WebSphere MQ6的使用方法、配置管理、高可用性设置以及与其他系统的集成等主题。 同时,CSDN还是一个社交平台,开发者们可以在其中与其他使用WebSphere MQ6的同行进行交流和讨论。他们可以通过CSDN的博客、问答社区、论坛等功能来与其他开发者分享自己的经验和解决方案,获取更多的技术支持和建议。 总之,WebSphere MQ6和CSDN是两个互相 complement 的平台。WebSphere MQ6为开发者提供了可靠的消息传递解决方案,而CSDN则为开发者提供了丰富的技术资源和交流平台,帮助开发者更好地理解和应用WebSphere MQ6。这两个平台的结合为开发者提供了更好的技术支持和学习环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值