[转] Liferay多数据源配置及开发

[url]http://www.chinasb.org/archives/2010/12/1319.shtml[/url]

Liferay的多数据源配置十分简单,只需要在tomcat\conf\Catalina\localhost\ROOT.xml中增加即可。如:

<!-- database source -->
<Resource
name="jdbc/LiferayPool"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.1.229:1521:orcl"
username="lportal"
password="lportal"
maxActive="20"
/>

<Resource
name="jdbc/XXXPool"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.1.229:1521:orcl"
username="xxx"
password="xxx"
maxActive="20"
/>

这里配置了两个数据源供Liferay使用,一个是替换Liferay默认数据源,一个是为需要开发的业务系统提供的数据源,这样一来就可以把业务数据库与Portal默认数据库分开管理了,现在大家都开始在问如何在Liferay开发里面使用第二个数据源呢?怎样进行事务控制?好了,接下来我们开始解决这些问题。(这是基于EXT下的开发哦)

1.新建ext-impl/src/META-INF/ext-spring.xml。内容如下:


<!-- Liferay DataSource -->
<bean id="liferayDataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
<property name="targetDataSource">
<bean class="com.liferay.portal.spring.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/LiferayPool" />
</bean>
</property>
</bean>
<!-- XXX DataSource -->
<bean id="xxxDataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
<property name="targetDataSource">
<bean class="com.liferay.portal.spring.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/XXXPool" />
</bean>
</property>
</bean>
<bean id="xxxHibernateSessionFactory" class="com.liferay.portal.spring.hibernate.PortalHibernateConfiguration">
<property name="dataSource" ref="xxxDataSource" />
</bean>
<bean id="xxxSessionFactory" class="com.liferay.portal.dao.orm.hibernate.SessionFactoryImpl">
<property name="sessionFactoryClassLoader">
<bean class="com.liferay.portal.kernel.util.PortalClassLoaderUtil" factory-method="getClassLoader" />
</property>
<property name="sessionFactoryImplementor" ref="xxxHibernateSessionFactory" />
</bean>
<bean id="xxxTransactionManager" class="com.liferay.portal.spring.transaction.TransactionManagerFactory" factory-method="createTransactionManager">
<constructor-arg ref="xxxDataSource" />
<constructor-arg ref="xxxHibernateSessionFactory" />
</bean>


看明白了吧,就是这么简单,只要你留心一下Liferay源码就会发现了。

2.数据源配置好了,也放到Spring管理了,那么下一步该如果使用呢。很简单,当然是Liferay怎么去使用默认的数据源我们就怎样去使用我们自定义的数据源罗。没错,就是强大的ServiceBuilder。下面给个例子吧,再参照上一篇Liferay自定义原生态SQL查询就操作数据库方面就没什么难题了。

<?xml version="1.0"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.0.0//EN"
"http://www.liferay.com/dtd/liferay-service-builder_6_0_0.dtd">
<service-builder package-path="com.xxx.xxx.portlet.book">
<namespace>Book</namespace>
<entity name="Book" local-service="true" remote-service="false" data-source="xxxDataSource" session-factory="xxxSessionFactory" tx-manager="xxxTransactionManager">
<!-- PK fields -->
<column name="bookId" type="long" primary="true" />
<!-- Group instance -->
<column name="groupId" type="long" />
<!-- Audit fields -->
<column name="companyId" type="long" />
<column name="userId" type="long" />
<column name="userName" type="String" />
<column name="createDate" type="Date" />
<column name="modifiedDate" type="Date" />
<!-- Other fields -->
<column name="title" type="String" />
</entity>
</service-builder>

看到了吧,ServiceBuilder主要是通过指定的数据源,session工厂和事务管理去生成相对应的数据库操作方法的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值