28、服务混合中的事务、安全、集群和 JMX 技术详解

服务混合中的事务、安全、集群和 JMX 技术详解

1. 集群服务请求路由与测试

在服务调用过程中,请求的路由表现因服务类型而异。当请求路由到 receiver3(这是一个集群服务)时,会进行负载均衡;而请求路由到 receiver1 和 receiver2(这是固定服务)时,总是由各自的固定服务器提供服务。

为了进一步了解集群服务的特性,你可以尝试关闭其中一个托管服务器,观察这对新传入请求的影响。之后,你可以将这个关闭的服务器重新加入集群,而不会干扰集群的设置。

2. JMX 示例演示

为了在 ServiceMix 中演示 JMX,我们使用之前用过的示例。示例文件位于 ch17\04_JMX 文件夹中。

2.1 在 ServiceMix 应用中启用 JMX

ServiceMix 使用以下参数来启用 JMX:
- 默认命名端口(namingPort):1099
- 默认容器名称:jmxrmi
- JMX 服务 URL:service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi

这些是 ServiceMix 3.x 版本的默认设置。对于 2.x 版本,JMX 服务 URL 会变为:service:jmx:rmi:///jndi/rmi://localhost:1099/defaultJBIJMX。

这些值通过 %SERVICEMIX_HOME%\conf\jmx.xml 进行配置。为了简化操作,你可以编辑 jmx.xml 文件来禁用安全功能。具体步骤如下:
1. 在文件中搜索 “Comment the following lines to disable JAAS authentication for jmx”。
2. 注释后续的行。

接下来启动 ServiceMix,你可以尝试之前章节的任何示例,或者使用本章提供的 JMX 示例。操作步骤如下:

cd ch17\04_JMX
ant

然后执行同一文件夹中的 servicemix.xml 文件来启动 ServiceMix 容器:

%SERVICEMIX_HOME%/bin/servicemix servicemix.xml
2.2 初始化 JMX 控制台 — MC4J

你可以使用任何喜欢的 JMX 工具来控制 ServiceMix 应用。从 Java - 2 平台标准版(J2SE)5.0 版本开始,包含了一个 JMX 监控工具 JConsole。要启动 JConsole,执行以下命令:

cd %JAVA_HOME%\bin
jconsole

为了演示,我们使用 SourceForge 提供的 MC4J。MC4J 是用于 J2EE 应用服务器和其他 Java 应用的管理软件,它利用 JMX 规范连接并深入了解受支持的服务器和应用中的信息,能够浏览现有托管 Bean(MBeans)、更新配置、监控操作和执行任务。

启动 MC4J 的步骤如下:
1. 点击 MC4J 安装目录顶级文件夹中的 “MC4J Console 1.2b9.exe” 文件,打开 MC4J 窗口。
2. 从菜单中选择 “Management | Create Server Connection…”,启动向导。
3. 在向导中,进行以下操作:
- 选择服务器连接类型为 JSR160。
- 在 “Name” 文本框中输入任意名称,例如 “ServiceMix”。
- 选择服务器 URL 为 service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi。
- 接受向导中其余字段的默认值,点击 “Next>” 按钮。
- 在下一步窗口中点击 “Finish”,即可与 ServiceMix 建立连接。

连接成功后,点击 “org.apache.servicemix(1)”,会显示 POJO 绑定示例的组件。右键点击一个组件,选择 “Available dashboards… | Basic MBean View”,即可查看可用的 JMX 信息。

3. 通过 JMX 检索 WSDL

在 ServiceMix 中尝试示例时,你可能会遇到某些功能不正常或检索到的信息不符合预期的情况。这时,使用 JMX 控制台查看组件配置是很有必要的。

在 POJO 绑定示例中,服务接口和服务实现已经按如下方式进行了连接:

<jsr181:endpoint annotations="none" 
                 service="test:helloService" 
                 serviceInterface="samples.HelloServiceBI">
   <jsr181:pojo>
      <bean class="samples.HelloServicePojo">
      </bean>
   </jsr181:pojo>
</jsr181:endpoint>

要加载 JBI 总线生成的 WSDL,点击 “loadWSDL” 按钮。你可能需要取消勾选 “View as HTML” 复选框才能使 WSDL 可见。

4. 相关技术与组件概述

