1.
SCA的目标:
- 很好的集成现有的系统
- 服务组件与传输协议的绑定达到一定的松散耦合,服务组件可以自由的选择传输协议,从而达到服务组件的最大可重用性。
2. SCA的优势:
组件之间处于一种松散耦合的状态,不需要在自己的代码中加入对方组件的接口代码不需要指导对方的技术系统,在组件客户端的调用程序中不能有任何和具体技术相关的接口。
3. SCA服务组件的组成部分:
- 服务(Service):用来让其他组件调用。是一个接口,类似于Java的Interface
- 组件实现(Implementation):实现上面所创建的服务,类似于Java的接口的实现类
- 引用(Reference):一个组件可能需要调用其他组件,需要创建一个其他组件的引用。
- 属性(Properties):对组件实现的一种属性参数的注入
4. 服务组件的配置文件(通过SCDL 来定义)
例子:
<?xml version=”1.0” encoding=”UTF-8”?>
<!--MyValueComposite_1 example -- >
<composite name=”MyValueComposite”…>
…
<component name=”MyValueServiceComponet”>
<implementation.java class=”service.mycalue.MyValueServiceImpl”/>
<property name=”currency”>EURO</property>
<reference name=”customerService”/>
<reference name=”stockQuoteService”/>
</component>
…
</composite> |
5. SCA的组件类型(ComponentType):定义了Service,Reference,Property的类型,具体信息,不一定需要这些定义,一般可以从组件配置文件中获取这些信息
Java Implementation Example: componentType
<componentType
xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<service
name="AccountService">
<interface.java
interface="services.account.AccountService"/>
</service>
<reference
name="accountDataService">
<interface.java
interface="services.accountdata.AccountDataService"/>
</reference>
<reference
name="stockQuoteService">
<interface.java
interface="services.stockquote.StockQuoteService"/>
</reference>
<property
name="currency"
type="xsd:string"/>
</componentType>
|
6. SCA绑定(Binding):
Web Service绑定:
两种方式:
<binding.ws uri="http://www.sqs.com/StockQuoteService"/> |
<binding.ws wsdlElement="xs:anyURI"?
wsdli:wsdlLocation="list of xs:anyURI"?>
<wsa:EndpointReference>...</wsa:EndpointReference>*
</binding.ws> |
EJB Sessions Bean绑定:
- 支持无状态会话Bean和有状态会话Bean
- 支持EJB2.X和3.0
- 使用<binding.ejb …/>标签
<binding.ejb
uri="corbaname:rir:#ejb/JobBankServiceHome“
homeInterface="com.app.jobbank.JobBankServiceHome“
ejb-link-name="jobbankEJB.jar#JobBankComponent"/> |
JMS绑定:
- 基于JMS的API
- 允许基于每个操作的基础上设置JMS headers和用户属性
- 默认数据绑定和操作选择
- 用法为:<binding.jms…./>
<binding.jms>
<destination
name=”StockQuoteServiceQueue”/>
<connectionFactory
name=”StockQuoteServiceQCF”/>
<resourceAdapter
name=”com.example.JMSRA”/>
</binding.jms>
|
|