applicationContext.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<context:component-scan base-package="xx.yy.locker" /> <context:annotation-config />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> <property name="persistenceUnitName" value="locker" /> </bean>
<bean id="transactionManager" class="org.springframework.transaction.jta.WebSphereUowTransactionManager"/>
<tx:annotation-driven transaction-manager="transactionManager" />
<tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" read-only="true"/> <tx:method name="*" read-only="false" /> </tx:attributes> </tx:advice>
<aop:config> <aop:pointcut id="lockerManagerOperation" expression="execution(public * xx.yy..*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="lockerManagerOperation"/> </aop:config>
</beans>
|
persistence.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" 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"> <persistence-unit name="testDB" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>jdbc/xx</jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> <property name="hibernate.connection.driver_class" value="oracle.jdbc.pool.OracleConnectionPoolDataSource" /> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"/> </properties> </persistence-unit> </persistence>
|
libs:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| antlr-2.7.6.jar aspectjrt.jar aspectjweaver.jar commons-beanutils.jar commons-collections.jar commons-logging.jar dom4j-1.6.1.jar hibernate-annotations.jar hibernate-commons-annotations.jar hibernate-entitymanager.jar hibernate3.jar javassist-3.4.GA.jar common-annotations.jar log4j-1.2.16.jar persistence.jar slf4j-api-1.5.0.jar slf4j-log4j12-1.5.0.jar spring-2.5.jar
|
注意:
- 使用
<context:component-scan>
或<context:annotation-config />
的话,可以不用
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
- 使用
<tx:annotation-driven>
+ <tx:advice>
+ <aop:config>
可以不用 @transactional
- WAS的TransactionManager要用WebSphereUowTransactionManager
- hibernate.transaction.manager_lookup_class 用 org.hibernate.transaction.WebSphereExtendedJTATransactionLookup
- hibernate.transaction.factory_class 不能使用 org.hibernate.transaction.CMTTransactionFactory,因为WAS的transaction不是一个joinableTransaction,所以只能使用org.hibernate.transaction.JDBCTransactionFactory
- 删除WEB-INF/lib中的jta.jar,否则会出现错误。估计这个jta.jar跟WAS的有版本不兼容问题。
- JSF集成spring
web.xml1 2 3 4 5 6 7 8 9
| <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> faces-config.xml <faces-config> <application> <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver> </application> </faces-config>
|
这样就不用写Managed-Bean,但EL不能获得managedBean的数据,只能用JSF的EL读取managedBean,
即不能${xBean},只能#{xBean}
<context:annotation-config />
支持JSR-250 annotations,即 @Resource, @PostConstruct, @PreDestroy。
等价于<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor">
而CommonAnnotationBeanPostProcessor支持 @EJB
参考:
http://www.ibm.com/developerworks/websphere/techjournal/0609_alcott/0609_alcott.html
中文: