top*_*r-j 5 oracle jndi spring-mvc
我在Spring MVC 3.1项目中使用基于注释的事务,并且在抛出异常时我的事务没有被回滚.
这是我的服务代码
@Service
public class ImportService {
@Autowired
ImportMapper importMapper;
@Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.READ_COMMITTED, rollbackFor=Throwable.class)
public void processImport() throws ServiceException, DatabaseException {
iImport import = new Import();
createImport(import);
throw new ServiceException("");
}
@Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.READ_COMMITTED, rollbackFor=Throwable.class)
private void createImport(Import import) throws DatabaseException {
try {
importMapper.createImport(eventImport);
} catch (Exception e) {
throw new DatabaseException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,希望在抛出异常后回滚createImport方法.但不幸的是,事实并非如此.
我在服务器context.xml中定义我的数据源
<Resource name="datasource.import" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="user" password="password" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@INFO" />
Run Code Online (Sandbox Code Playgroud)
我正在寻找JNDI:
<jee:jndi-lookup id="dataSource" jndi-name="datasource.import"/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven />
Run Code Online (Sandbox Code Playgroud)
我正在使用Oracle数据库,并且JDBC规范表明默认情况下自动提交是真的.我认为,如果我明确地将其设置为false会有所帮助,但我无法弄清楚如何做到这一点.
有没有办法让回滚工作,同时通过JNDI查找Oracle数据源.
请注意,RuntimeException默认情况下,Spring的事务管理仅针对未经检查的例外()回滚事务.如果您还希望对已检查的异常执行回滚,则需要对其进行定义.
使用注释作为属性源时,需要为rollbackFor属性提供异常类列表,这应该导致事务回滚(引自JavaDoc):
/**
* Defines zero (0) or more exception {@link Class classes}, which must be a
* subclass of {@link Throwable}, indicating which exception types must cause
* a transaction rollback.
* <p>This is the preferred way to construct a rollback rule, matching the
* exception class and subclasses.
* <p>Similar to {@link org.springframework.transaction.interceptor.RollbackRuleAttribute#RollbackRuleAttribute(Class clazz)}
*/
Class<? extends Throwable>[] rollbackFor() default {};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1311 次 |
| 最近记录: |