java - 中间件和 SOA 示例

标签 java jms ejb-3.0 soa message-queue

我是一名缺乏经验的 Java 开发人员,我试图围绕一些基本的中间件/SOA 概念和技术,特别是:

  • 面向服务的架构 (SOA)
  • 面向消息的中间件 (MOM)
  • 消息队列
  • Apache Camel
  • 骡子
  • EJB
  • 端点和路线
  • 服务总线/ESB
  • JMS

在网上/在维基百科上查找了每一个之后,我能够(在大多数情况下)为每一个得到体面的定义。我不明白的是所有这些技术/概念如何在后端协同工作以提供第二层/业务层解决方案。

有人可以举一个使用所有这些技术/概念的架构示例,并解释它们各自在整体解决方案中的作用吗?一旦我看到一个工作示例,我相信它会帮助我连接大部分点。

编辑:自从我添加了赏金,我得到了几个建议阅读书籍的答案。虽然我很欣赏这里的所有反馈,但我根本无法放弃 300 点声望点来回答本质上归结为“RTM”的答案(尤其是当我身无分文并且无法负担 手册!)重申一下,赏金和明确的答案将交给能够在一个有意义的、实际的例子中击中所有这些子弹的人。 这不一定是中间件纲要!!! 只需一两段,说明如何将所有这些协调使用以生成 Java 业务层解决方案。再次感谢。

最佳答案

SOA 主要原则:将系统构建为一组服务,其中每个服务都是

  • 粗粒度
  • 可互操作
  • 松散耦合

一家公司提供了多年开发并以某种形式向用户(人类或其他系统)公开的大量业务服务(粗粒度)。设计和开发这些功能中的每一个的可能性更大,而不是牢记上述三个原则。此外,这些功能中的每一个都可能运行在不同的异构平台上,使用不同的技术等。

如果您想整合这些不同的功能从而创建新的解决方案(例如,亚马逊店面是由他们的目录服务、购物车服务等组成的新服务)怎么办?

你有两个选择:

  1. 牢记 3 条原则,从头开始构建新功能。但这是一项非常昂贵的努力,而且几乎永远不会成功。
  2. 一种有效且风险较小的替代方法是从现有的、经过验证的(经过良好测试的)服务组装/组合它。

选项 2 是 ESB 可以帮助他们支持路由、转换、监控等。 Apache Camel , Mule 是开源 ESB。 Endpoints & Routes 是这些 ESB 实现的 EIP (Enterprise Integration Patterns) 中使用的术语。当 ESB 想要路由/集成在异构平台上运行的服务时(例如,目录服务可能在大型机系统上运行,但购物车是使用在 Java 应用程序服务器中运行的 有状态 EJB 实现)。 消息队列是 MOM 中的一个概念,它在发送者和接收者之间充当消息的临时存储。这种临时存储提供了很多好处,如异步交付、保证交付等。有几个不同的 MOM 供应商,如 IBM (WebSphere MQ)、开源 ActiveMQ 等。我们可以使用 Message-Oriented-Middleware 让您的代码独立于供应商。

我试图将所有概念与一个例子联系起来。我也试图保持简短。请 提出后续问题以获得更多理解。

MOM 不是实现 SOA 的必要条件。例如如果您的所有服务都通过 HTTP 通过 SOAP 公开,那么在这种情况下您不需要 MOM。

关于java - 中间件和 SOA 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055290/

相关文章:

java - 如何对 Java EE 代码进行单元测试?

java - akka websocket with java,计算客户端数量,向客户端发送消息

java - 由 : org. springframework.beans.factory.NoSuchBeanDefinitionException 引起:运行测试时

java - Tomcat Workers - 连接 Tomcat 和 Apache

java - 响应不包含零整数

Java JMS 混合消息传递实现

jboss - 如何获取 Topic 中 JMS 消息的数量

java - 如何配置消息驱动 Bean 应用程序和 Glassfish 以使用来自远程 Message Broker 的消息?

java - org.hibernate.HibernateException : Don't change the reference to a collection with cascade ="all-delete-orphan"

unit-testing - 单元测试 EJB 3.1