网店版重生系列:多数据源单sqlMapClient导致NullPointerException问题跟踪

深度学习【46】pix2pixHD 英伟达的pix2pixHD,能够合成高清的2048*1024图片,简直振奋人心。pix2pixHD是我之前介绍过的pix2pix的改进版本,使用多由粗到精的G网络和多尺度D网络(每个D网络都是用了pix2pix中同样的patch技术)。论文一开始用pix2pix尝试合成更高分辨率的图片,但发现效果不好,训练也很不稳定。所以就对pix2pix进行了一顿魔改。我们来看看他们是怎么改进的。由粗到精的G网络 阅读详情

从前面的《网店版重生系列:都是Spring配置中自动注入惹的祸》中我们可以看出一些有关datasource、sqlMapClientTemplate、sqlMapClient的相关配置信息;整体而言,采取的方式为:
其一,单实例sqlMapClient,只配置configLocation属性,不配置datasource;
其二,sqlMapClientTemplate中配置动态datasource、sqlMapClient,然后在Dao中注入sqlMapClientTemplate;
其三,由于获取用户与Mysql数据库之间的对应关系是保存在Oracle主库中,所以不适用动态数据源,而是直接通过配置sqlMapClient、JNDI datasource来完成注入;

在这种配置方式下,应用初期偶尔会出现报NullPointerException异常信息,堆栈信息如下:

开始的时候,我们还以为是Mysql数据库首次连接出现Time Out所致,但细想下不对啊!如果是这样堆栈信息中应该会包括TimeOut相关的信息才对啊,但是没有这个信息,再看看堆栈信息,是从SqlMapSessionImpl.setUserConnection中抛出来的,跟踪下源码,问题很快就被定位了,原因是SqlMapSession被关闭所致;来看看最为关键的这段代码先:

跟踪代码时发现,其实这段代码被调用了多次,第一次执行时没有任何问题,第二次执行时也没问题,异常信息其实是第三次执行时抛出,直接原因是此时SqlMapSession的实例已被close;根本原因呢还是因为单sqlMapClient实例所致!

在分布式改造过程中,为了避免对用户、Mysql分库信息对应关系的强耦合,没有采取固定的hash取模或者是一致hash算法,而是将用户、Mysql分库信息进行了持久化存储,保存于主库Oracle中,然后再配合Cache优化性能;这样就出现了一种应用场景:
当我们在通过Ibatis在Mysql库中执行SQL语句时,因为要通过datasource获取connection,所以可能需要先访问Oracle主库以便获取当前用户所对应的Mysql数据库信息,而这两者的SQL操作都是通过Ibatis进行的,所以我们上面提到的那段代码就会被多次执行了,而每次SQL执行完毕之后都会到finally部分调用session.close();session的实例是和当前线程绑定的,所以其实那几次代码段的执行都是使用的同一个session;

问题根源都找到了,解决也很简单:针对JNDI datasource、动态datasource区分不同的sqlMapClient,也即配置两个单独的sqlMapClient实例即可;

PCL学习笔记(四)——点云曲面重建 文章目录一、凸包算法二、 单纯的点云数据固然很好,但仅仅是点的话仍是不够的,因为这不利于我们后续对实体对象的渲染与各种应用,如计算实体的表面积、体积等等,所以这就需要我们对实体进行点云的曲面重建。 一、凸包算法 在计算机图形学中,凸包是指在任意维空间中包含某一有限点集P的最小凸集,它由凸包顶点构成,在二维上其表现形式为一个凸多边形,而在三维上则表现为一个凸多面体。在二维层面上来讲,最常用的凸包算法有Graham扫描法和Jarvis卷包裹法,但前者并不适用于三维层面,后者倒是可以扩展到三维。除此之外,在 阅读详情

相关推荐

SAP 批量处理分包事后调整:BAPI_GOODSMVT_CREATE 关键参数与避坑指南

本文详细解析了SAP系统中使用BAPI_GOODSMVT_CREATE进行分包事后批量调整的关键参数配置与常见错误排查。重点介绍了GOODSMVT_CODE设置为'07'的必要性、GOODSMVT_ITEM结构体的正确配置方法,以及如何避免M7384、M7386等常见错误,帮助用户高效处理分包业务中的数量调整问题。

weixin_29276847的博客 566

多数据源spring 报java.lang.NullPointerException

在调用test.java的时候就会报 Exception in thread "main" java.lang.NullPointerException at cn.m_solution.mds.mds40.service.MDS40T01Service.getStudent(MDS40T01Service.java:23) at cn.m_solution.mds.mds40.se

shoubuliaolebu的专栏 1384

Ubuntu20.04复现instant-ngp,自建数据集,导出mesh

本次仅仅记录一下自己复现instant-ngp的过程,如果里面的参考有冒犯到原博主请联系我删除,本人也是nerf的小白一枚,可以一起交流学习神经辐射场,希望大家在复现instant-ngp的时候少走一些坑,情况允许下可以去复现一下npg-pl和nerfStudio,最后希望大家一起进步。看到一些博主说葵司的npg_pl也不错,而且葵司是台湾人,在youtube上也有讲解的视频。渲染的效果还是可以的,相对于源码来说还是有点模糊,我一些参数也没有设置,直接就拉进来进行渲染,速度是非常快的。

weixin_59961223的博客 9451

解决NullPointerException的全面指南

总的来说,解决NullPointerException需要我们对代码进行仔细的审查,找出可能导致null值的地方,并采取适当的措施来防止这种情况的发生。同时,Java 8引入的Optional类也为处理可能为null的值提供了一种更优雅、更安全的方式。在上面的例子中,我们使用了Optional类来包装可能为null的字符串。然后,我们可以使用isPresent()方法来检查字符串是否存在,如果存在,我们可以使用get()方法来获取它。在上面的例子中,我们创建了一个null的字符串对象,然后尝试调用它的。

理论都是虚的,代码才是王道。 936

重磅!Repo Wiki!

RepoWiki是Qoder平台的智能文档生成功能,通过静态代码分析自动提取项目架构、模块依赖和核心逻辑,并持续追踪代码变更保持文档同步。其工作流程分为四个阶段:1)代码扫描与AST解析;2)结构分析与依赖映射;3)文档智能生成;4)增量更新机制。支持多种编程语言,能识别设计模式并推断技术决策,适用于新项目搭建和遗留系统维护。优势在于降低理解成本和提高开发效率,但存在文件数量限制和依赖Git的局限性。典型应用场景包括自动生成架构图、API手册和团队知识沉淀。

ayusong870的博客 4023

MATLAB/Simulink BLDC电机控制模型搭建:六步换相与速度环实战

无刷直流电机(BLDC)控制是电机驱动领域的核心技术,其六步换相原理通过霍尔信号控制逆变器开关,使定子磁场与转子磁场保持垂直以产生最大转矩。在MATLAB/Simulink中搭建BLDC控制系统,需从电机本体建模入手,结合PWM占空比调节和速度环PI控制器,实现速度闭环与波形观测。该技术广泛应用于电动工具、无人机电调和伺服驱动器等场景。本文详细解析BLDC六步换相逻辑、反电动势建模及Simulink分层设计方法,帮助读者掌握从零搭建完整控制模型的工程实践。

weixin_28273593的博客 207

org.springframework.jdbc.UncategorizedSQLException

今天在Struts+ibatis中遇到这样一个问题,老是抛出下面异常:[2011/05/03 14:30:45][ERROR][DefaultExceptionHandler] 例外ハンドラが例外を検知しましたorg.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLExceptionfor SQL []; SQL state [null]; error code [0];  --

Draling的专栏 1万+

从0到1构建数据分析AI Agent:数据采集、洞察生成与报告自动化

