=========================================
== Spring JPetStore 例子说明 ==
=========================================
作者 Juergen Hoeller
基于 Clinton Begin's JPetStore (http://www.ibatis.com).
1. 目的
展示了Spring的管理中间层,使用iBATISS数据库层作为数据访问策略,并结合Spring的事务管理和DAO抽象处理。可以使用本地JDBC或者JTA事务管理器,后者提供了支持两个数据库的能力。同原有的JPetStore使用同样的数据模型和演示数据。详细内容可以参考"WEB-INF/dataAccessContext-local.xml"和"WEB-INF/dataAccessContext-jta.xml"。
提供两种页面层方式实现了相同的用户交互界面,其一是基于Spring的网页MVC风格,另一个基于Sturts1.1的风格。后者更接近原有的JPetStore,但是重写了JSTL,使得JSP实现尽量具有可比性。详细内容可以参看"WEB-INF/web.xml","WEB-INF/petstore-servlet.xml",以及"WEB-INF/struts-config.xml"。
同原有JPetStore相比,本实现显著地提升了内部结构,减少了系统的耦合:利用Spring的应用程序上下文功能,现在可以提供集中的对象装配能力。最明显的变化为以前的PetStore逻辑(PetStoreLogic),现在被称为PetStore外观(PetStoreFacade)。它不在需要去关注配置、资源,或者事务的处理细节。
注意使用基于Spring方式实现的网页层,特意采用同Struts类似的方式,但并不同原有的错误信息方式一致。两种不同的网页层实现方式展示了它们的程序模型差异,同时也说明了不同的配置风格。
本版本的JPetStore同时也演示了使用Spring进行不同远程调用的功能:Hessian,Burlap,RMI,以及Web Services通过使用Apache Axis。它们都利用默认的web application提供out-of-the-box(注意RMI功能被注释,避免同EJB容器冲突)。在"client"目录包含了一个简单的命令行客户端,实现通过各种协议方式导出订单服务的功能。
2. 构建与部署
目录中包含了网页程序的源码。
为了实现部署,需要使用Apache Ant工具。
需要使用JDK1.3及以上版本,Ant1.5及以上版本。
在本目录中运行"build.bat",可以选用不同的目标(例如,"build.bat build",或者"build.bat warfile")。注意使用这种方式运行Ant,你需要一个XML解析器在你的类路径中(例如,在"%JAVA_HOME%/jre/lib/ext,JDK1.4及以上版本已经包含),也可以使用"warfile.bat"作为创建WAR文件的快捷方式。WAR文件将会被创建在"dist"目录中。
使用默认设置方式运行web程序,简单在"db/hsqldb"目录中启动HSQLDB实例即可。例如,可以使用"server.bat"。配置其他的数据库,你需要使用在"db"目录中相对应的模式和数据脚本。采用本地事务管理,JDBC配置存放在"WEB-INF/jdbc.properties",采用JTA方式,你需要在J2EE容器中配置相应的数据源(DataSources)。
注意"WEB-INF/dataAccessContext-*.xml"文件需要符合特定的数据库,例如MS-SQL或者Oracle,并使用相应的订单IDs生成策略。参看在上下文XML文件中注释的DAO定义配置。警告:在Spring1.0M4版本,仅HSQLDB被正确的测试通过。我们很高兴接收任何的其他数据库的反馈。
部署分布指导,采用JDK1.4.x和Tomcat4.x。
1、 如果没有设置JAVA_HOME,需要正确设置JAVA_HOME环境
2、 运行"ant warfile" 或者 "warfile.bat" 生成 WAR 文件
3、 复制生成的"dist/jpetstore.war"文件到Tomcat's "webapps"的目录
4、 启动HSQLDB,通过"db/hsqldb/server.bat" 或者"server.sh"
5、 启动Tomcat(默认端口为8080)
6、 在浏览器中打开"http://localhost:8080/jpetstore"
如果你需要测试远程访问服务:
1、 通过JPetStore的网页界面创建一个订单(第一个订单号为1000)
2、 修改文件"client/client.properties"中服务器配置的URL(如果不使用默认值)
3、 切换到"client"目录作为运行目录
4、 运行"client.bat 1000",获取并且显示编号1000的订单
5、 运行"client.bat 1000 10",每种协议方式调用获取订单十次
3. 元数据版本
参看"attributes" 和 "annotation"目录,演示了采用元数据方式声明事务的实现。本版本利用了Spring的简单元数据模型,类似与 DOT NET中的企业服务,但是扩展了声明方式(基于程序方式)实现事务处理功能。
在JPetStore的"attributes"目录,使用了Jakarta Commons Attributes,可以在JDK及1.3以上版本运行。在"annotation"目录,使用了JDK1.5及以上版本的注释功能(开始于Spring1.2版本)。
每一个目录都有自己的构建文件,调用属性编辑进程和构建WAR文件,使用自己的应用程序上下文XML文件,存在于它下面的"WEB-INF"子目录中。WAR文件将被创建在目录"dist"中。