spring配置文件的更新
1. spring的配置文件可以大量配置<beans default-lazy-init="true">来加快单元测试的速度。
不过注意那些PostFactoryBean 如PropertyPlaceholderConfigurer是不能lazy-init的,否则一不小心吃个大闷亏,还有那些springmvc-servlet.xml 似乎也不能lazy init.
2. 使用PropertyOverrideConfigurer来特别配置单元测试时的JDBC URL
PropertyOverrideConfigurer的详细情况见参考手册的3.7.2.2
<bean id="testPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyOverrideConfigurer"> <property name="location" value="classpath:context/test/test.properties"/> <property name="ignoreInvalidKeys" value="true"/> </bean>
test.properties文件如下
dataSource.url=jdbc:hsqldb:res:default-db
如此配置之下,applicationContext中dataSource bean的url 就会被透明的修改成嵌入式数据的模式。
JDK5.0可变参数减少API数量
find(String hql); find(String hql,Object arg); find(String hql,Object[] arg);
可精简为一个
find(String hql,Object... args);
用户用如下四种方式调用该接口都是合法的
find(hql); find(hql,arg0); find(hql,arg0,arg1); find(hql,new Object[]{arg0,arg1});
唯一一个限制就是,可变参数必须在参数列表的最右。
DWR升级到2.0M3,原来的很多问题都解决了
比如tomcat启动时会有一段warning, 比如IE的bug,比如中文问题需要自己写convertUtil, 这些问题都不存在了。
但是,他的推技术仍然不够成熟,在IE中的表现未如人意。
XFire升级到1.2RC并演示了密码认证的handler
XFire1.2RC比较吸引人的特性有GZip压缩。
david.turing演示的加入验证的流程
1.在webservice-server.xml 中,使用bookService的inHanders属性加入验证用户名密码的Hanlder。
<bean id="bookWebService" parent="baseWebService"> <property name="serviceBean" ref="bookManager"/> <property name="serviceClass" value="org.springside.bookstore.plugins.xfire.service.BookService"/> <property name="inHandlers" ref="authenticationHandler"/> </bean>
2.实现服务端验证用户名密码的authentcationHandler, 见/springside-bookstore/src/.../plugins/xfire/auth目录。
3.在客户端加入负责输入用户名和密码的ClientAuthHandler,见/springside-bookstore/src/.../plugins/xfire/service/client.groovy
return new XFireProxyFactory().create(new ObjectServiceFactory().create(BookService.class),serviceUrl)
修改为
Service serviceModel = new ObjectServiceFactory().create(BookService.class); BookService bookService = (BookService) new XFireProxyFactory().create(serviceModel,serviceUrl); Client client = ((XFireProxy) Proxy.getInvocationHandler(bookService)).getClient(); client.addOutHandler(new ClientAuthHandler()); return bookService;
4.实现负责将用户名和密码加入请求的clientAuthHandler.java。
5.在测试用例中加入用户名和密码,见/springside-bookstore/test/unit/.../plugins/xfire/xxx.FindBookByName.xml,header部分增加了
<env:Header> <AuthenticationToken xmlns="http://service.xfire.plugins.bookstore.springside.org"> <Username>admin</Username> <Password>admin</Password> </AuthenticationToken> </env:Header>
Spring2.0RC2对动态语言集成的升级
新增了一个<lang>的schema, webservice-client.xml 已改为
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:lang="http://www.springframework.org/schema/lang" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd"> <!--Groovy版本的Web Service Client--> <lang:groovy id="BookServiceClient" refresh-check-delay="60000" script-source="classpath:org/springside/bookstore/plugins/xfire/service/BookServiceClient.groovy"> <lang:property name="serviceUrl" value="http://localhost:8080/springside/service/BookService"/> </lang:groovy> </beans>
第一个属性 refresh-check-delay,每隔一段时间扫描一次脚本的变化,reload it。
第二个属性script-source 指向scriptsouce, <lang:property>演绎了Spring最喜爱的IOC,将serviceUr变量注入。
Compass 1.0 发布
Compass 1.0 发布,完整的release notes 见此
下载见此:
http://www.opensymphony.com/compass/download.action
SS已升级compass1.0 及lucene 2.0的jar, compass1.0的sample中已有hightlighted text的例子,ss将跟进修改。
另外,虽然主要是用annotation表达pojo ->lucene mapping,但有空的话也会demo spring 2.0 风格的xml定义文件。
selenium 集成测试放出
在/springside-bookstore/test/functional 里面
另外/springside-core/src/..../test 里面有个小基类。
运行的脚本是/bin/build.bat 然后选functional-test,
可能要大家在/build.properties里面设一下tomcat的路径。另外需要大家装firefox1.5.
同样的,暂时没有文档,大家自己看http://www.openqa.org/selenium/
jbpm 3.1+springmodules-jpbm3.1 的demo放出
一个最简单的,仅仅在下订单后发送JMS消息的工作流,主要demo jbpm workflow 整合的方式
所有源文件及配置文件在/springside-bookstore/src/org/.../plugins/jbpm 内
/springside-bookstore/resources/default-db.script里也加了一堆jbpm相关的表,并初始化了两个jbpm user
在orderManager的placeOrder()函数处对工作流进行了调用。
ActiveMQ(JMS)放出非JVM嵌入式的版本
以前的JVM嵌入式版本只是个玩具演示,dfdfswsw实现了独立运行,可用数据库进行持久化的版本。
另外加入了lingo的演示。
在/springside-bookstore/activemq/ 下是activemq的配置文件及独立运行环境。
/springside-bookstore/src/org../plugins/jms 下除了原来的OrderPlaceMDP外多了很多文件,不过作什么的还没看懂。
最后,乐极生悲,因为不是嵌入式了,需要手工启动/springside-bookstore/activemq/activemq.bat
如果是在单元测试中,还要在启动activemq.bat之前 还要先跑/springside-bookstore/db/server.bat
BIRT2.1的部署与瘦身
2.1. 拷贝文件1
将/plugins, /configuration两个目录复制到webapp 根目录, 将lib复制到webapp/WEB-INF/lib
2.2. 瘦身
Birt实在太过庞大,如果将以上三个目录全拷的话几十M.因此,可以参考SS里对/lib/birt 和 webapp/plugins目录反复试验后的精简。
另外,/lib和/plugins有好多jar是重复的,只要在编译时把jar 从一个目录copy过去就行。又要注意两个目录里相同的jar的命名并不相同,而/plugins里面的文件名很严格,可参考build.xml里的这段复制命令
<copy file="lib/birt/com.ibm.icu-3.4.4.1.jar" tofile="${web.dir}/plugins/com.ibm.icu_3.4.4.1.jar"/>
<copy file="lib/birt/js-2.1.jar" tofile="${web.dir}/plugins/org.mozilla.rhino/lib/js.jar"/>
<copy file="lib/birt/chartengineapi-2.1.jar" tofile="${web.dir}/plugins/org.eclipse.birt.chart.engine_2.1.0.N20060628-1351.jar"/>
<copy todir="${web.dir}/plugins">
<fileset dir="lib/birt">
<include name="org.eclipse.emf.*"/>
</fileset>
</copy>
jbpm预览版与Birt2.1暴肥版
nicholas 加入了jbpm3.1 和 springmodules-jbmp3.1的模块,已完成配置文件的整合,接下来就开始编写实际代码。
Birt升级到2.1 ,不过在新的webapp/plugins目录需要的eclipse 基础jar太多了,整整20M阿,虽然尽量的删减和重用/lib 中的jar,弄了一个晚上,springside的基本发行包还是暴增了6M,从10M扩到15.5M了。
M3改动列表预览版
死了死了,太久没有写开发纪要,现在临发布了才来数碗数碟,会不会数漏?
1. 超级快速体验的springside.bat 一站式安装运行,新手门槛降为0cm。
最新的springside连tomcat5.5都带了,大家只需装个JDK5,设一下JAVA_HOME,双击springside.bat 等一阵就会看到一个SpringSide书店示例的IE窗口呈现在面前。
2. 目录结构大翻滚,大变装,终于斯文大方得体。
对springside-base, springside-bookstore的划分,bookstore目录的多模块开发模式,plugin目录的整理,素来因为整合项目太多而乱糟糟一团麻绳的目录结构终于获得少量同志对其作出"清晰"的评语。
3. 单元测试与集成测试,提高用家信心。
springside-base作为可重用的API,没有足够的单元测是没办法让人放心使用到自己项目中的,所以这个版本开始模仿Spring的测试方法,陆续为springside-base中的API补上测试用例。最高目标是,no test case, no sourcecode commit。
另外,基于Selenium的集成测试在这个版本里也已经加入,第一步做了前台图书搜索的测试。陆续将覆盖到所有页面流程,保证经常发神经重构也不影响SS的可运行性。
另外,daoTest 改成了HSQLDB in Process的运行模式,无须再手工开停hsqldb,Controller Test的配置文件经过调整,也避免了以前因为bookstore-serverlet 在WEB-INF中不在class path中,用IDE无法方便运行的问题。
4. JDK1.4版的war。
retrotranslator 1.0.7版终于完全可用了,大家build的时候选war14即会在release目录生成jdk1.4版的war, 已在JDK1.4+Tomcat 5.0上运行成功。
5. Compass的完全演示
加入图书分类搜索的限定,对之前的not best的Compass应用作了修正,目前除了等Compass 0.92的新highlight方案外,整个演示已经比较满意。
6.Acegi 使用的增强
更换了验证码的图片引擎;对资源分模块管理;加入页面中的对象授权的taglib;一些bug fix
7. 分页的增强
提供了前台的分页taglib, HSQL和Critera的分页实现类参考Robbin的代码增加了通过count方式获得total count的方式。
8.开始加入DOJO
DOJO的人气太旺盛了,另外一个是Sun的JMaki,两者结合起来,html 多了一堆富客户端的widgets。
9.其他更新
在war时将jsp移动到/web-inf/pages;
hbm2ddl 的task;
用freemarker template 生成html格式的邮件
10.Library 升级
Spring 2.0 RC2
Birt 2.1