kafka报错异常could not be established解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka报错异常could not be established解决方案相关的知识,希望对你有一定的参考价值。

参考技术A [ 第一章 初识kafka ]

1. 重新配置kafka的配置文件/config/server.properties

        listeners 为监听端口

        advertised.listeners: 对外的代理地址

        listeners=PLAINTEXT://0.0.0.0:9092 # 允许外部端口链接

        advertised.listeners=PLAINTEXT://192.168.133.128:9092 #外部代理地址

 2. 配置好后重启kafka服务

        bin/kafka-server-start.sh config/server.properties &

 3.查看是否启动成功:

         jps

  4.重新启动生产者,恢复正常

        bin/kafka-console-producer.sh --broker-list localhost:9092 --topic six

mybatis报错could not be found for the javaType

一、报错栈:

Cause: java.lang.IllegalStateException: Type handler was null on parameter mapping for property '__frch_recordId_0'. It was either not specified and/or could not be found for the javaType (com.xxx.RelUser) : jdbcType (null) combination.
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)
	at com.sun.proxy.$Proxy95.selectList(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223)
	at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80)
	at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:152)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85)
	at com.sun.proxy.$Proxy460.pagingQueryShareRecord(Unknown Source)

二、原因:

先说这个报错直接原因:是因为 Mybatis 将对象绑定到 mapper sql 的元素时,出现了 javaType 和 jdbcType 丙丁(映射)失败的问题。
具体分析:

Mybatis mapper xml 写法如下:

<where>
            <if test="recordIdList != null and !recordIdList.isEmpty()">
                id IN
                <foreach collection="recordIdList" item="recordId" open="(" separator="," close=")">
                    #recordId
                </foreach>
            </if>
            ...
</where>

其中 recordIdList 是一个 List<Integer>
翻这个接口调用栈源码,一直没看出来啥问题,除了最上层函数,下层函数每一个单元测试都没问题。
后来断点打在最上层函数的入参,发现了原因,原来是运行时传参的问题。recordIdList 是前置一个 sql 抛出来的结果集,这个前置 SQL 的方法返回值我也定义成 List<Integer>,没毛病,但是 mapper 里边用了 resultmap = RelUser,导致返回实际是一个 List<RelUser> 这样的形式,方法定义接收是 List<Integer>,实际 return 是List<RelUser> 为什么不报错?那是因为 Mybatis 是照着 resultMap / resultType 来填充 List 的,然后把对象的引用(指针) 挂到函数的返回上,因为是直接挂指针了,没有强制转换/参数校验,所以并不会报错。但是拿 List<RelUser> 再到下一句 sql 挂成 List<Integer>,那 Mybatis 的 <foreach collection="recordIdList" item="recordId" 就会绑定失败。

三、解决办法:
把第一句 sql resultMap 改成 resultType="Integer" 即可解决。

以上是关于kafka报错异常could not be established解决方案的主要内容,如果未能解决你的问题,请参考以下文章

报错“Field pet in XXX.HelloController required a bean of type ‘XXX.Pet‘ that could not be found.“(代码片段

mybatis报错could not be found for the javaType

mybatis报错could not be found for the javaType

mybatis报错could not be found for the javaType

Unity导入图片报错File could not be read

Unity导入图片报错File could not be read