Compass学习之二:顺带例子的部署

Compass学习之二:附带例子的部署

2.1Compass附带例子的部署

部署环境:

1IDEMyEclipse5.0

2、数据库:MySQL5.0

3JDKjdk1.5.0_02

4、应用服务器:apache-tomcat-5.5.12

2.1.1Library的部署

1、新建Java项目Library

1)、把compass-2.0.0\samples\library\src\java下面的内容copysrc

2)、把compass-2.0.0\samples\library\src\test下面的内容copysrc

 

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.2petclinic的部署

1、新建Web项目petclinic,最好是UTF-8格式。

1)、把compass-2.0.0\samples\petclinic\src\java下面的内容copysrc下。

2)、把compass-2.0.0\samples\petclinic\war下面的内容copyWebRoot下。

3)、把compass-2.0.0\samples\petclinic\war\WEB-INF\classes下面的内容copysrc下。

 

注意1:别忘了3),否则会报以下错误。

java.util.MissingResourceException: Can't find bundle for base name views, locale zh_CN at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:837)

注意2test内容别加到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、代码修改

本教程采用MySQLJDBC连接方式

所以需要经过以下步骤修改代码。文件均在WEB-INF/下。

1)、web.xmlcontextConfigLocationSpring加载文件修改成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(参考ConnectionPropertiesImpl953).这里有2个方法解决,修改compass源码,或增加这个参数。

 

3)、修改applicationContext-jdbc.xmlselectQuery,versionQuery中的4sql错误。

把原来针对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

 

1 楼 SurMichael 2008-06-20  
谢谢分享.
很有用.
2 楼 godomoney 2009-06-25  
org.apache.lucene.index.CorruptIndexException: Unknown format version: -7
版本有问题吗,你碰到过这个问题吗
3 楼 cysunc 2009-06-25  
godomoney 写道
org.apache.lucene.index.CorruptIndexException: Unknown format version: -7
版本有问题吗,你碰到过这个问题吗

不好意思,没有碰到这个问题,看异常应该是版本问题。