storm java.io.NotSerializableException

今天编写一个storm的topology,bolt的逻辑跟之前的类似。

为了减少重复代码,我建了个抽象基类,存放bolt的公共逻辑,设计了几个abstract方法,不同的逻辑部分由子类实现。

基类日志定义如下:

private static final Logger LOG = LoggerFactory.getLogger(AbstractXxxBolt.class);

Logger是项目封装的,用于ELK的对象,考虑到子类可能用到,我把它的static去掉,AbstractXxxBolt.class改成了getClass();

本机启动topology报错:storm java.io.NotSerializableException Logger;

改回static后,启动正常;

子类中,有引用其它工程的dubbo服务接口,开始写在构造函数中初始化的,

private XxxService xxxService;

SubClass() {
   super();
   xxxService = XxxUtil.getBean(XxxService.class);
}

本机启动topology报错:storm NotSerializableException com.alibaba.dubbo.common.bytecode.proxy0

解决方法:

将子类构造函数中的赋值去掉,抽象一个doPrepare()方法,在基类的prepare()方法中调用

子类实现doPrepare(),在其中xxxService = XxxUtil.getBean(XxxService.class);

-----------------------------------------------------------------------------------------------------------------------------

The supervisor instantiates the bolts, sends them to the workers, and then calls prepare() on all of them. Therefore, anything
that isn‘t serializable that is instantiated before prepare() causes this process to fail.

-----------------------------------------------------------------------------------------------------------------------------

参考:

https://blog.csdn.net/wanghai__/article/details/8997895

原文地址:https://www.cnblogs.com/cdfive2018/p/9710801.html

时间: 2024-10-16 14:39:32

storm java.io.NotSerializableException的相关文章

tomcat启动报java.io.NotSerializableException或者WriteAbortedException错误解决方法

NotSerializableException或者WriteAbortedException 运行tomcat下面的 ssh项目,启动,打开某页面(让session起作用),停止:再启动,有可能会报类似如下的错误: org.apache.catalina.session.StandardManager doLoad 严重: IOException while loading persisted sessions: java.io.WriteAbortedException: writing a

java.io.NotSerializableException:异常

java.io.NotSerializableException:异常,创建的pojo类未实现Serializable接口,启动服务器会报此异常,但是貌似对代码功能没影响,或者说暂时未发现有什么影响. 要解决此异常,可通过实现该接口解决. import java.io.Serializable; public class DeptPojo implements Serializable{ private String deptId; private String deptName; privat

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException

问题描述: 严重: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.sh.rgsoft.blogonline.bean.Blog java.io.WriteAbortedException: writing aborted; java.io.NotSerializableExcept

java.io.NotSerializableException

在序列化非静态内部类的时候发现序列化不成功,出现下列异常: java.io.NotSerializableException: com.tang.sharedpreferencesdemo.MainActivity W/System.err( 2356):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364) W/System.err( 2356):     at java.io.Object

Storm java.io.FileNotFoundException: File '../stormconf.ser' does not exist

This bug will kill supervisors Affects Version/s: 0.9.2-incubating, 0.9.3, 0.9.4 Fix Version/s: 0.10.0, 0.9.5 问题背景 最近发现刚搭起的Storm集群,没过多久,Supervisor 便悄然死去了一大半.查看死去Supervisor的log,发现java.io.FileNotFoundException: File '../stormconf.ser' does not exist异常.

java.io.NotSerializableException 没有序列化异常

在实现MyBatis的二级缓存时,遇到此异常,其原因是实体类未实现Serializable接口. 异常: org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializableException: com.itheima.domain.User 解决: 原文地址:https://www.cnblogs.com/weiqang/p/12203629.html

spark error Caused by: java.io.NotSerializableException: org.apache.hadoop.hdfs.DistributedFileSystem

序列化问题多事rdd遍历过程中使用了没有序列化的对象. 1.将未序列化的变量定义到rdd遍历内部.如定义入数据库连接池. 2.常量定义里包含了未序列化对象 ,提出去吧 如下常量要放到main里,不能放到rdd的遍历中. val HBASE_TABLE = sparkModel.getUserParamsVal("hbbase_table", "default_table_name") 原文地址:https://www.cnblogs.com/shaozhiqi/p/

JDK框架简析--java.io包中的输入输出类库

题记 JDK,Java Development Kit. 我们必须先认识到,JDK只是,仅仅是一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说,还是在一个层级上,它们都是需要被编译成字节码,在JRE中运行的,JDK编译后的结果就是jre/lib下的rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列所有文章基于的JDK版本都是1.7.16. 本节内容 Java IO库提供了一个可以称之为链

Java IO流(四)

****************************转换流***************************** 作用: 把字节流 转换成 字符流 别人给你一个字节流, 但是我们想以字符为单位读和写,这时需要使用转换流,转换一下 字节 字符 输入 InputStream Reader InputStreamReader 输出 OutputStream Writer OutputStreamWriter 演示代码: package com.chapter13.演示字节读; import j