在企业数字化转型的今天,数据分析师80%的时间被消耗在重复取数、数据清洗、报表排版等低价值劳动上,真正用于深度业务洞察和决策支持的时间不足20%。本文将从核心概念、技术原理、代码实现、落地实践全维度,教你从0到1搭建一套完整的数据分析AI Agent系统,实现「用户用自然语言提需求→Agent自动采集多源数据→AI自动挖掘业务洞察→自动生成符合业务要求的多格式报告」的全链路自动化,平均可将需求响应速度从天级压缩到分钟级,释放70%以上的分析师人力成本。

AI Python 编程之道的博客 471

关于数据库连接报NullpointerException 错误的问题处理方法

  public class Sql { Connection cnn=null; ResultSet rs=null; Statement stm=null; public void connection() { try{ //加载注册SQLSever的JDBC驱动 Class.forName("com.mysql.jdbc.Driver").newInstance()...

木子的博客 2万+

万字长文带你由浅入深夯实ARM汇编基础——汇编指令及寻址方式最全梳理(附示例)!

见到汇编就害怕?读完这篇,扫除汇编拦路虎!!(示例丰富,可做手册,随手查阅!)

车载系统攻城狮 1万+

12、知识图谱数据处理与推理全解析

本文深入解析了知识图谱中的数据处理与推理技术,涵盖SHACL的多种约束类型(如值约束、范围约束、字符串约束、逻辑约束等)及其在数据质量控制中的应用,并介绍了常用的SHACL工具与实际案例。文章对比了SPARQL与SHACL的特点,探讨了RDF(S)的局限性,引出表达能力更强的OWL和OWL2语言及其在语义网和生物医学等领域的应用。此外,还阐述了规则在知识表示中的作用,包括产生式规则和Datalog规则,并总结了知识图谱中推理的重要性与典型流程,为构建高质量、可推理的知识图谱提供了全面的技术指导。

zz67890的博客 135

java jdbctemplate. 老是null,使用RowMapper和JdbcTemplate得到了NullPointerException

我有两个实体 - 用户和访问组 . 当在JdbcTemplate中使用RowMapper从MySQL数据库获取用户实体时,我有NullPointerException . 在UserRowMapper中不使用setter for accessgroup时,我没有NPE,但在AccessGroup accessGroup中为null .TableCREATE TABLE `users` (`USER...

weixin_35748962的博客 758

【GameFramework框架内置模块】17、声音(Sound)

声音(Sound)模块是管理音频的模块,比如播放、停止、修改音量等,支持淡入淡出、AudioMixer等高级设置。声音(Sound)的配置面板如下所示:所有的声音统一按照组来分,可以根据需要添加或者溢出组,声音组可以配置Agent的数量和音量等。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1912

SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; 异常解决

在使用Spring+Ibatis集成的时候,使用如下方式配置复杂类型的时候,总是报异常 resultMap class="order" id="result">       result property="orderid" column="OrderId"/>       result property="customer" column="Customer"/>       res

我的世界我的梦 4万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SqlMapClientTemplate与SqlMapClient

SqlMapClientTemplate与SqlMapClient SqlMapClientTemplate是org.springframework.orm.ibatis下的 而SqlMapClient是ibatis的 SqlMapClientTemplate是SqlMapClient的封装类.  SqlMapClient中包含着session的管理.  Sq

bestlove12345的博客 852

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

在spring中使用SqlMapClientTemplate操作数据库

SqlMapClientTemplate是SqlMapClient的封装类。 SqlMapClient是ibatis的。但SpringFramework,也很好的将其进行了集成,我们要做的就是继承SpringFramework中提供的SqlMapClientDaoSupport类即可。 在springFramework的org.springframework.orm.ibatis组件中。 S

天外来客的博客 3万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MySQL-Connector-Java居然抛出NPE

Druid DataSource 测试连接有效性问题 测试连接有效性是在destroy线程里面测试的,usePingMethod 配置为true(暂时不清楚哪里配置的),则默认走的是MSSQLValidConnectionChecker#isValidConnection检查有效性 问题是当连接关闭时,MySQL驱动的socket引用将被设置为null,继续走该方法就会报空指针异常,而空指针异常检测方法里面并未抛出,直接吞掉了。。。 猜测- 是因为三个数据源是同一个库,检测到连接中断就会将socket

特仑苏大碗茶 782

测试Spring定时任务时在Dao层报空指针异常

断点调试代码走到Dao后报空指针异常,在Dao层的代码比较简单就在方法里一句: return this.findListBySqlId("findSqlByMap", paraMap); 然后把框架封装的代码提取出来 public List findListBySqlId(String sqlId, Map paraMap)     /*     */   {     /* 195 */

Terisadeng的博客 2425

ibatis dao错误

ibatis错误解决   2010-06-01 16:48:44|  分类: java框架 |字号 订阅 1. 2009-3-25 20:52:49 org.apache.struts.action.RequestProcessor processException 警告: Unhandled Exception thrown: class java.la

啦啦啦啦 从小白起家 766

MyBatis框架应用BUG分析

文章目录连接建立(CommunicationsException)依赖注入(Can Not Auowire)对象创建(BeanCreationException)SQL元素解析 (SAXParseException)依赖注入(UnsatisfiedDependencyException)绑定异常(BindingException)SQL语法(BadSqlGrammarException)Sql完整性(SQLIntegrityConstraintViolationException)反射异常(Reflecti

雨田说码 1168

SqlMapClientTemplate

1.引入与作用          (1)引入                     Spring对第三方开元orm的支持一贯做法是使用模板模式封装一个Template类,如iBatis的SqlMapClient封装为SQLMapClientTemplate,hibernate的HibernateTemplate。              (2)作用                  

cpf2016的专栏 3844

mybatis 与ibatis的区别

话不多说直接写记录。。。 1、查询表序列号并插入到数据库当中 ibatis       select seq_tree.nextval from dual      insert into   ts_tree(node)   values(#{id})    myibatis       select seq_tree.nextval from dual

diacainiao的专栏 1104

接口中NullPointerException异常的原因及解决方法

接口中NullPointerException异常的原因及解决方法

qq_42137575的博客 7674

详解iBaits中SqlMapClientTemplate的使用

Apache iBatis(现已迁至Google Code下发展,更名为MyBatis)是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库的操作拥有更加灵活的控制,对于那些经常需要调用本地数据库函数自定义SQL语句,或是喜欢自己优化SQL执行效率的开发者来说,iBatis是一个非常不错的选择。而得到广泛应用的开源企业架构SpringFr...

weixin_34258782的博客 255

SQL注入详解(包含SQLMap用法)

这个系列讲的是整个SQL注入流程,其中包含各种手工注入姿势、SQLmap自动化注入及安全防护绕过姿势详解,现在只完成了其中一部分内容,每天都会更新,感兴趣的可以持续关注一下~

Zyu0 4946

通过Spring的配置,添加多个数据源,制作多个qlMapClient,iBatis或Hibernate的各个DAO...

通过Spring的配置,添加多个数据源,制作多个qlMapClient,iBatis或Hibernate的各个DAO, 按其所需使用不同的qlMapClient,即可连接到多个DB。 用途吗,同时使用Oracle、SQLServer、DB2、MySql,这样的可能似乎不大。 但是对于要从其他系统读取数据的接口,是有可能的。 还有就是,将OLTP和OLAP...

tao_wei162的博客 309
上一篇: 网店版重生系列:因为webwork.configuration.xml.reload遭遇Web应用性能测试瓶颈
下一篇: Spring中集成Quartz时遭遇Failure obtaining db row lock异常
sfdev
博客等级 码龄22年 468粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值