当前位置: 代码迷 >> Web前端 >> seam中应用多数据源
  详细解决方案

seam中应用多数据源

热度:401   发布时间:2012-10-31 14:37:31.0
seam中使用多数据源

现在项目组使用seam技术,我在开发multiple 数据源问题,

1 components.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<components xmlns="http://jboss.com/products/seam/components"
	xmlns:core="http://jboss.com/products/seam/core"
	xmlns:persistence="http://jboss.com/products/seam/persistence"
	xmlns:transaction="http://jboss.com/products/seam/transaction"
	xmlns:security="http://jboss.com/products/seam/security"
	xmlns:bpm="http://jboss.com/products/seam/bpm"
	xmlns:web="http://jboss.com/products/seam/web"
	xmlns:spring="http://jboss.com/products/seam/spring"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:mail="http://jboss.com/products/seam/mail"
    xsi:schemaLocation="http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.1.xsd 
                 http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.1.xsd 
                 http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.1.xsd
                 http://jboss.com/products/seam/bpm http://jboss.com/products/seam/bpm-2.1.xsd 
                 http://jboss.com/products/seam/spring http://jboss.com/products/seam/spring-2.1.xsd 
                 http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.1.xsd
                 http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.1.xsd">

	<core:init debug="false" />
	<web:context-filter url-pattern="/dwr/*"/>
	
	<spring:context-loader config-locations="classpath*:META-INF/**/spring/*-context.xml"/>

	<core:manager conversation-timeout="120000"
		concurrent-request-timeout="500" conversation-id-parameter="cid" />

	<transaction:entity-transaction entity-manager="#{em}" />
	<persistence:entity-manager-factory name="wfwcoredatasource" />
	<persistence:managed-persistence-context name="em"
		auto-create="true" entity-manager-factory="#{wfwcoredatasource}" />


	<transaction:entity-transaction name="tt2" entity-manager="#{em2}" />

	<persistence:entity-manager-factory name="wfwcoredatasource2" />
	<persistence:managed-persistence-context name="em2"
		auto-create="true" entity-manager-factory="#{wfwcoredatasource2}" />
			
	<component name="org.jboss.seam.navigation.pages">
		<property name="resources">
			<value>/WEB-INF/pages.xml</value>
			<value>META-INF/wfwdemo/wfwdemo_pages.xml</value>
			<value>META-INF/wfwcore/wfwcore_pages.xml</value>
			<value>META-INF/wfwapp1/wfwapp1_pages.xml</value>
		</property>
	</component>
	<!--  
		<web:logging-filter url-pattern="*.seam" />
		<security:identity
		authenticate-method="#{authenticator.authenticate}" />	 
	-->
	<bpm:jbpm />

	<!--  customization -->
	<component name="com.talgroup.sandbox.seam.configuration">
		<property name="loginPage">
			/pages/wfwcore/login1.xhtml
		</property>
		<property name="mainPage">
			/pages/wfwdemo/mainpage.xhtml
		</property>
	</component>

    <component name="skinBean"
              scope="session"
              class="com.talgroup.wfw.wfwcore.web.ui.SkinBean">
        <property name="skinNames">
        WfwSkin,blueSky,plain,emeraldTown,wine,japanCherry,ruby,classic,deepMarine
        </property>
    </component>

	<component class="org.jboss.seam.web.MultipartFilter">
		<property name="createTempFiles">true</property>
		<property name="maxRequestSize">4000000</property>
	</component>
	<mail:mail-session host="smtp.freeborders.com" port="25" username="acen.chen@freeborders.com" password="19850802"/>
	
</components>

?蓝色字体就是配置数据源的位置

2 配饰persistence.xml

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

	<persistence-unit name="wfwcoredatasource"
		transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<jta-data-source>
			java:comp/env/jdbc/wfwdemo1_ds
		</jta-data-source>
		<class>com.talgroup.wfw.wfwcore.app.domain.User</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.Configuration</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.Profile</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.Function</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.Role</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.Group</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.UserGroup</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.RoleGroup</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.UserLockInfo</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.ADServerInfo</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.ConfigParameter</class>		
		<class>com.talgroup.wfw.wfwcore.app.domain.LoginUserInfo</class>
		
		<class>com.talgroup.wfw.wfwdemo.jpa.Hotel</class>
		<class>com.talgroup.wfw.wfwdemo.persistent.Tag</class>
		
		
		<properties>

			<!--  <property name="hibernate.hbm2ddl.auto" value="create-drop" /> -->
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.dialect"
				value="com.talgroup.wfw.wfwcore.app.services.persistentService.DB2Dialect" />
			<property name="hibernate.cache.provider_class"
				value="org.hibernate.cache.HashtableCacheProvider" />

			<property name="hibernate.cache.provider_class"
				value="org.hibernate.cache.HashtableCacheProvider" />
			<!-- RESOURCE_LOCAL
				<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
			-->
			<!-- alternative
				<property name="jboss.entity.manager.factory.jndi.name" 
				value="java:/jpaBookingEntityManagerFactory"/>
			-->
		</properties>
	</persistence-unit>
	<persistence-unit name="wfwcoredatasource2"
		transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<jta-data-source>
			java:comp/env/jdbc/wfwdemo2_ds
		</jta-data-source>
		<class>com.talgroup.wfw.wfwcore.app.domain.User</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.Configuration</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.Profile</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.Function</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.Role</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.Group</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.UserGroup</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.RoleGroup</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.UserLockInfo</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.ADServerInfo</class>
		<class>com.talgroup.wfw.wfwcore.app.domain.ConfigParameter</class>		
		<class>com.talgroup.wfw.wfwcore.app.domain.LoginUserInfo</class>
		<class>com.talgroup.wfw.wfwdemo.jpa.Hotel</class>
		<class>com.talgroup.wfw.wfwdemo.persistent.Tag</class>

				
		<class>com.talgroup.wfw.wfwdemo.jpa.Hotel</class>
		<class>com.talgroup.wfw.wfwdemo.jpa.Booking</class>
		<class>com.talgroup.wfw.wfwdemo.jpa.Publisher</class>
		<class>com.talgroup.wfw.wfwdemo.jpa.PubInfo</class>
		<class>com.talgroup.wfw.wfwdemo.jpa.Author</class>
		<class>com.talgroup.wfw.wfwdemo.jpa.Title</class>
		<class>com.talgroup.wfw.wfwdemo.jpa.Book</class>
		<class>com.talgroup.wfw.wfwdemo.jpa.SimpleObject</class>

		<properties>
			<!-- 
				<property name="hibernate.hbm2ddl.auto" value="update" />
			-->
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.dialect"
				value="com.talgroup.wfw.wfwcore.app.services.persistentService.DB2Dialect" />
			<property name="hibernate.cache.provider_class"
				value="org.hibernate.cache.HashtableCacheProvider" />

			<property name="hibernate.cache.provider_class"
				value="org.hibernate.cache.HashtableCacheProvider" />
			<!-- RESOURCE_LOCAL
				<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
			-->
			<!-- alternative
				<property name="jboss.entity.manager.factory.jndi.name" 
				value="java:/jpaBookingEntityManagerFactory"/>
			-->
		</properties>
	</persistence-unit>


</persistence>

?