以下是一些相关技术和组件的概述:
| 技术/组件 | 描述 |
| — | — |
| 服务混合(ServiceMix) | 具有多种功能,如支持 JBI 组件、提供多种服务组件(httpConnector、httpGetData 等),可进行组件开发、部署和运行等操作。 |
| JBI 组件 | 包括绑定组件、服务引擎、服务消费者和提供者等,通过标准化消息和路由机制实现服务交互。 |
| EAI 模式组件 | 如内容路由器、内容丰富器、消息过滤器等,可在 ServiceMix 中进行配置和使用,用于实现不同的企业集成模式。 |
| Web 服务 | 可通过不同方式构建和测试,如使用 XFireConfigurableServlet、XFire Spring Jsr181 处理程序等,支持不同的消息传输协议(SOAP over HTTP、SOAP over JMS)。 |

5. 服务混合的部署与打包

ServiceMix 的部署和打包涉及多个阶段:
1. 组件开发阶段 :进行组件的开发工作。
2. 组件打包阶段 :将开发好的组件进行打包,包括使用 jbi.xml 安装描述符等。
3. 运行阶段 :将打包好的组件进行部署和运行。

部署模式包括轻量级部署和标准且符合 JBI 的部署。

6. 服务混合中的 QOS 特性

ServiceMix 支持多种 QOS 特性:
- 事务 :包括异步和同步事务交换编程,可通过特定方法发送消息交换。示例需要在 Servicemix 中进行配置、部署和运行。
- 安全 :可进行 HTTP 基本认证配置,也可使用 SSL 配置 HTTP 消费者和提供者角色。示例需要进行部署、配置 HTTP 基本安全并运行。
- 集群 :具有特定的功能和配置步骤,可进行部署和运行测试。
- JMX :如前文所述,可在 ServiceMix 中启用、初始化控制台并检索相关信息。

7. 服务版本控制

服务版本控制有多种方法,如契约方法和多端点地址方法。它涉及到接口、模式等方面的变化,对于服务的更新和维护非常重要。例如,在资金转移示例中,展示了版本控制的实际应用场景。

8. 总结

本文详细介绍了 ServiceMix 中的事务、安全、集群和 JMX 等技术,以及相关的示例和操作步骤。通过这些技术,能够更好地实现企业服务的集成、管理和优化。在实际应用中,你可以根据具体需求选择合适的技术和方法,提高服务的可靠性、安全性和性能。同时,对于服务版本控制的理解和应用,有助于应对服务变化带来的挑战,确保系统的稳定性和可扩展性。

graph LR
    A[启动 ServiceMix] --> B[启用 JMX]
    B --> C[初始化 JMX 控制台(MC4J)]
    C --> D[连接 ServiceMix]
    D --> E[查看 JMX 信息]
    E --> F[检索 WSDL]

以上内容涵盖了 ServiceMix 相关技术的多个方面,希望能帮助你更好地理解和应用这些技术。在实际操作中,你可以根据具体情况进行调整和优化。

服务混合中的事务、安全、集群和 JMX 技术详解

9. 服务聚合在业务集成中的应用

服务聚合在业务集成中具有重要作用,以一个业务集成示例来说明。该示例涉及多个验证服务,如地址验证服务、银行历史验证服务、信用卡验证服务等。

9.1 服务聚合的组件架构

ESB 组件包括聚合器、端点、归一化器、接收列表和翻译器等。基于 JBI 的 ESB 组件架构有其特定的 UML 图表示。

9.2 消息交换流程

消息交换有多个序列,例如序列 1 到序列 9,每个序列都有其特定的操作和方法,如 onMessageExchange 方法和 transform 方法等。

9.3 部署与运行

该服务聚合示例需要进行部署和运行,部署步骤完成后才能实现业务集成的功能。

10. 不同服务组件的配置参数

不同的服务组件有各自的配置参数:
| 服务组件 | 配置参数 |
| — | — |
| servicemix - http(消费者) | defaultMEP、endpoint、interfaceName、locationURI、role、service、soap、targetEndpoint、targetService、wsdlResource |
| servicemix - http(提供者) | endpoint、interfaceName、locationURI、role、service、soap、soapAction、wsdlResource |
| servicemix - jms(消费者) | connectionFactory、defaultMEP、destinationStyle、endpoint、jmsProviderDestinationName、role、service、soap、targetService、useMsgIdInResponse |
| servicemix - jms(提供者) | connectionFactory、destinationStyle、endpoint、jmsProviderDestinationName、role、service、soap |

