xml文件中的常见bug

BUG代码

一:

java.lang.Exception: DEBUG STACK TRACE for PoolBackedDataSource.close().  

    at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.close(AbstractPoolBackedDataSource.java:417)  
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
    ......  
java.lang.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE  
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:566)  
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:234)  

    .....  

主要原因就是Xml代码 添加了 destroy-method属性
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">  
//略去数据源相关信息的配置  
</bean>  
Spring在读取这个配置文件以后,需要根据这些信息来实例化一些类,然后内部再根据中间的那些配置信息来实际构造数据源。

可是来了个问题。不能保证这里的ComboPooledDataSource数据源一定是可用的,也不能保证close方法一定能关闭连接,

对吧?Spring本身不能检查这个类是否 真实有效,毫无Bug。实际上呢,也检查不了。同样的,close方法是否有效,

也需要进行检查所。当不能确定destory-method的情况下,把该项删除,由程序自主选择关闭方法,这样Debug就不会报错了.

二:

2016-12-22 17:55:04,520 - WARN [localhost-startStop-1] org.springframework.beans.factory.support.DisposableBeanAdapter

- Invocation of destroy method 'close' failed on bean with name 'sqlSessionService'java.lang.UnsupportedOperationException:

Manual close is not allowed over a Spring managed SqlSession

    at org.mybatis.spring.SqlSessionTemplate.close(SqlSessionTemplate.java:310)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke(Method.java:498)

解决方案:

<bean id="sqlSessionService" class="org.mybatis.spring.SqlSessionTemplate" scope="prototype">

    <constructor-arg index="0" ref="sqlSessionFactoryService" />

</bean>

# 增加scope="prototype"

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用\[1\],当在pom.xml文件添加以下依赖时,project标签会报错: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.8.RELEASE</version> </parent> ``` 为了解决这个问题,可以在parent标签添加`<relativePath>`标签,如下所示: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.8.RELEASE</version> <relativePath></relativePath> </parent> ``` `<relativePath>`标签的作用是指定查找路径。在Maven,查找依赖的顺序是先查找上级目录的pom.xml文件,然后是本地仓库,最后是远程仓库。如果不指定`<relativePath>`,默认会去上级目录的pom.xml文件查找。而如果直接加上`<relativePath>`标签并留空,意味着直接去本地仓库查找,然后再去远程仓库查找。 所以,通过添加`<relativePath>`标签并留空,可以解决pom.xml文件project标签报错的问题。 #### 引用[.reference_title] - *1* [一. 常见bug——pom文件的project标签爆红](https://blog.csdn.net/HSH541/article/details/125897630)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值