前两天项目组在oracle数据库上部署Liferay4.1.2,却怎么也调不通。后来我过去支持了一把,发现主要出在两个问题上:
(1)驱动使用的不对
(2)hibernate dialect未配置
Liferay在oracle9i上部署并不是很复杂,但需要使用oracle10g的驱动去访问oralce9i的数据库.这在liferay开发手册上已经说得很明白(http://content.liferay.com/4.0.0/docs/developers/ch02s02.html):
You must use the Oracle 10g driver located in classes12.jar whether or not you are using Oracle 9 or Oracle 10.
在配置连接池的时候,没有什么太在意的地方,只是Liferay可能推荐采用其 liferay jdbc driver包,其实没有必要.liferay那个jdbc driver包不是真正的驱动,只是做了一些索引,能自动根据url来判断采用具体那个数据库驱动.所以没有必要采用.
在连接池,我们可以如下配置(使用Tomcat5.5):
<Resource
name="jdbc/LiferayPool"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@10.64.3.119:1521:ACL"
username="lportal"
password="lportal"
maxActive="100"
maxIdle="30"
maxWait="1000"
/>
但是光这样还是不行的,应为Liferay professional版底层采用了Hibernate,所以还需要设置Hibernate Dialect。这是在portal-ext.properties中配置。否则
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect