解析compass官方sample
来源:互联网 发布:程序员 书 编辑:程序博客网 时间:2024/06/05 15:02
http://exc听说compass很好很强大,对技术的支持广泛,尽管hibernate search和hibernate配合可谓珠联璧合,使用方便,但还是要感受感受compass的好。
首先当然从compass的官方sample开始,版本:compass-2.1 compass的samle下有两个demo,一个是基于客户端的library,一个是基于web+database的petclinic.作为官方的demo,竟然漏洞频频,简直太不严肃。
先说library,在LibraryTests.java的第77行,竟然出现一句命名奇妙的
SimpleDateFormat sdf = new SimpleDateFormat(Library.MetaData.Birthdate.Format);
结果是找不到类,不管她,反正是个日期格式化问题,改成官方的写法:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD");
还好,只有一个问题,可以测试了。
再说petclinic,要让它成功部署可要费点心思了。官方的samples/petclinic/下有个war,照理我们可以直接稍微配置个数据库连接即可run起来。但是很sorry,不可以这样。不然你可以试试,只要你由耐心。所以,最好还是利用源程序重新编译发布。先介绍下我的部署环境,spring2.5+hibernate3.2+mysql5.1+tomcat6.0+compass2.1,不同环境可能有所不同。先按如下步骤来。
1.新建个web项目,比如我的叫mystu,然后将samples/petclinic/src/java下所有东西copy到mystu的src下。将samples/petclinic/src/test下所有copy到src下。将samples/petclinic/war下所有东西copy到mystu的WebRoot下。将samples/petclinic/war/WEB-INF/classes下的四个资源文件copy到src下。
2.修改一个微小的bug: org.compass.sample.petclinic下的AbstractClientTests.java有方法未定义。将所有的hits.resource(0).get(Petclinic.MetaData.LastName.Name)改成hits.resource(0).getValue(Petclinic.MetaData.LastName.Name)
3.自己加类库。compass最让我诟病的应该是没有给出引用的library了。并且也没有任何readme或者document之类的说明。我通过不断运行,出现excepion,然后将缺少的类手动一个个加进去,费劲了九牛二虎之力。才最终完善了需要的类库。下面列出需要使用的lib:
- spring-2.5.5.jar
- spring-webmvc.jar
- hibernate3.jar
- antlr-2.7.6.jar
- dom4j.jar
- commons-logging.jar
- log4j.jar
- lucene-core-2.4.0.jar
- compass-2.1.1.jar
- jstl.jar
- standard.jar
- commons-collections-3.2.1.jar
- db-ojb-1.0.4.jar
- mysql-connector-java-5.0.3-bin
- jta.jar
这些library是必须的,否则运行分别会出现问题。最后,因为org.compass.sample.petclinic.ojb中的PersistenceBrokerClinic引用了org.springframework.orm.ojb.support.PersistenceBrokerDaoSupport包spring2.5 的orm中已经不提供支持,详细见:http://forum.springframework.org/archive/index.php/t-30463.html (注:这里说到在model中由相关的包,但没有找到)所以,我直接将sample的ojb部门delete掉了。所以,此时db-ojb-2.0.4.jar可有可无。
4.导入数据库:samples/petclinic/db/mysql有个initDB.txt,登陆mysql后,source initDB.txt创建数据库即可。并且,可以利用samples/petclinic/db下的populateDB.txt到入原始数据。
5.然后,修改数据库连接了。WEB-INF/jdbc.properties.我使用的是mysql,故采用了mysql的连接配置。下面是去掉comments后的完整配置。
- jdbc.driverClassName=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://localhost:3306/petclinic
- jdbc.username=name
- jdbc.password=pass
- hibernate.dialect=org.hibernate.dialect.MySQLDialect
- petclinic.jdbcImplBeanName=mysqlClinic
6.好了,到了这里,可以启动tomcat发布了。可以成功运行起来了。运行起来后,我还碰到了java.lang.NumberFormatException。或许我不能否认compass是一个好的开源产品,但至少,它的sample不是一个好的sample。
- 附:下面是我碰到的exception,下面列出的仅仅只是我想写这边blog然后保留下来的,其实刚开始还有,恕我不想还原现场了:
- java.lang.ClassNotFoundException: javax.transaction.TransactionManager (缺少jta包)
- java.io.FileNotFoundException: class path resource [petclinic.hbm.xml] cannot be opened because it does not exist (没有将petclinic.hbm.xml放入src下)
- java.lang.ClassNotFoundException: org.apache.commons.collections.SequencedHashMap(缺少commons-collections包)
- org.compass.core.config.ConfigurationException: DTD system id [http://www.compass-project.org/dtd/compass-core-mapping-2.2.dtd] not found at [/org/compass/core/compass-core-mapping-2.2.dtd]
- (这个算是我的错误,将新发布的compass2.2中的compass配置文件放入了src下,我以为或许2.2中会改正这些问题呢,不过很遗憾,没有)
- java.util.MissingResourceException: Can't find bundle for base name views, locale zh_CN
- (没有将资源文件放入src下。)
- java.lang.ClassNotFoundException: antlr.ANTLRException
- (缺少antlr.jar包)
- java.lang.NumberFormatException: null(程序没有进行表单验证,太不敬业了)。
附件是可更改后的可运行版本,因为javaeye上传文件10m限制的原因,去掉了jar中的compass.jar. 如需运行,db下由数据库文件,建好数据库,再配置好jdbc连接即可。
javaeye的chanson的博文http://chanson.javaeye.com/blog/204180给了我很大的参考,在此表示感谢。
eljava.iteye.com/blog/324846
- 解析compass官方sample
- Using orientation sensors: Simple Compass sample
- iOS官方Sample大全
- iOS官方Sample大全
- iOS官方Sample大全
- iOS官方Sample大全
- iOS官方Sample大全
- iOS官方Sample大全
- iOS官方Sample大全
- iOS官方Sample大全
- iOS官方Sample大全
- iOS官方Sample大全
- iOS官方Sample大全
- iOS官方Sample大全
- iOS官方Sample大全
- IOS 官方Sample大全
- ios 官方sample
- Android 官方Sample
- ExtJS GridPanel动态列
- 完整的位图文件解析
- 通过http请求访问webservice
- 知道
- Linux源代码目录树结构
- 解析compass官方sample
- 为什么我的电脑无权访问工作组计算机
- 应用四边形不等式优化的题
- TFS配置与安装
- aaaaaaaaaaaaaaa
- PHP 与SQL语句的转换
- 窗口的子类化与超类化
- Prn.txt Con.txt(文件命名的问题)
- 按回车键自动跳到下一个控件