浏览 2479 次
锁定老帖子 主题:Liferay多数据源配置及开发
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-30
最后修改:2010-12-30
原文:http://www.chinasb.org/archives/2010/12/1319.shtml 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工厂和事务管理去生成相对应的数据库操作方法的。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |