五、portal的数据库
首先应该说明的是Liferay Portal有自己默认使用的数据库,运行过前面测试环境搭建的例子的同学应该会纳闷一件事:没有配置数据库,怎么会有登陆等界面呢?数据库层又是利用什么数据源呢?
刚开始我也被这个问题困扰过,经过查找资料,我发现Liferay Portal 太给力了,为了方便,使用HSQL,在内存中创建数据库,其实从服务器的启动信息也可见一斑,见下图:
大家可能没听说过这个数据库,我刚开始的时候也没听说过这个。如果有兴趣可以参见以下链接地址:
HSQL的官方网站:
也有中文的比较简略的介绍参见lupa中文社区:
http://www.lupaworld.com/proj-cont-id-121943.html
HSQL有两种数据库模式,一种是使用数据库文件存储在硬盘上,另一种是一种在内存中的数据库,使用起来更加的迅速。这样就能比较好的理解它了。
接下来就是一个比较头疼的问题了,本身使用的是HSQL,如果我这个项目不是用HSQL,那么这个数据源信息要怎么配置呢?
解决这个问题其实让我困扰了很久,因为我实在是找不到它数据源配置文件的位置,为什么呢?因为它藏的位置实在是太阴霸了…
liferay portal的系统默认配置文件在:
<portal_home>\tomcat6.0.x\webapps\ROOT\WEB-IINF\lib\portal-impl.jar
中的portal.properties中(擦,把配置文件隐藏在jar文件中,这货谁找得到啊。。。)
在这个配置文件中,有这样的配置信息:
include-and-override=portal-ext.properties
include-and-override=${liferay.home}/portal-ext.properties
看到上面的这两句话相信,大家就明白了,通过编写 portal-ext.properties 文件可以对原来这个portal.properties中的信息进行覆盖,从而进行配置。数据库配置信息当然也在其中。
要更改数据源,我建议的做法是首先在这个portal.properties查找jdbc,找到要使用的数据库的相应信息,比如我们要使用的是mysql,为什么要使用mysql作范例呢?因为我电脑上只有mysql。
首先来看配置文件情况,由于此配置文件有点长,我们就节取了我需要的部分:
# MySQL
#
#jdbc.default.driverClassName=com.mysql.jdbc.Driver
#jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
#jdbc.default.username=
#jdbc.default.password=
可以从url看出一些信息,首先localhost指向的是本机数据库,然后数据库的名称是lportal。有了以上的认识,我们接下来的工作就是在我们本机的mysql上新建数据库,名称是lportal。使用mysql命令行或界面化工具,创建数据库。
下面在IDE中新建一个项目,命名只要自己能记住就可以了。注意红色框中的选项:
注意选择ext,通过ext的模式,可以将原来portal的属性进行覆盖,原来portal的属性是不允许更改的,在上面的portal.properties文件中,这就是portal模式。
直接点击finish,我们就有了一个potal的扩展,看一下扩展的目录结构:
在红色框中标出的是用来扩展portal.properties的,可以将portal.properties中被注释的属性进行覆盖。这里我们使用这个将我们的数据库重定向到mysql。
好了,网上很多人提供的代码都有问题,我的办法是:先要到portal.properties中的查找jdbc,并将你要使用的数据库类型的代码段复制下来,粘贴到portal-ext.properties中,并将除了MySQL以外的每句信息前面的#号去掉,在用户名和密码处填入自己mysql的配置。
完成之后,只要将这个 ext 工程 add 进 server 的 runtime中。
点击完成,start liferay server.
然后运行这个 ext 工程,看输出的日志:
看到红框中的内容了吗?很高兴,有木有?成功迁移数据库到MySql中去了。运行后用命令行查看MySql中的内容:
看到一个个表了,这说明我们的数据迁移已经成功了,为什么运行这些项目就会有数据写入数据库呢?刚开始的时候,我也是很纳闷,这个玩意儿是肿么弄的?但是看了下面的内容我觉得我开始理解了……