2.1、Compass附带例子的部署
部署环境:
1、IDE:MyEclipse5.0
2、数据库:MySQL5.0
3、JDK:jdk1.5.0_02
4、应用服务器:apache-tomcat-5.5.12
2.1.1、Library的部署
1、新建Java项目Library。
1)、把compass-2.0.0\samples\library\src\java下面的内容copy到src下
2)、把compass-2.0.0\samples\library\src\test下面的内容copy到src下
2、导入以下jar包。
1)、commons-logging.jar
2)、compass-2.0.0.jar
3)、lucene-analyzers.jar
4)、lucene-core.jar
注:有些IDE环境需要手工导入Junit库。
3、修改org.compass.sample.library. LibraryTests中的错误。
SimpleDateFormat sdf = new SimpleDateFormat(Library.MetaData.Birthdate.Format);
==〉
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD");
4、利用Junit运行即可。
注:
Library这个类搜了半天没找到。本来还想看看里面有些啥东西呢。
2.1.2、petclinic的部署
1、新建Web项目petclinic,最好是UTF-8格式。
1)、把compass-2.0.0\samples\petclinic\src\java下面的内容copy到src下。
2)、把compass-2.0.0\samples\petclinic\war下面的内容copy到WebRoot下。
3)、把compass-2.0.0\samples\petclinic\war\WEB-INF\classes下面的内容copy到src下。
注意1:别忘了3),否则会报以下错误。
java.util.MissingResourceException: Can't find bundle for base name views, locale zh_CN at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:837)
注意2:test内容别加到src下,因为Petclinic这个类找不到!
2、导入以下jar包。
1)、commons-logging.jar
2)、compass-2.0.0.jar
3)、db-ojb-1.0.4.jar
4)、hibernate3.jar
5)、jstl.jar
6)、lucene-analyzers.jar
7)、lucene-core.jar
8)、spring.jar
9)、spring-hibernate3.jar
10)、spring-ojb.jar
11)、standard.jar
3、代码修改
本教程采用MySQL的JDBC连接方式。
所以需要经过以下步骤修改代码。文件均在WEB-INF/下。
1)、web.xml中contextConfigLocation的Spring加载文件修改成jdbc。
<context-param>
<param-name>contextConfigLocation</param-name>
<!--<param-value>
/WEB-INF/applicationContext-hibernate.xml
</param-value>-->
<!--
<param-value>
/WEB-INF/applicationContext-ojb.xml
</param-value>
-->
<param-value>
/WEB-INF/applicationContext-jdbc.xml
</param-value>
</context-param>
2)、jdbc.properties
把jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://localhost:9001
#jdbc.url=jdbc:mysql://localhost:3306/petclinic
jdbc.username=sa
jdbc.password=
修改成自己项目中对应的值!
例如:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3316/petclinic1? generateSimpleParameterMetadata=true
jdbc.username=root
jdbc.password=admin
注:
url要增加generateSimpleParameterMetadata=true参数,compass自动更新索引时(ResultSetJdbcGpsDevice [line: 337] - performMirroring())只有generateSimpleParameterMetadata=true时才行,否则会抛“java.sql.SQLException: Parameter metadata not available for the given statement”,因为mysql驱动默认generateSimpleParameterMetadata=false(参考ConnectionPropertiesImpl类953行).这里有2个方法解决,修改compass源码,或增加这个参数。
3)、修改applicationContext-jdbc.xml中selectQuery,versionQuery中的4处sql错误。
把原来针对hsql的“COALESCE(t.version, convert('1970-01-01', timestamp)) as type_version”改成“cast(coalesce(t.version,cast('2000-1-21' as datetime)) as datetime) as type_version”。
注:2)和3)的配置问题的解决主要参考下面这篇文章:
《petclinic(compass+jdbc+mysql版)配置笔记》
http://www.itpub.net/thread-936737-1-1.html