当前位置: 首页 > 知识库问答 >
问题:

Spring@Transactional jdbcTemplate调用web服务

穆劲
2023-03-14

我的应用程序目前正在使用Spring的JdbcTemplate@Transaction注释进行事务处理。

我有一个在单个事务上调用Web服务的方法,我设计它是为了让Web服务的异常将回滚事务中的所有数据库更改。

我的问题:如何刷新在调用web服务之前所做的数据库更改?

非常感谢

@Autowired
private MyDao dao;

    @Transactional
    @Override
    public void myMethod() {
        .....
        dao.saveThis(myObjectToSaveIsNotAnIssue);

        // I need to FLUSH here in order for my web service to "see" the saved object

       callWebservice();
    }

我的Spring配置:

<context:component-scan base-package="com.xxx.xxx" />
    <context:annotation-config />

    <!-- proxy-target-class is set to true to use transactional scope -->
    <tx:annotation-driven proxy-target-class="true" transaction-manager="tomcatTransactionManager" />

    <bean id="sybaseDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:comp/env/jdbc/xxx"/>
        <property name="lookupOnStartup" value="true"/>
        <property name="proxyInterface" value="javax.sql.DataSource"/>
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="sybaseDataSource"/>
    </bean>

    <!-- Transaction Manager -->
    <bean id="tomcatTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="sybaseDataSource" />
    </bean>

共有2个答案

孟思远
2023-03-14

我们可以从汇编程序中的事务中取出callWebservice()方法,然后首先从汇编程序调用myMethod,然后调用callWebservice()方法。而且,通过使用Call Webservice方法,我们可以处理成功和失败的场景。(例如:更新状态)

赏梓
2023-03-14

JDBC没有任何“冲洗”的概念。SQL查询在执行时执行。没有什么要被冲走的东西被保存在记忆中。

由于事务隔离(默认情况下为READ_committed),您的web服务在数据库中不会看到任何您尚未提交的内容。如果确实需要(在web服务中),则必须将隔离级别设置为READ_UNCOMMITTED:

@Transactional(isolation = Isolation.READ_UNCOMMITTED)
 类似资料:
  • 我正在尝试从Spring Boot调用SOAP Web服务,但我遇到了问题。我使用maven-jaxb2-plugin从这个WSDL自动生成了类: 遵循本指南:https://spring.io/guides/gs/consuming-web-service/ 我还创建了SOAP客户端来调用TR069CheckDevice可用性。 我的客户端类如下所示: 我的SoapClient配置类是: 问题是

  • 我需要从REST服务调用SOAP Webservice。我在我的项目中使用Spring集成。目前,我正在使用基于xml的配置来实现目标。但我想用java dsl编写代码。请帮助我如何使用Spring集成DSL从REST服务调用SOAP服务。 一个例子会很有帮助。

  • 我必须使用SpringBoot2.0.5从web应用程序构建中调用远程RESTendpoint 我可以使用HttpURLConnection,但由于Spring使用RestTemplate,我检查了它是什么,发现它很快就会被弃用: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/clien

  • 我正在使用用于ReST web服务的Spring框架Tomcat7。我正在尝试使用Spring RestTemplate调用https web服务。我得到以下错误: 找不到请求目标的有效认证路径;嵌套的异常是javax。网ssl。例外:太阳。安全验证器。ValidatorException:PKIX路径生成失败:sun。安全供应商。certpath。SunCertPathBuilderExcept

  • null 请帮助,因为我需要有这个基于自定义令牌的SSO启用,也不希望我的auth服务URL暴露在浏览器上。

  • 我在Scala上使用Play 2.5,我创建了一个类,可以多次调用外部web服务。 外部Web服务在某些条件下被调用并得到ok或nok的简单响应。如果可以,那么我应该更新内部对象状态,如果可以,我现在什么也不做。 这是我的类,它将String的列表作为参数,并返回要在控制器中处理的对象的Future列表。 是列表类型的列表,但我希望它只是一个简单的响应列表。 1)如何简化和纠正我的代码以获得响应列