7.9.3 配置SU、SA、jbi.xml、servicemix.xml、xbean.xml
本小节的实例因为要运行BPEL,所以配置更为复杂,包括配置3个SU单元,一个SA。其中3个SU单元分别如下。
su (jms):通过xbean.xml创建JMS监听端口,接收外部服务请求消息;
su (bpel):创建房屋贷款BPEL流程管理服务,含有houseloanbroker.bpel文件,其中包括Houseloanbroker.wsdl(为BPEL的接口文件),Houseloanagency.wsdl(房屋贷款中介的WSDL),Bank.wsdl(银行业务的WSDL);
su (lwcontainer):创建基本服务Houseloanagency和Bank。
图7-12显示了ServiceMix的房屋贷款BPEL运行模块的配置。
|
| 图7-12 ServiceMix的房屋贷款BPEL运行模块 |
开发的结构如下。
Hosue-loan-bpel |――build.xml, servicemix.xml |—-build (包括编译之后的Classes文件) |――data (运行ServiceMix后所产生的一些运行文件,运行之前可以清理掉) |――deploy (运行ServiceMix所需要的zip包,发布文件夹) |――loan-broker-sa-3.1-incubating |――install |――servicemix-bpe-3.1-incubating-installer.zip 运行BPEL的库 |――servicemix-jms-3.1-incubating-installer.zip 运行JMS的库 |――servicemix-lwcontainer-3.1-incubating-installer (运行lwcontainer所需要的) |――servicemix-shared-3.1-incubating-installer (运行ServiceMix的共享库) |――src (Java源程序和配置文件) |――client (客户端Java源程序) |―― components 服务器端源程序,将会被发布到服务总线 |―― bpe-su |――bank.wsdl、creditagency、loanbroker、loanbroker.bpel |――META-INF |――jbi.xml |―― jms-su |――xbean.xml |――META-INF |――jbi.xml (JBI配置文件) |―― lw-su |――servicemix.xm |――lib |――servicemix-components-3.1-incubating.zip |――META-INF |――jbi.xml |――sa |――META-INF |――jbi.xml |
本例将会创建下面的配置文件。
SA目录下面的jbi.xml,配置整个服务的SA服务集成模块;
lw-su目录配置下的servimix.xml、jbi.xml,主要用来运行Java服务;
jms-su目录下面的xbean.xml、jbi.xml,主要用来配置JMS的监听端口;
bpe-su目录下面的jbi.xml,主要用来运行BPEL服务;
根目录下面的servicemix.xml。
1.SA目录下面的jbi.xml
SA目录下面的配置文件jbi.xml负责配置运行在ServiceMix运行环境中的SA(Service Assembly)“服务集成模块”。
整个运行模块只能有一个SA,可以有多个SU。每个SU将会打包成一个单独的SU包,然后将多个SU的zip包打成一个SA包来运行,本SA将运行3个SU的运行单元,所创建的jbi.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <jbi xmlns="http://java.sun.com/xml/ns/jbi" version="1.0"> <service-assembly> <identification> <name>loan-broker-sa</name> <description>ServiceMix :: Samples :: Loan Broker :: SA</description> </identification> <service-unit> <identification> <name>loan-broker-bpe-su</name> <description>ServiceMix is an open source ESB based on the Java Business Integration framework - JSR-208</description> </identification> <target> <artifacts-zip>loan-broker-bpe-su-3.1-incubating.zip</artifacts-zip> <component-name>servicemix-bpe</component-name> </target> </service-unit> <service-unit> <identification> <name>loan-broker-lw-su</name> <description>ServiceMix is an open source ESB based on the Java Business Integration framework - JSR-208</description> </identification> <target> <artifacts-zip>loan-broker-lw-su-3.1-incubating.zip</artifacts-zip> <component-name>servicemix-lwcontainer</component-name> </target> </service-unit> <service-unit> <identification> <name>loan-broker-jms-su</name> <description>ServiceMix is an open source ESB based on the Java Business Integration framework - JSR-208</description> </identification> <target> <artifacts-zip>loan-broker-jms-su-3.1-incubating.zip</artifacts-zip> <component-name>servicemix-jms</component-name> </target> </service-unit> </service-assembly> </jbi> |
2.lw-su目录下的servimix.xml、jbi.xml
lw-su目录下面的servimix.xml负责配置服务单元。jbi.xml负责配置JBI运行环境。
lw是light weight的缩写,表示服务将会运行在Service开发的轻量级运行环境lwcontainer中。
3.lw-su目录下面的servimix.xml
w-su目录下面的配置servimix.xml负责创建基本服务HouseLoanAgency和4个Bank服务。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:sm="http://servicemix.apache.org/config/1.0" xmlns:lb="urn:logicblaze:soa:loanbroker" xmlns:ca="urn:logicblaze:soa:houseloanagency">
<!-- 创建房屋贷款服务 --> <sm:serviceunit id="jbi"> <sm:activationSpecs>
<sm:activationSpec id="houseLoanAgency" interfaceName="ca:HouseLoanAgency"> <sm:component> <bean class="loanbroker.HouseLoanAgency" /> </sm:component> </sm:activationSpec>
<!-- 创建Bank服务,配置银行贷款利率和贷款首付 --> <sm:activationSpec id="bank0"> <sm:component> <bean class="loanbroker.Bank"> <constructor-arg value="0" /> <property name="rate" value="6.0"/> <property name="firstPaidRatio" value="20.0"/> </bean> </sm:component> </sm:activationSpec>
<sm:activationSpec id="bank1"> <sm:component> <bean class="loanbroker.Bank"> <constructor-arg value="1" /> <property name="rate" value="6.5"/> <property name="firstPaidRatio" value="30.0"/> </bean> </sm:component> </sm:activationSpec>
<sm:activationSpec id="bank2"> <sm:component> <bean class="loanbroker.Bank"> <constructor-arg value="2" /> <property name="rate" value="7.0"/> <property name="firstPaidRatio" value="40.0"/> </bean> </sm:component> </sm:activationSpec>
<sm:activationSpec id="bank3"> <sm:component> <bean class="loanbroker.Bank"> <constructor-arg value="3" /> <property name="rate" value="7.5"/> <property name="firstPaidRatio" value="50.0"/> </bean> </sm:component> </sm:activationSpec>
</sm:activationSpecs> </sm:serviceunit> </beans>
|
4.lw-su目录下面的配置jbi.xml
jbi.xml服务配置基本服务的JBI运行环境。
5.jms-su目录下面的xbean.xml、jbi.xml
jms-su目录下面的xbean.xml配置JMS的运行环境,jbi.xml负责配置JBI运行环境。
(1)jms-su目录下面的xbean.xml
jms-su目录下面的xbean.xml主要用来配置JMS的端口来监听各种服务请求。定义服务器端口“endpoint”、服务名称“lb:LoanBrokerService”等。定义defaultMep默认的消息模式,这里采用的是in-out模式。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:jms="http://servicemix.apache.org/jms/1.0" xmlns:lb="urn:logicblaze:soa:loanbroker"> <jms:endpoint service="lb:LoanBrokerService" endpoint="endpoint" targetService="lb:LoanBrokerService" defaultOperation="lb:getLoanQuote" role="consumer" connectionFactory="#jmsFactory" destinationStyle="queue" jmsProviderDestinationName="demo.org.servicemix.source" defaultMep="http://www.w3.org/2004/08/wsdl/in-out" /> <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory"> <property name="connectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616" /> </bean> </property> </bean> </beans> |
2)jms-su目录下面的jbi.xml
jbi.xml配置JMS的JBI运行环境。
<?xml version="1.0" encoding="UTF-8"?> <jbi xmlns="http://java.sun.com/xml/ns/jbi" version="1.0"> <services binding-component="false" xmlns:lb="urn:logicblaze:soa:loanbroker"> <consumes service-name="lb:LoanBrokerService"/> </services> </jbi> |
6.bpe-su目录下面的jbi.xml
bpe-su目录下面的jbi.xml负责配置BPEL的运行环境。BPEL的houseloanbroker.bpel、Houseloanbroker.wsdl、Houseloanagency.wsdl、Bank.wsdl已经在第6章做了详细的介绍。下面的jbi.xml配置JBI的运行环境。
7.根目录下面的servicemix.xml
根目录下面的servicemix.xml用来运行整个房屋贷款服务SA,事实上是一个通用的servicemix.xml。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:sm="http://servicemix.apache.org/config/1.0">
<bean id="jndi" class="org.apache.xbean.spring.jndi.SpringInitialContextFactory" factory-method="makeInitialContext" singleton="true" />
<!-- JMX 服务器--> <sm:jmxServer id="jmxServer" locateExistingServerIfPossible="true" />
<import resource="classpath:activemq.xml" />
<!-- JBI 容器 --> <sm:container id="jbi" rootDir="./data/smx" installationDirPath="./install" deploymentDirPath="./deploy" flowName="seda"> <sm:activationSpecs> </sm:activationSpecs> </sm:container> </beans>
|
【责任编辑:
夏书 TEL:(010)68476606】