Liferay 6开发学习(二十六):数据库连接相关问题

Liferay中怎么更换数据库?

常碰到有人问Liferay怎么更换数据库,怎么修改数据库连接。在我们第一次启动Liferay的时候,会有一个配置向导,在此配置向导我们可以选择数据库,并配置数据库连接信息。如果我现在在向导里面选择了PostgreSQL数据库,但是我后面想要变更为Oracle怎么办呢?

在执行完配置向导后会在Liferay的目录下面生成一个文件portal-setup-wizard.properties。我们打开此文件,可以在里面看到如下的数据库连接信息。

jdbc.default.driverClassName=org.postgresql.Driver

jdbc.default.url=jdbc:postgresql://localhost:5432/liferay62

jdbc.default.username=postgres

jdbc.default.password=postgres

这几行我们一看就知道是数据库的连接信息了,配置的为JDBC连接的驱动名称、JDBC连接串、数据库的用户名、数据库的密码等几个信息,我们需要要更换数据库,在这里将数据库修改为我们想要的即可。

为什么看到有些教程或文章说是在ROOT/WEB-INF/classes/portal-ext.properties文件里面修改呢?请先参看《Liferay中Portal.properties常用配置参数》这篇博客的前面一小部分,在这两个文件里面修改都是可以的,看自己喜欢了。

Liferay用什么做的数据库连接?

Liferay底层是使用hibernate,Liferay中的数据库操作均是通过Hibernate来进行的。默认是使用C3PO这个连接池。我们也可以通过在portla-ext.properties、portal-setup-wizard.properties或其他的*.properties文件进行连接池的调整。

portal-setup-wizard.properties

jdbc.default.liferay.pool.provider=c3po

 #jdbc.default.liferay.pool.provider=dbcp

 #jdbc.default.liferay.pool.provider=tomcat

默认的配置如上,可以根据情况调整为我们需要的连接池。同时还有许多的关于连接池的配置参数如下(可以在源码的Portal.properties文件中找到)

jdbc.default.acquireIncrement=5

 jdbc.default.acquireRetryAttempts=3

 jdbc.default.acquireRetryDelay=1000

 jdbc.default.connectionCustomizerClassName=com.liferay.portal.dao.jdbc.pool.c3p0.PortalConnectionCustomizer

 jdbc.default.idleConnectionTestPeriod=60

 jdbc.default.maxIdleTime=3600

 jdbc.default.maxPoolSize=100

 jdbc.default.minPoolSize=10

 jdbc.default.numHelperThreads=10

 #jdbc.default.transactionIsolation=1

#jdbc.default.defaultTransactionIsolation=READ_UNCOMMITTED

 jdbc.default.maxActive=100

 jdbc.default.minIdle=10

 jdbc.default.removeAbandonedTimeout=3600

jdbc.default.jdbcInterceptors=org.apache.tomcat.jdbc.pool.interceptor.ConnectionState

 jdbc.default.jmxEnabled=true

 jdbc.default.fairQueue=true

 jdbc.default.timeBetweenEvictionRunsMillis=30000

 jdbc.default.useEquals=false

我们可以根据自己的实际情况进行以上参数的调整与优化。Liferay底层是使用的Hibernate,hibernate的相关配置也是可以使用的,比如我们想让在控制台中打印出执行的SQL语句。只需要配置如下参数:

hibernate.show_sql=true

默认时为false。更多的hibernate默认配置信息,可以在portal.properties里面搜索hibernate.找到。

让Liferay使用中间件的数据源

有时候我们并不想使用JDBC连接池来管理我们的数据库连接,想使用中间件的数据源,比如Tomcat的数据源,Weblogic的数据源。此时我们只需要在portla-ext.properties或portal-setup-wizard.properties中添加如下配置

jdbc.default.jndi.name=jdbc/LiferayPool

这样我们就是让Liferay去中间件的数据源中去寻找数据库连接。当然数据源的JNDI名称必须配置成jdbc/LiferayPool,此时前面的那些JDBC连接的配置就是不需要的了。此时可以删除。

