欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring 声明式事务管理与oracle的inactive会话。 博客分类: 我的文章 OracleSpring配置管理SQLDAO 

程序员文章站 2024-03-21 15:32:22
...
在开发环境中oracle(系统用户下)总是有30个左右的inaction连接,但是这些连接都没有执sql语句,就是在oracle客户端中查看这些会话,都是该会话没有执行任何SQL语句。探讨一下这些连接是不是由于程序中没有关闭连接造成的。我用的是spring的声明式事务管理,
<jee:jndi-lookup jndi-name="jdbc/abcdexxx" id="dataSource"
		lookup-on-startup="true">
	</jee:jndi-lookup>
	<!-- Transaction manager for a single JDBC DataSource -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- 管理事务操作 -->
	<aop:config>
		<aop:pointcut id="servicePointcut"
			expression="execution(* abcdexxx.service.*.*(..))" />
		<aop:pointcut id="servicePointcut2"
			expression="execution(* abcdexxx.service.*.*.*(..))" />
		<aop:pointcut id="workflowJDBCStore"
			expression="execution(* abcdexxx.common.workflow.jdbc.*.*(..))" />
		<aop:advisor advice-ref="txAdvice"
			pointcut-ref="servicePointcut" />
		<aop:advisor advice-ref="txAdvice"
			pointcut-ref="servicePointcut2" />
		<aop:advisor advice-ref="txAdvice"
			pointcut-ref="workflowJDBCStore" />
	</aop:config>
	<!-- 事务控制 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="save*" propagation="REQUIRED" />
			<tx:method name="insert*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="remove*" propagation="REQUIRED" />
			<tx:method name="get*" read-only="true" />
		</tx:attributes>
	</tx:advice><bean id="jdbcTemplate"
		class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<bean id="dao" abstract="true">
		<property name="jdbcTemplate" ref="jdbcTemplate" />
	</bean>

	<!-- 配置本地LobHandle(Oracle) -->
	<bean id="nativeJdbcExtractor"
		class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor"
		lazy-init="true" />
	<bean id="oracleLobHandler"
		class="org.springframework.jdbc.support.lob.OracleLobHandler"
		lazy-init="true">
		<property name="nativeJdbcExtractor" ref="nativeJdbcExtractor" />
	</bean>
,dao用的是JdbcTemplate。