11. EAI 模式组件的详细介绍

EAI 模式组件在企业集成中扮演着重要角色,以下是几种常见组件的详细介绍:

11.1 内容路由器
  • 定义 :根据消息内容进行路由决策。
  • 配置 :在 ServiceMix 中进行特定配置。
  • 示例用例 :涉及 JMS 客户端、消费者、提供者和接收者等组件的使用。
  • 部署与运行 :完成配置后进行部署和运行。
11.2 内容丰富器
  • 定义 :对消息内容进行丰富和补充。
  • 配置 :在 ServiceMix 中进行相应配置。
  • 示例用例 :包含多个组件的使用场景。
  • 部署与运行 :按步骤进行部署和运行。
11.3 消息过滤器
  • 定义 :过滤不符合条件的消息。
  • 配置 :在 ServiceMix 中设置过滤规则。
  • 示例用例 :涉及多个组件的交互。
  • 部署与运行 :完成配置后进行部署和运行。
11.4 管道
  • 定义 :按顺序处理消息的组件链。
  • 配置 :在 ServiceMix 中进行配置。
  • 示例用例 :包含多个组件的使用。
  • 部署与运行 :进行部署和运行操作。
11.5 拆分聚合器
  • 定义 :将消息拆分后再进行聚合。
  • 配置 :在 ServiceMix 中进行配置。
  • 示例用例 :涉及多个组件的配合。
  • 部署与运行 :完成配置后进行部署和运行。
11.6 静态接收列表
  • 定义 :使用静态列表指定消息接收者。
  • 配置 :在 ServiceMix 中进行配置。
  • 示例用例 :包含多个组件的交互。
  • 部署与运行 :进行部署和运行操作。
11.7 静态路由单
  • 定义 :通过静态路由单指定消息路由。
  • 配置 :在 ServiceMix 中进行配置。
  • 示例用例 :涉及多个组件的使用。
  • 部署与运行 :完成配置后进行部署和运行。
11.8 窃听器
  • 定义 :监听消息并记录相关信息。
  • 配置 :在 ServiceMix 中进行配置。
  • 示例用例 :包含多个组件的交互。
  • 部署与运行 :进行部署和运行操作。
11.9 XPath 拆分器
  • 定义 :根据 XPath 表达式拆分消息。
  • 配置 :在 ServiceMix 中进行配置。
  • 示例用例 :涉及多个组件的使用。
  • 部署与运行 :完成配置后进行部署和运行。
12. Web 服务的构建与测试

Web 服务可以通过多种方式构建和测试:

12.1 构建方式
  • 使用 XFireConfigurableServlet 构建。
  • 使用 XFire Spring Jsr181 处理程序构建。
  • 使用 XFire Spring XFireExporter 构建。
12.2 测试方式
  • 使用 Axis 客户端进行测试。
  • 测试文档样式和 RPC 样式。
  • 使用 JMS 通道和 JMS 客户端进行测试。
13. XStream 在 NMR 中的应用

XStream 在 NMR 中有特定的应用:
1. 组件 :包括 HTTPClient、HTTP 连接器、HTTPInterceptor、XStreamInspector 等。
2. 配置与部署 :对 HTTPInterceptor 和 XStreamInspector 组件进行配置、打包和部署。
3. 运行 :完成配置和部署后进行运行操作。
4. 示例用例 :涉及 XML 文档解组为传输对象等操作。

14. 综合应用场景与建议

在实际应用中,可以根据不同的业务需求综合运用上述技术和组件。例如,对于需要高可靠性的服务,可以结合事务和安全特性;对于需要灵活路由的消息,可以使用 EAI 模式组件。同时,在进行服务版本控制时,选择合适的方法来应对服务的变化。

graph LR
    A[业务需求] --> B[选择技术和组件]
    B --> C[配置与部署]
    C --> D[运行与测试]
    D --> E[优化与调整]
    E --> F[稳定运行]

通过对这些技术和组件的深入理解和应用,能够更好地实现企业服务的集成和管理,提高系统的性能和可靠性。在实际操作中,不断总结经验,根据具体情况进行调整和优化,以满足不断变化的业务需求。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值