您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > SOA从应用开始暨SOA新平台发布.
陈光耀2010-11EOS6.3新特性培训EOS6.3的新特性•EOS6.3的新特性–融合开源Spring框架•开发期支持•功能向导自动生成实现代码•纯Java的业务构件开发方式•与EOS的事务无缝集成•提供更强的装配功能,将Spring构件发布为服务,引用其他服务–轻量化的标准EAR部署方式支持•应用部署模式轻量化、标准化•管理模式轻量化•安装包提供了最佳实践•对应用服务器的侵入性降低•产品定位–开发工具技术平台–封闭性开放性新特性一:Spring支持目录•新特性一:Spring支持–概述–SpringBean开发–SpringBean调用–SpringBean的装配Spring支持–概述•基本功能–SpringBean开发•新建Bean向导、资源树显示、功能向导–SpringBean调用•Spring图元、API调用•统计监控、日志–SpringBean的装配(服务发布、引用)•SpringBean和逻辑构件关系–可完全替代逻辑构件,开发业务逻辑•SpringBean逻辑构件•SpringBean的方法逻辑流–逻辑流可以作为编排工具,将小粒度构件组装成大粒度构件Spring支持•SpringBean开发–新建SpringBean向导、功能向导–SpringBean配置(应用级和构件包级)–使用DAOTemplate开发基于数据库程序–使用事务–配置多数据源Spring支持–SpringBean开发•SpringBean开发–创建SpringBean向导•自动创建SpringBean的Java文件•自动生成SpringBean的配置文件注册项SpringBean开发•SpringBean开发–资源视图、构件库视图显示Spring配置文件和Bean、方法–应用级、构件包级两级配置文件•应用级:exf/config/spring.xml•构件包级:META-INF/spring/beans.xml–支持手工编辑Spring配置文件–配置文件支持编译检查SpringBean开发•Spring功能向导–增删改查向导(DAO向导)•纯Java方式,不含页面流–单表维护向导–主从表维护向导SpringBean配置•应用级、构件包级两级配置•应用级配置(exf/config/spring.xml)–公共Bean•数据源(DefaultDataSource)•事务管理器(DefaultTransactionManager)•事务传播属性(DefaultNamingTransactionAttribute)•事务代理(DefaultBaseTransactionProxy)–扩展事务代理的Bean,可以使用数据库事务•默认Bean拦截器(BeanInterceptor)–Bean调用系统日志、引擎日志–Bean调用的统计监控•Bean名称的自动代理(BeanNameAutoProxy)–自动匹配所有的Bean,对所有的Bean调用使用拦截器(如BeanInterceptor)–可以缩小匹配范围,改beanName属性值:*Abc*Spring事务•采用AOP事务代理–声明父类为DefaultBaseTransactionProxy的Bean–通过方法名称匹配事务(如insert*,update*)–是否需要事务有事务传播属性Bean配置确定•采用逻辑流的事务(必须使用逻辑流)Spring事务—事务传播属性beanid=DefaultNamingTransactionAttributeclass=org.springframework.transaction.interceptor.NameMatchTransactionAttributeSourcepropertyname=propertiespropspropkey=insert*PROPAGATION_REQUIRED/proppropkey=create*PROPAGATION_REQUIRED/proppropkey=update*PROPAGATION_REQUIRED/proppropkey=delete*PROPAGATION_REQUIRED/proppropkey=save*PROPAGATION_REQUIRED/proppropkey=remove*PROPAGATION_REQUIRED/proppropkey=query*PROPAGATION_REQUIRED,readOnly/proppropkey=*PROPAGATION_REQUIRED,readOnly/prop/props/property/bean说明:insert*:匹配insertEntity、insertData等方法create*:匹配createEntity、createData等方法update*:匹配updateEntity等方法*:匹配所有方法注意:功能向导生成的方法是addXXX(),与模板的不一致(bug),请修改配置文件,增加add*匹配项。SpringBean事务—事务传播属性•事务传播属性(TransactionDefinition接口中定义)属性值属性含义PROPAGATION_REQUIRED需要事务,外部不存在事务则创建新事务,否则加入外部事务。(最常用)PROPAGATION_SUPPORTS支持事务,外部有事务则加入事务;无外部事务也不创建新事务,以非事务方式运行。PROPAGATION_MANDATORY强制使用事务,外部无事务则抛异常。PROPAGATION_REQUIRES_NEW需要新事务;外部无事务就创建新事务,外部有事务则被挂起,并创建新事务。PROPAGATION_NOT_SUPPORTED不支持当前事务,外部有事务则挂起外部事务,以非事务方式运行PROPAGATION_NEVER不支持当前事务,外部有事务则抛异常PROPAGATION_NESTED(Spring特有)事务嵌套,外部有事务时,运行在嵌套事务中。外部无事务,则新建事务(类似REQUIRED)Spring开发示例•示例1.利用EOS提供的DASTemplate开发Bean–创建数据实体:Oorg–生成静态SDO:OOrg.java/OOrgImpl.java–创建Bean,OrgService,扩展DASDaoSupport类publicclassOrgServiceextendsDASDaoSupport{publicvoidinsertOrg(OOrgorg){getDASTemplate().getPrimaryKey(org);getDASTemplate().insertEntity(org);}publicvoidupdateOrg(OOrgorg){getDASTemplate().updateEntity(org);}}Spring开发示例•示例1.利用EOS提供的DASTemplate开发Bean–1)使用逻辑流的事务–insert.bizSpring开发示例•示例2.利用EOS提供的DASTemplate开发Bean–2)使用事务代理insert2.bizSpring开发示例•示例3.使用多数据源进行开发–通过governor配置多数据源,default,ds2–更改应用级配置:系统配置/config/spring.xmlbeanid=DataSource2class=com.eos.spring.DASDataSourcepropertyname=dataSourceNamevalueds2/value/property/bean–增加新数据源表的数据实体(Log)–将Log转为静态SDO对象–增加数据库记录日志的Bean(LogServiceBean)Spring开发示例•示例3.使用多数据源进行开发–增加数据库记录日志的Bean(LogServiceBean)–增加新的Bean•OrgServiceWithLogBean•保存业务数据+记录DB日志publicclassLogServiceextendsDASDaoSupport{publicvoidlog(Stringmessage){Loglog=newLogImpl();log.setLog(message);getDASTemplate().getPrimaryKey(log);getDASTemplate().insertEntity(log);}}Spring开发示例•2.使用多数据源进行开发–使用一个事务拦代理,创建一个facidebean–使用逻辑流(insertWithLog)调用新的OrgServiceWithLogFacideBeanbeanid=OrgServiceWithLogBeanclass=com.primeton.sample.dao.OrgServiceWithLogconstructor-argindex=0refbean=OrgServiceBean//constructor-argconstructor-argindex=1refbean=LogServiceBean//constructor-arg/beanbeanid=OrgServiceWithLogFacideBeanparent=DefaultBaseTransactionProxypropertyname=proxyInterfaceslistvaluecom.primeton.sample.dao.IOrgService/value/list/propertypropertyname=targetrefbean=OrgServiceWithLogBean//property/beanSpring开发示例•示例4.开发一个Bean拦截器–开发一个MyInterceptorBean,实现org.aopalliance.intercept.MethodInterceptor接口–修改spring.xml–右键部署–调试运行importorg.aopalliance.intercept.MethodInterceptor;importorg.aopalliance.intercept.MethodInvocation;publicclassMyInterceptorimplementsMethodInterceptor{publicObjectinvoke(MethodInvocationinvocation)throwsThrowable{System.out.println(Beforeinvoke+invocation.getMethod());Objectret=invocation.proceed();System.out.println(Afterinvoke+invocation.getMethod());returnret;}}Spring支持•Spring调用–页面流、逻辑流调用Spring图元–API方式调用:BeanFactory.getBean(StringbeanID)–Spring调用的系统日志、引擎日志–Spring调用的统计监控Spring调用—示例(API调用)•示例5:API方式调用Bean–创建调用Client程序(为方便,使用运算逻辑)•BeanCallerDemo.java–逻辑流(apiDemo)调用运算逻辑–逻辑流调试运行@Bizlet()publicclassBeanCallerDemo{@Bizlet()publicvoiddemo(){IOrgServiceorgService=(IOrgService)BeanFactory.newInstance().getBean(OrgServiceBean);OOrgorg=newOOrgImpl();or
本文标题:SOA从应用开始暨SOA新平台发布.
链接地址:https://www.777doc.com/doc-12451 .html