浅析Spring、EJB与SCA架构

Spring是J2EE标准中的一个重要架构,它能有效的组织J2ee各应用层的对象。
在SSH中,Struts主要负责前面客户端提交表单的处理,Spring负责对主要业务的控制管理,Hibernate在最后边,负责数据的持久化,即描述的是POJO与数据库表的关系,尊从ORM模型。
依赖注入和控制反转是同一个概念,在传统程序实际中,调用者想要调用另一个对象需要自己创建被调用者的实例,在Spring中,创建被调用者的工作由Spring容器完成。当调用者需要的时候注入给调用者。
   依赖注入有两种:设值注入和构造注入。
   设值注入通过setter方法传入被调用者的实例,这种方式在Spring和SCA的配置文件中被大量使用。
  在实现类中有如下的定义:
public class chinese implements Person{

  private knife knife;
  public chinese(){}
  //设置注入所需的setter方法
  public void setknife()
{
   this.knife=knife;
}
//实现Person接口中的useknife()方法
public void useknife(){

System.out.println(knife.chop());
}
}
//Spring配置文件定义beans部分的主要内容
<beans>
<bean class=com.zy.chinese//实现类所在的路径,即在哪个包下面 id=chinese>
<property name="knife">
<REF local=""stoneknife"/">//stoneknife是knife接口的一个具体实现类
</bean>
<bean class=com.zy.stoneknife id=stoneknife/>
<beans>

//对比SCA架构配置组建的配置文件.composite
<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
    xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
    xmlns:c="http://wsTuscany"
    targetNamespace="http://wsTuscany"
    name="wsTuscany">
<component name="ClientImpl"> 
<implementation.java class="com.zy.wsTuscanyClient.Client"/> 
</component> 
<reference name="hello" promote="ClientImpl/hello" target="wsTuscanyHello"> 
<interface.java interface="com.zy.services.HelloInterface" /> 
<binding.ws url="http://localhost:8080/axis2/services/HelloZY"  wsdlElement="http://services.zy.com/#wsdl.port(HelloInterface/HelloInterfacePort)"/>      
</reference>
</composite>
SCA架构中管理的对象是组件,组件可以是本地的一个POJO普通实现类,也可以是外部的ws,本地的组件可以包装成ws供外部调用。
可以看到.composite文件中是由一个个的<compoment>对组成的,spring.xml配置文件中的标签是<bean>,配置文件中的配置规则实际是一样的,她们都是管理框架,只是配置对象的粒度不同。

普通的java bean相当于微软COM模型中的本地进程内的com组件,它是不能被跨进程访问的。EJB相当于DCOM,即分布式 组件。它是基于java的远程防范调用(RMI)技术的,所以EJB可以被远程访问(跨进程,跨计算机)。EJB是一组基于分布式事务处理的企 业级应用组件,但EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。
   容器是一种能够为某种运行对象提供运行环境支持的地方(其实也就是服务器的概念),web 容器或者叫web服务器主要是为jsp或servlet提供运行环境支持的,现在符合j2ee标准的EJB被部署在WebSpere、WebLogic这样的容器中。客户访问EJB通常不直接访问而是通过它的代理,即EJB容器去访问。这也符合SCA组件架构模式。基于组件模式的架构都需要一个容器来管理各个组件,在SCA型中这个容器对象就是SCA Domain域。

Spring是j2ee规范中最轻量级的容器其次是EJB容器再次是SCA域




  

你可能感兴趣的:(spring)