追隨Java
          簡單的事情重復做,就會產生累積效應!
          posts - 260,  comments - 338,  trackbacks - 0

          新的系統有可能會要用到遺留系統的數據,所以有時就會要連接兩個以上的數據庫。
          那么怎么來處理這一問題呢?
          原理:創建類似的文件(兩個數據庫就有兩個類似用spring+hibernate的配置文件)
          下面以webwork+spring+hibernate來說明。
          1)web.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation
          ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

              
          <display-name>shipment</display-name>

              
          <!-- Define the basename for a resource bundle for I18N -->
              
          <context-param>
                  
          <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
                  
          <param-value>messages</param-value>
              
          </context-param>
          <!--加載spring+hibernate的配置文件-->
            
              <context-param>
                  
          <param-name>contextConfigLocation</param-name>
                  
          <param-value>
                      /WEB-INF/applicationContext*.xml
                      /WEB-INF/action-servlet.xml
                  
          </param-value>
              
          </context-param>
          <!-- 把webwork與spring結合起來-->
              
          <listener>
                  
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
              
          </listener>
              
          <listener>
                  
          <listener-class>com.opensymphony.xwork.spring.SpringObjectFactoryListener</listener-class>
              
          </listener>
          <!-- 所有的請求響應的類-->
              
          <servlet>
                  
          <servlet-name>action</servlet-name>
                  
          <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
                  
          <load-on-startup>1</load-on-startup>
              
          </servlet>

            
              <servlet-mapping>
                  
          <servlet-name>action</servlet-name>
                  
          <url-pattern>*.html</url-pattern>
              
          </servlet-mapping>

              
          <welcome-file-list>
                  
          <welcome-file>login.jsp</welcome-file>
              
          </welcome-file-list>

          </web-app>

            2) xwork.xml用來配置action
          <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" 
          "http://www.opensymphony.com/xwork/xwork-1.0.dtd"
          >

          <xwork>
                
          <!-- Include webwork defaults (from WebWork-2.1 JAR). -->
                
          <include file="webwork-default.xml"/>
                
                
          <!-- Configuration for the default package. -->
                
          <package name="default" extends="webwork-default">
                  
          <interceptors>
                      
          <!-- Interceptor to catch exceptions and display mapped exception result -->
                      
          <interceptor name="exceptionHandler" class="exceptionInterceptor"/>
                      
          <interceptor-stack name="defaultExceptionStack">
                          
          <interceptor-ref name="defaultStack"/>
                          
          <interceptor-ref name="exceptionHandler"/>
                      
          </interceptor-stack>
                  
          </interceptors>
                  
          <!-- Default interceptor stack. --> 
                  
          <default-interceptor-ref name="defaultExceptionStack"/> 
                  
                  
          <global-results> 
                      
          <result name="dataAccessFailure">dataAccessFailure.jsp</result>
                  
          </global-results> 
                     
          <!--- shipment2 -->
                   
           <action name = "login" class= "loginAction" method="login">
                               
          <result name="success" type ="dispatcher">shipmentv.jsp</result>
                               
          <result name="failuer" type="dispatcher">login.jsp</result>
                     
          </action>
                 
           </package>
          </xwork>
                 3)action-servlet.xml配置action與調用DAO
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
              "http://www.springframework.org/dtd/spring-beans.dtd"
          >

          <beans>
              <bean id="loginAction" class="com.legend.shipment.web.LoginAction" singleton="false">
                      
          <property name="shipmentManager" ref="shipmentManager"/>
               
          </bean>

          </beans>
               4)applicationContext.xml配置事務管理 
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
              "http://www.springframework.org/dtd/spring-beans.dtd"
          >

          <beans>
              
          <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
                  
          <property name="location" value="classpath:jdbc.properties"/>
              
          </bean>

              
          <!-- Transaction template for Managers, from:
                   http://blog.exis.com/colin/archives/2004/07/31/concise-transaction-definitions-spring-11/ 
          -->
              
          <bean id="txProxyTemplate" abstract="true"
                  class
          ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
                  
          <property name="transactionManager"><ref bean="transactionManager"/></property>
                  
          <property name="transactionAttributes">
                      
          <props>
                          
          <prop key="save*">PROPAGATION_REQUIRED</prop>
                          
          <prop key="remove*">PROPAGATION_REQUIRED</prop>
                          
          <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
                      
          </props>
                  
          </property>
              
          </bean>

              
          <bean id="shipmentManager" parent="txProxyTemplate">
                  
          <property name="target">
                      
          <bean class="com.legend.shipment.service.impl.ShipmentManagerImpl">
                          
          <property name="shipmentDAO" ref="shipmentDAO"/>
                      
          </bean>
                  
          </property>
              
          </bean>
          </beans>
                   5)applicationContext-hibernate.xml配置hibernate
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
              "http://www.springframework.org/dtd/spring-beans.dtd"
          >

          <beans>
              
          <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                  
          <property name="driverClassName" value="${jdbc.driverClassName}"/>
                  
          <property name="url" value="${jdbc.url}"/>
                  
          <property name="username" value="${jdbc.username}"/>
                  
          <property name="password" value="${jdbc.password}"/>
              
          </bean>

              
          <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                  
          <property name="dataSource" ref="dataSource"/>
                  
          <property name="mappingResources">
                      
          <list>
                          
          <value>com/legend/shipment/TworkCost.hbm.xml</value>
                          
          <value>com/legend/shipment/TworkConfig.hbm.xml</value>
                      
          </list>
                  
          </property>
                  
          <property name="hibernateProperties">
                      
          <props>
                          
          <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
                          
          <prop key="hibernate.show_sql">true</prop>
                      
          </props>
                  
          </property>
              
          </bean>

              
          <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
                  
          <property name="sessionFactory" ref="sessionFactory"/>
              
          </bean>

              
          <bean id="shipmentDAO" class="com.legend.shipment.dao.hibernate.ShipmentDAOHibernate">
                  
          <property name="sessionFactory" ref="sessionFactory"/>
              
          </bean>
          </beans>
                 6)jdbc.properties數據庫連接信息
          jdbc.driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
          jdbc.url
          =jdbc:microsoft:sqlserver://192.168.1.6:1433;DatabaseName=dg_labour;SelectMethod=cursor;
          jdbc.username=sa
          jdbc.password
          =test
            如果要連接兩個數據庫的話,那么就加多一個類似applicationContext-hibernate.xml文件,一個類似applicationContext.xml的文件,并在jdbc.properties文件中添加另一個數據庫的連接信息。當然要作小的修改。比如說:你在applicationContext-another.xml加了一個名為workManager的事務代理。你想把它添加到loginAction中去,那么就把action_server.xml文件修改成
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
              "http://www.springframework.org/dtd/spring-beans.dtd"
          >

          <beans>
              
          <bean id="loginAction" class="com.legend.shipment.web.LoginAction" singleton="false">
                      
          <property name="shipmentManager" ref="shipmentManager"/>
              <property name="workManager" ref="workManager"/>   
               
          </bean>

          </beans>
          在java程序中就可以通過setWorkManager()方法自己設置了,也就可以在LoginAction類中引用了。
          可能說的不夠詳細,但提供了一個思路。
          posted on 2005-09-08 16:10 Harryson 閱讀(5312) 評論(0)  編輯  收藏 所屬分類: HibernateSpring

          <2005年9月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          留言簿(10)

          隨筆分類(319)

          AJAX

          Coffee House

          CSS

          Java

          JavaScript

          Open Source

          ProjectManagement

          友情Blog

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 嘉黎县| 靖州| 广宁县| 高要市| 八宿县| 兰考县| 深圳市| 禹州市| 新野县| 微山县| 奉化市| 青州市| 淳安县| 杨浦区| 扎囊县| 临邑县| 汽车| 汉中市| 义乌市| 马关县| 凤阳县| 社会| 旌德县| 旬阳县| 体育| 新干县| 永福县| 台北市| 北京市| 永吉县| 高淳县| 南昌县| 广东省| 榆社县| 和顺县| 苏州市| 鹿泉市| 阜新市| 贵南县| 威远县| 寿光市|