新的系统有可能会要用到遗留系统的数据,所以有时就会要连接两个以上的数据库。
那么怎么来处理这一问题呢?
原理:创建类似的文件(两个数据库就有两个类似用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 >
< 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 >
"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 >
<?
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 >
<! 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 >
<?
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 >
<! 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 >
<?
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 >
<! 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 >
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
jdbc.url = jdbc:microsoft:sqlserver: // 192.168.1.6:1433;DatabaseName=dg_labour;SelectMethod=cursor;
jdbc.username = sa
jdbc.password = test
<?
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 >
<! 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 >
可能说的不够详细,但提供了一个思路。