Connect to second database in Liferay(連接第二個數(shù)據(jù)庫)

          同時連接兩個數(shù)據(jù)庫,連接多個數(shù)據(jù)庫

          這是我自己研究出來的,真的可以說是世界首發(fā)了,網(wǎng)上也有一些例子,都要么就是老版本,要么就特復(fù)雜。我的這個方法特簡單,希望對大家有用,也希望大家珍惜

          因為公司的需要,直接寫的英文版的,不想再翻譯回來了。都不難理解,一看就能明白。不懂的請留言

          Introduction

                          First of all, I should say that setting liferay to connect to another database is very easy. Certainty, all of things to make easy always after numerous attempts . I searched several solutions from website before. But, not only for old version but also too complex.  As my understand  According to original source, and several trial. I found the way. And I think that it is the World Premiere.^_^

           

          Prerequisites

          You should know how to create services with Service Builder, Also You should know how to create new portlet. how to link to database and  how it is used inside programming language code.

          The steps described here were performed over Liferay 6.0.6.

           

           

          Let us Beginning

          1.       Create a file named portal-ext.properties in {WEBSERVER-HOME}\webapps\ROOT\WEB-INF\classes. And type the following code:

              #
              # MySQL
              #
              jdbc.default.driverClassName
          =com.mysql.jdbc.Driver
              jdbc.default.url
          =jdbc:mysql://localhost/lfportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
              jdbc.default.username
          =root
              jdbc.default.password
          =root  
            
              #
              # This is the second connection
              #
              jdbc.second.driverClassName
          =net.sourceforge.jtds.jdbc.Driver
              jdbc.second.url
          =jdbc:jtds:sqlserver://localhost:1433/extraDB
              jdbc.second.username
          =sa
              jdbc.second.password
          =test

           

          2.       Create a service.xml file. And type the following code:

          <?xml version="1.0" encoding="UTF-8"?>
          <!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.test">
              
          <author>noah.xiang</author>
              
          <namespace>nx</namespace>

              
          <entity name="MyTable" local-service="true" remote-service="false" table="myTable" data-source="secondDataSource" session-factory="secondSessionFactory" tx-manager="secondTransactionManager">
                  
          <!-- PK fields -->

                  
          <column name="id" type="int" primary="true" />

                  
          <!-- Audit fields -->

                  
          <column name="jahr" type="Date" mapping-key="[Jahr]"/>
                  
          <column name="beschaffungsstrategie" type="String"  mapping-key="[Beschaffungsstrategie]"/>
                  
          <column name="buchVon" type="String" mapping-key="[Buch von]"/>
                  
              
          </entity>
          </service-builder>

           

          3.       Ant build-service.xml, let liferay to generate code.

          4.       Create a new file named ext-spring.xml in src\META-INF folder. And copy the following code:

           

          <?xml version="1.0"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
          <beans>
              
          <bean id="secondDataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy" lazy-init="true">
                  
          <property name="targetDataSource">
                      
          <bean class="com.liferay.portal.dao.jdbc.util.DataSourceFactoryBean">
                          
          <property name="propertyPrefix" value="jdbc.second." />
                      
          </bean>
                  
          </property>
              
          </bean>
              
          <bean id="secondHibernateSessionFactory" class="com.liferay.portal.spring.hibernate.PortalHibernateConfiguration" lazy-init="true">
                  
          <property name="dataSource">
                      
          <ref bean="secondDataSource" />
                  
          </property>
                  
          <property name="mappingResources">
                      
          <list>
                          
          <value>META-INF/portlet-hbm.xml</value>
                      
          </list>
                  
          </property>
              
          </bean>
              
          <bean id="secondSessionFactory" class="com.liferay.portal.dao.orm.hibernate.SessionFactoryImpl" lazy-init="true">
                  
          <property name="sessionFactoryImplementor">
                      
          <ref bean="secondHibernateSessionFactory" />
                  
          </property>
              
          </bean>
              
          <bean id="secondTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" lazy-init="true">
                  
          <property name="dataSource">
                      
          <ref bean="secondDataSource" />
                  
          </property>
                  
          <property name="sessionFactory">
                      
          <ref bean="secondHibernateSessionFactory" />
                  
          </property>
              
          </bean>
          </beans>

           

          5.       No more. So easy right? About how to call and deploy it. I believe that you can do.

           



          眼鏡蛇

          posted on 2011-10-27 17:56 眼鏡蛇 閱讀(1428) 評論(6)  編輯  收藏 所屬分類: Liferay

          評論

          # re: Connect to second database in Liferay(連接第二個數(shù)據(jù)庫) 2012-03-01 14:31 彭維

          234148464 qq求助!實在是運行不通。。。  回復(fù)  更多評論   

          # re: Connect to second database in Liferay(連接第二個數(shù)據(jù)庫) 2012-03-02 12:24 Noah

          哪里不通  回復(fù)  更多評論   

          # re: Connect to second database in Liferay(連接第二個數(shù)據(jù)庫) 2012-03-05 10:45 彭維

          研究了一天,完全讓你的做的,不過板本是6.1,行不通,求大神賜教。。。I need your help,service builder的時候不能夠生成表,跟本連不到另一個數(shù)據(jù)源上面去。。  回復(fù)  更多評論   

          # re: Connect to second database in Liferay(連接第二個數(shù)據(jù)庫) 2012-03-05 10:51 彭維

          I am so sad! for a long time ,just bcz of this porblem.....,  回復(fù)  更多評論   

          # re: Connect to second database in Liferay(連接第二個數(shù)據(jù)庫) 2012-03-20 21:50 Noah

          @彭維
          如果是6.1的話,需要修改 com.liferay.portal.spring.hibernate.PortalHibernateConfiguration

          com.liferay.portal.spring.hibernate.PortletHibernateConfiguration  回復(fù)  更多評論   

          # re: Connect to second database in Liferay(連接第二個數(shù)據(jù)庫)[未登錄] 2013-01-30 18:08 Owen

          跨兩個db要怎樣做transaction

          按照你這樣的寫法,如果拋出exception,只會有其中一個DB ROLLBACK,另一個db不會rollback,有什麼好解法嗎?

          jta or jotm,這兩個還要研究看看怎樣用在liferay上面  回復(fù)  更多評論   

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 蕉岭县| 祁阳县| 清涧县| 龙里县| 德昌县| 玉田县| 舞钢市| 承德县| 岐山县| 蓬莱市| 新密市| 弥勒县| 阿克陶县| 舒城县| 峡江县| 高邮市| 庆城县| 临猗县| 锦州市| 寿阳县| 黔东| 伽师县| 绿春县| 山东省| 湖口县| 丹凤县| 永善县| 北安市| 外汇| 长宁县| 漠河县| 石首市| 大安市| 桂东县| 马公市| 甘南县| 文登市| 加查县| 威宁| 白银市| 商城县|