Liferay支持哪些数据库?

有人可能会想,Liferay底层是使用的Hibernate,那是不是Hibernate支持的数据库Liferay都支持呢?理论上应该是这样的,但实际上并非如此,Liferay支持的数据库如下:

DB2、Derby、Hypersonic(HSQL)、Ingres、Mysql、Oracle、P6Spy、PostgreSQL、SQL Server、Sybase等

其他的数据库默认不提供直接支持,只要是Hibernate支持的数据库,如果要让Liferay支持,需要对源码进行一些修改,修改起来并不算复杂。具体的可以参考一下Liferay源码目录下的Portal-impl/src/com/liferay/portal/dao/db下面的面的相关类。

怎么在代码中获取JDBC连接串Connection

有时候可能出于某此原因,我们就是要获取JDBC的连接Connection,怎么办呢?使用普通的JDBC根据配置的参数读取肯定也是可行的,但Liferay已经给我们提供了这样的一个API:

DataAccess.getConnection()。

数据库连接的一些其他信息,如当前的数据库类似等,可以通过DBFactoryUtil.getDB()再获取相关方法来得到。

Intellij IDEA中修改模板中user变量名称

在Intellij IDEA中的注释模板中的${user}名称是根据当前操作系统的登录名来取的,有时候登录名称和我们实际的user名称并不相同。

修改方法如下:

方法一:可以在settings的file and code template中进行修改。但是这个只能修改指定的模板。

方法二:在IDE启动的时候,重写user的变量名称。

找到IDE的安装目录/bin下面的idea.exe.vmoptions 和idea64.exe.vmoptions这两个文件,在里面添加

-Duser.name=huqiwen(在些修改为自己想要的名称)

然后重启IDEA。

OpenLdap的安装及基本管理

OpenLdap简介

OpenLDAP是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)的自由和开源的实现,在其OpenLDAP许可证下发行,并已经被包含在众多流行的Linux发行版中。

它主要包括下述4个部分:

1. slapd - 独立LDAP守护服务

2. slurpd - 独立的LDAP更新复制守护服务

3. 实现LDAP协议的库

4. 工具软件和示例客户端

 安装OPENLDAP

下载安装 openldap for windows

下载地址:

http://www.userbooster.de/downloadablecontent/freeware/OpenldapforWindows.exe

安装步骤:

 

点击yes

 

点击Next,Next。

 

默认全选即可。

 

可以使用默认配置,一直点击Next,最后一步使用默认的BDB数据库即可。安装完成点击Close退出.

注:Database backend(后端数据库)

§ BDB--Berkeley DB是历史悠久的嵌入式数据库系统,主要应用在UNIX/LINUX操作系统上,其设计思想是简单、小巧、可靠、高性能。

§ MDB-- Memory Mapped Database。

§ LDAP—使用代理LDAP服务。

§ LDIF—使用LDFI文件存储。

§ SQL SERVER—微软SQL SERVER数据库。

LDAP的信息初始化

打开安装目录,如果你设置安装目录为D:\OpenLDAP,则直接在这个目录下找到slapd.conf可以使用文本文档打开,修改

suffix                  "dc=huqiwen,dc=com"

rootdn               "cn=Manager,dc=huqiwen,dc=com"

新建一个文件example.ldif添加一个节点目录信息

dn: ou=users,dc=huqiwen,dc=com

objectclass: organizationalUnit

ou: users

description: users information

添加的原因:在该节点下存储我们的用户名信息,注意前后都不能有空格,然后关闭openldap服务,在windows的服务里面找到openldap服务,将其关闭。

然后使用cmd命令行导入该文件,让文件目录转到安装根目录使用命令

slapadd -v -l ./example.ldif

 

完成后记得在服务里面重启OpenLDAP的服务。

LDAP的主要名词解释

dc:(Domain Component)域

ObjectClass:对象类(不同的对象类存在某些不同的属性,根据自己需要选择对象类)

dn:(Distinguished Name)节点绝对路径,例如:uid=admin,ou=users,dc=eruipan,dc=com

o:(Organizational)组织

ou:(Organizational Unit)组织单位

cn:(Common Name)通用名(继承自person对象的对象类必须有值的属性,否则无法创建)

sn:(surname)全名(继承自person对象的对象类必须有值的属性,否则无法创建)

其他需要用到的属性

mail:电子邮件

userpassword:用户密码

uid:唯一标识(如果使用uid验证)

1.1.4            LDAP管理工具Apache Directory Studio

LDAP的管理工具Apache Directory Studio

介绍

LDAP的管理工具有许多,这里介绍一个,Apache Directory Studio 是一个 LDAP 的工具平台,用来连接到任何 LDAP 服务器并进行管理和开发工作。拥有LDAP浏览器、LDIF编辑器、嵌入式 ApacheDS、ACI编辑器等。

安装

下载:

64位地址:

http://apache.fayea.com/apache-mirror//directory/studio/dist/2.0.0.v20130628/ApacheDirectoryStudio-win32-x86_64-2.0.0.v20130628.exe

32位的可以自行到https://directory.apache.org/studio/寻找下载。

打开下载好的安装文件,选择事先安装好的JRE目录(配置了JAVA环境变量会自动识别),选择安装路径等。

安装好后打开软件,在左下角connections框内修改初始连接信息,也可新建连接或者也可点击LDAP新建一个connection,修改连接属性:

 

Hostname:ladp服务器所在地址。本机可以localhost

Port:默认是10389根据自己实际端口修改,我这里改为389

 

Bind DN or user:这里填写管理员存储路径,对应于前面我们建立的内容。

Bind password:密码,默认为secret

 

在LDAO Browser框中点击DIT,再点击Root DSE出现上面这些信息表示连接成功。

添加信息

添加组织信息:

鼠标移动至DIT选择Newà Context Entry

 

有两个选项一个是新建另一个是使用已经存在的组织当作生成模板。两者的区别在于第一个选项下一步需要自己选择对象类,第二个会套用选择模板的对象类。点击next

 

选择对象类,由于要生成组织,选择了比较通用的organizationalUnit,点击next。

该组织就建立好了。

新建用户

鼠标移动至ou=users,dc=huqiwen,dc=com选择NewàNew Context Entry

 

同样有两个选项,根据自己实际情况,如果有模板就选择模板(已建立好的同类型的用户),没有就新建一个,在这里输入inet,选择inetOrgPerson会出现如下:

我们选择inetOrgPerson,选择什么对象类需要根据我们需要的属性来进行判定。

 

parent:这里是要选择父节点,我们使用的是刚才建立好的用户组织。

RDN:这里就是该节点的查询路径,我使用的是uid,值为huqiwen。查询该节点DN:uid=huqiwen,ou=ouers,dc=huqiwen,dc=com。左边的加号就不使用,使用后会使DN发生变化。

 

右上角的图标带个小加号可以让我们添加我们想要的属性,sn,cn这两个属性必须有值。我们添加一个userPassword属性。

 

点击Finish

 

Select hash method:可以选择加密方式。

使用同样的方法再添加一个mail属性,最终如下:

保存我们就建立了一个uid为huqiwen的用户。

 修改信息

对需要修改的组织或者用户进行双击。

红色的叉图标是删除属性,对需要的属性点击就可以修改,增加属性则点击蓝色横条带个小加号的图标。

 查询信息

在LDAP Browser框中右键,选择New Search

在search base框中录入你要查询的DN,这里我选择查询huqiwen,ou=users,dc=huqiwen,dc=com。

Searches中就会多了一个名为2014-04-17 15-58-16.这个就是我们刚才查询的查询名字,默认是本地时间。以后我们需要访问ou=users,dc=huqiwen,dc=com就不用再次查询,找到这个目录就可以看到。

 删除信息

对需要删除的组织或者用户右键选择delete Entry即可删除。

你可能感兴趣的:(Liferay 6开发学习(二十六):数据库连接相关问题)