2006-06-17

cocoon连接MySQL数据库

今天下午花了不少时间才设置好cocoon与MySQL数据库的连接。要设置cocoon和MySQL可大致分为3步:



  1. 让cocoon能找到JDBC的 jar文件

  2. 让cocoon预先加载JDBC driver

  3. 设定连接池


我没有用cocoon自带的java web server,而是用的Tomcat 5.5.17。下载MySQL Connector/J 3.1.12后把mysql-connector-java-3.1.12-bin.jar文件先后复制到了多个目录:



  • $JAVA_HOME/jre/lib/ext

  • $CATALINA_HOME/common/lib

  • $CATALINA_HOME/webapps/cocoon/WEB-INF/lib


重新启动tomcat后日志仍然报告:
cocoon java.sql.SQLException: No suitable driver
意思是cocoon仍然找不到MySQL的MySQL Connector/J 3.1.12。
后来在$CATALINA_HOME/webapps/cocoon/WEB-INF/web.xml文件里第195行添上
com.mysql.jdbc.Driver
就能与MySQL进行连接了。


下面是设定一个连接池的例子:
在cocoon.xconf文件里加上:



<!-- added by Dingjun Jia, mysql connection pool in cocoon.conf -->
<jdbc name="abc" logger="core.datasources.abc">
<pool-controller min="5" max="10"/>
<!-- <auto-commit>false</auto-commit> -->
<!-- 此行若不注释掉,总会得到错误:
Not allowed to define mixed content in the element match at file:/opt/tomcat/webapps/cocoon/abc/sitemap.xmap:80:36 -->
<dburl>jdbc:mysql://localhost/abc</dburl>
<user>jia</user>
<password>password</password>
</jdbc>



P.S:

If we want to use non-latin characters in mySQL, Greek for example, we need to have a more specific connection string: jdbc:mysql://YourHostName:3360/YourDataBaseName?useUnicode=true&amp;characterEncoding=YourEncoding for example: (cocoon.xconf)


  <jdbc name="pool_name">
<pool-controller min="5" max="10"/>
<dburl>jdbc:mysql://YourHostName:3360/YourDataBaseName?useUnicode=true&amp;characterEncoding=ISO-8859-7</dburl>
<user>database_user</user>
<password>database_password</password>

</jdbc>

没有评论:

发表评论