zoukankan      html  css  js  c++  java
  • Java异常处理——请求能进到接口,但是服务没有响应?

    问题描述:服务正常启动,其他接口调用正常,涉及到有数据库的接口,被多次请求后,前面几次能正常响应,请求几次后服务未响应,查看日志服务请求能进到接口,但是没有响应?

    查找原因:服务重启后,又能正常请求响应,几次后又出现未响应。

    根本原因:redis开启了事务,方法未设置@Transactional(rollbackFor = Exception.class),导致事务没有提交,占用连接池未释放,数据库连接一直再等待资源,因此没有响应值

    我的redis配置信息:

    <bean id="redisTemplateTx" class="org.springframework.data.redis.core.RedisTemplate" primary="false">
            <property name="enableTransactionSupport" value="true" />//开启事务
            <property name="connectionFactory" ref="jedisConnFactoryTx" />
            <property name="keySerializer">
                <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
            </property>
            <property name="valueSerializer">
                <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
            </property>
            <property name="hashKeySerializer">
                <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
            </property>
            <property name="hashValueSerializer">
                <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
            </property>
        </bean>

    解决方案:在调用方法的业务处理层(service)方法上增加事务:@Transactional(rollbackFor = Exception.class)

        @Transactional(rollbackFor = Exception.class)
        @Override
        public Object addDo(OrderVoExtend orderVO, String openid, String wxAppId) throws Exception {
    }
  • 相关阅读:
    进程与线程的一个简单解释
    如何更优雅的写出你的SQL语句
    SQL 性能优化梳理
    如何写出让同事无法维护的代码?
    Linux配置IP常用命令
    Linux中防火墙命令笔记
    蓝牙技术的工作原理及用途
    别死写代码,这 25 条比涨工资都重要
    搞清这些陷阱,NULL和三值逻辑再也不会作妖
    计算机网络:TCP和UDP的对比
  • 原文地址:https://www.cnblogs.com/ouyanxia/p/14554801.html
Copyright © 2011-2022 走看看