`
hsrong
  • 浏览: 36686 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JBossESB4.7 Programming Guide 翻译之八--Defining Service Configurations

    博客分类:
  • ESB
 
阅读更多
Defining Service Configurations
Overview
        JbossESB4.7的配置是基于jbossesb-1.2.0XSD。这个XSD是ESB的配置指南。这个model包含两个主要部分:
          1 <provider> model的这个部分定义了所有消息的<bus>privider,这些<bus>是供<services>部分定义的消息的<listener>使用。
          2 <service> model的这个部分定义了一个Jboss ESB实例拥有的所有服务。每个<service>实例中包含或者“Gateway”或者“Message Aware”监听定义.
    使用JBoss Developer Studio是基于这种模型进行配置的最简单的方式。你也可以使用一个XSD aware的XML编辑器,比如Eclipse IDE中的xml Editer。这为开发者提供了一个自动补全特性。

Providers
    配置中的<providers>部分为一个单独的ESB实例定义了所有消息的<provider>实例。目前支持两种类型的provider:
           Bus Providers:这些描述了事件驱动的provider的信息,例如“push”消息的listener。这种provider类型的一个例子就是<jms-provider>。
           Schedule Provider:指的是计划驱动listener的配置。如入。“pull”消息的listener。
    一个Bus Provider(例如<jms-provider>)可以包含多个<bus>定义。<provider>也可以包含多个相关的<property>实例,这些属性对于定义在<provider>中的所有<bus>实例是通用的(例如JMS,- “connection-factory”, “jndi-context-factory”)。相反,每个<bus>实例也可以定义自己特有的属性(例如,对于JMs -“destination-type”, “destination-name”)。
    例如,下面是一个关于JMS provider 的配置:

<providers>
    <provider name="JBossMQ">
<property name="connection-factory" value="ConnectionFactory" />
<property name="jndi-URL" value="jnp://localhost:1099" />
<property name="protocol" value="jms" />
<property name="jndi-pkg-prefix" value="com.xyz"/> 
<bus busid="local-jms">
   <property name="destination-type" value="topic" />
       <property name="destination-name" value="queue/B" />
       <property name="message-selector" value="service='Reconciliation'"
       <property name=”persistent” value=”true”/>
</bus>
    </provider>
</providers>


         上面这个例子用的是基本类型的<provider>和<bus>。这是相当合理的,但是我们建议在真实的配置过程中,使用这些类型的扩展类型。比如对于JMS来说,使用<jms-provider>和<jms-bus>。上述配置中最重要的部分就是配置定义在<bus>实例上的busid属性。这个是<bus>元素的必须的属性(对于他的扩展也一样)。这个属性会在<listener>配置中引用来表明这个listener接收的消息是哪个<bus>实例的。

Services
    配置中的<service>部分定义了这个ESB实例所拥有的全部服务。它是以定义一系列<service>配置实现的。一个<service>可以包含以下属性:

名称 描述 类型 是否必须
name 该服务在Service Registry注册的服务名 xsd:string 是
category 该服务在Service Registry注册的服务目录 xsd:string 是
description 可读的存储在Registry中的服务的描述 xsd:string 是

    一个<service>可能定义一系列<listeners>和<actions>。这个配置model定义了一个基本的<listener>类型,还为主要支持的传输定义了专门listener。比如<jms-listener><sql-listener>.
    基本的<listener>定义了下列属性。所有的<listener>扩展都继承了这些属性定义。因此,JBossESB支持的所有网关和listener都能设这些属性,比如InVM。

名称 描述 类型 是否必  须
name Listener的名字。这个属性是记录日志的目的 xsd:string 是
busrefid 对于<bus>的busid的引用,listener通过该bus接收消息 xsd:string 是
maxThreads 这个listener能够激活的处理消息的最大并发线程数 xsd:string 是
is-gateway 用于表明这个listener是网关还是Message Aware Listener xsd:string 是

          Listener可以定义0或者多个<property>元素。这些<property>元素用于定义的特殊属性。
注意:对于服务中定义的每个gateway listener,一个ESB aware Listener。在ESB内部,你不能发送一个消息到网关。并且,注意一你问网关不是一个端点,他在Registry中没有端点引用(EPR)。
    下面是一个<listener>引用<bus>的例子:

    如果一个服务不包含一系列<action>的话,这个服务不能发挥什么作用。Actions是服务真正发挥作用的元素。一般<action>中包含了处理从服务上获取的消息payload的逻辑。也有可能,action中也包含了转换信息或者将消息路由出去的逻辑,以便能被其他服务或实体处理。
下面是action的一些属性:
名称 描述 类型 是否必须
name action的名字。这个属性是记录日志的目的 xsd:string 是
class org.jboss.soa.esb.actions.ActionProcessor的实现类的名字 xsd:string 是
process
处理方法的名字。在消息处理过程中将会调用。默认是“process”方法。 xsd:string 否
         <actions>元素中包含了一系列的<action实例,这些action是按照他们在<actions>出现的顺序依次调用的。每个<action>返回的消息将会作为下个<action>的输入消息。

         <actions>元素中包含了一系列的<action实例,这些action是按照他们在<actions>出现的顺序依次调用的。每个<action>返回的消息将会作为下个<action>的输入消息。
就像model中的其他元素一样,<action>元素也包含0或者多个<property>元素。属性元素既可以是“name-value-pair”的形式定义,也可以是任何形式的内容。根据XSD的定义,不管这个<property>在哪配置,任何形式的内容都是<property>元素的有效子内容。然而,只有在<action>元素上定义的<property>实例时才使用任何形式子内容。
就像上面所说的那样,action是通过实现org.jboss.soa.esb.actions.ActionProcessor类来实现的。这个接口的所有实现必须包含一个构造函数:
        public ActionZ(org.jboss.soa.esb.helpers.ConfigTree configuration);

    可以通过构造函数的ConfigTree实例获得所有的Action属性,包括<property>实例中的任何形式的内容。这些内容是ConfigTree实例内容的一部分。
下面是一个<actions>配置的例子:

<actions>
    <action name="MyAction-1" class="com.acme.MyAction1"/>
    <action name="MyAction-2" class="com.acme.MyAction2">
        <property name=”propA” value=”propAVal” />
    </action>
    <action name="MyAction-3" class="com.acme.MyAction3">
        <property name=”propB” value=”propBVal” />
        <property name=”propC”>
            <!-- Free form child content... -->
            <some-free-form-element>zzz<some-free-form-element>
        </property>
    </action>
</actions>


Transport Specific Type Implementations
    JBossESB配置model定义了基本类型<provider>,<bus>和<listener>的特殊传输实现,比如JMS,SQL等。这使我们能对配置进行更好的验证,同时使用XSD aware的xml编辑器进行配置更简单。当创建配置时,建议使用这些特殊类型而不是基本类型。
在使用基本类型创建配置时的原则同样适用于使用这些特定传输的配置。
    1.定义provider配置。例如。<jms-provider>
    2.针对这个新的provider添加bus配置,指定一个唯一的busid属性值
    3.正常的定义你的<services>,添加传输指定的listener配置。(例如,<jms-provider>要通过busrefid引用bus配置,比如<jms-listener>引用<jms-bus>)
    唯一的规则就是当使用这些特定传输类型时,你不能使用一种类型的listener去引用另一种类型的bus,也就是说listener与所引用的bus要是相同类型的,比如你可以使用<jms-listener>引用<jms-bus>。否则,将会导致一个运行时的错误。
在这个版本中,可用的传输特定实现有:
1.JMS
<jms-provider>, <jms-bus>, <jms-listener> 和 <jms-message-filter>。<jms-message-filter>只能添加在<jms-bus>和<jms-provider>元素中。<jms-bus>和<jms-listener>指定了JMS的连接属性,<jms-message-filter>指定了现实消息的QUEUE/TOPIC 和 selector细节。
2.SQL
<sql-provider>, < sql -bus>, < sql -listener> 和 < sql -message-filter>。<sql -message-filter>只能添加在< sql -bus>和< sql -provider>元素中。< sql -bus>和< sql -listener>指定了JDBC的连接属性,< sql -message-filter>指定消息或者行的选择处理属性。
3.FTP
<ftp-provider>, <ftp -bus>, <ftp -listener> 和 < ftp -message-filter>。< ftp -message-filter>只能添加在<ftp-bus>和< ftp-listener>元素中。< ftp-bus>和< ftp-provider>指定了FTP的连接属性,< sql -message-filter>指定消息或者文件的选择处理属性。
4.HIBERNATE
<hibernate-provider>,<hibernate-bus>,<hibernate-listener> 和<hibernate -message-filter>。< hibernate-message-filter>只能添加在< hibernate-bus>和< hibernate -listener>元素中。< hibernate -provider>指定了FileSystem获取属性,比如hibernate配置文件的位置,< hibernate -message-filter>指定要拦截的类和事件。
5.File System:
<fs-provider>, <fs-bus>, <fs-listener> 和 < fs-message-filter>。< fs-message-filter>只能添加在<fs-bus>和< fs-listener>元素中。< fs-bus>和< fs-provider>指定了文件系统连接属性,< fs -message-filter>指定消息或者文件的选择和处理属性。
6.Schedule:
<schedule-provider>。这是一种reshuffle的provider,和前面几种基于bus的provider不同。更多细节参考Scheduling一章。
7.JMS/JCA integration:
<jms-jca-provider>。这个provider可以代替<jms-provider>,以便能使用JCA inflow来传送进入的消息。这为action管道引进了一种事务流,使action处于一个JTA事务中。
也许你已经注意到了,在目前实现的所有特定传输类型中包含一种基本类型中没有的,那就是<*-message-filter>。这种元素可以被添加到<*-listener>或者<*-bus>中。允许在两个地方设置就意味着你就可以指定全局性的消息过滤也可以专门为某个listener指定。
为了展示和描述每个传输特定类型的属性,你可以使用jbossesb-1.1.0XSD,jbossesb-1.1.0XSD全面的描述了每个属性。

|属性名|描述|是否必须|
|dest-type|目标的类型,QUEUE或者 TOPIC|强制|
|dest -name|QUEUE或者 TOPIC的名称|强制|
|selector|如果同一个queue或者topic上有多个listener,将会根据消息的selector进行过滤|可选|
|persistent|表明JMS的传输模型是不是需要持久化。True或者false|可选。默认为true|
|acknowledge-mode|JMS会话的确认模型|AUTO_ACKNOWLEDGE,CLIENT_ACKNOWLEDGE,DUPS_OK_ACKNOWLEDGE之一|可选。默认AUTO_ACKNOWLEDGE|
|jms-security-principal|JMS目标的用户名。创建连接时使用。|可选|
|ms-security-credential|JMS目标的密码。创建连接时使用|可选
<jms-bus busid="quickstartGwChannel">

<jms-message-filter dest-type="QUEUE" dest-name="queue/quickstart_jms_secured_Request_gw"
jms-security-principal="esbuser"
jms-security-credential="esbpassword"
/>
</jms-bus>

分享到:
评论

相关推荐

    COBOL Programming Guide(Version 3 Release 2)

    《COBOL Programming Guide》是IBM出版的一本权威指南,主要针对z/OS和OS/390平台下的Enterprise COBOL Version 3 Release 2版本进行详细介绍。本书不仅适合初学者了解COBOL语言的基础知识,也适合有一定经验的...

    c-programming-for-scientists-and-engineers-manufacturing-engineering-series

    "C Programming for Scientists and Engineers" is a comprehensive guide tailored for students and professionals in the fields of engineering and science. It provides a solid foundation in C programming,...

    Matlab Tutorial - 53 - Defining Mathematical Functions.zip

    在Matlab中定义数学函数是进行数值计算和数据分析的基础。本教程主要涵盖了如何在Matlab环境中创建和使用自定义函数,以及如何优化这些函数以提高效率。以下是对这个主题的详细探讨: 首先,Matlab中的函数是通过...

    SCJP6 Sun Certificated Programmer for Java 6 Study Guide (Exam 310-065) 英文原版

    ### SCJP6 Sun Certified Programmer for Java 6 Study Guide (Exam 310-065) #### 1. Declarations and Access Control In the first chapter, the focus is on understanding declarations and access control ...

    Java - A Beginner’s Guide - Sixth Edition - Herbert Schildt

    ### Java - A Beginner’s Guide - Sixth Edition - Herbert Schildt #### Java Fundamentals Java is a high-level, object-oriented programming language that was designed to be portable, robust, and secure...

    Addison Wesley - A Practical Guide to Testing Object Oriented Software 2001.rar

    关于面A Practical Guide to Testing Object-Oriented Software focuses on the real-world issues that arise in planning and implementing effective testing for object-oriented and component-based software ...

    Maple 9 Advanced Programming Guide.pdf

    **描述**:“Maple 9 Advanced Programming Guide.pdf”——描述重复了标题,但可以理解为该描述强调了这是一本专门针对Maple 9软件高级编程技术的手册。 结合标题和描述,我们可以确定本书是一本专注于Maple 9软件...

    Android-Permission-Usage-Without-Defining:使用 Android 签名级别权​​限来使用未定义的权限

    Android-Permission-Usage-Without-Defining 使用未定义权限的 Android 签名级权限在这个项目中有两个应用程序。 第一个,名为“first”,使用权限读取联系人并创建后台服务以在被询问时提供联系人列表。 该服务受...

    Structured Spark Streaming-as-a-Service with Hopsworks

    ### Structured Spark Streaming as a Service with Hopsworks Structured Spark Streaming as a Service with Hopsworks is a powerful and flexible solution designed to simplify the process of building real...

    phase-3-ruby-oo-fundamentals-defining-object-orientation

    翻译:“这不是管道。” -, ,1927年 管道的图像仅是管道,而“管道”一词则是管道; 同样,名为pipe的代码对象不是管道,而只是表示管道的另一种形式。 作为人类,我们不断面临着我们必须理解的无数事实和印象。...

    ruby-oo-inheritance-defining-inheritance

    定义继承 目标 了解面向对象Ruby中的继承。 编写从另一个类继承的类。 简介:为什么继承? 在现实世界中,不同的实体(人,动物,汽车等)以各种方式关联在一起。 在单个实体或组中,存在分类系统。...

    coding-angular-routes-defining-params:编码定义路径参数的角度

    您还可以使用ng generate directive|pipe|service|class|guard|interface|enum|module 。 建造 运行ng build来构建项目。 构建工件将存储在dist/目录中。 使用--prod标志进行生产构建。 运行单元测试 运行ng test以...

    ITIL V3 - The Official Introduction to ITIL

    4.7 Service outsourcing – practical decision-making 33 4.8 Return on investment (ROI) 35 4.9 Financial Management 36 4.10 Increasing service potential 38 4.11 Organizational development 39 | iii ...

    ONVIF-PTZ-Service-Spec-v240.pdf

    ### ONVIF PTZ Service Specification V2.4 The **ONVIF PTZ Service Specification** (version 2.4), published in August 2013, is a comprehensive document that outlines the protocols and standards for ...

    CODE V手册目录中英文对照

    - **Defining Output Fiber Location 定义输出光纤位置**:这部分内容详细说明了如何在CODE V中精确设定输出光纤的位置,这对于光纤耦合系统的设计尤为关键。 - **Defining Tolerance Controls 定义公差控制**:此...

    Matlab面向对象编程

    #### 九、定义类操作 (Methods — Defining Class Operations) - **方法分类**:概述类方法的不同类型,包括静态方法、实例方法等。 - **构造函数**:详细讲解如何定义类的构造函数,初始化对象的属性。 - **析构...

    MCSD - Analysing Requirements and Defining Solutions Architecture.CHM

    Welcome to Analyzing Requirements and Defining Solution Architectures: MCSD Training Kit for Exam 70-100. By completing the chapters and associated case studies in this course, you will acquire the ...

Global site tag (gtag.js) - Google Analytics