立即注册 登录
About云-梭伦科技 返回首页

mituan2008的个人空间 https://www.aboutyun.com/?1420 [收藏] [复制] [分享] [RSS]

日志

storm与spring框架集成问题

已有 1659 次阅读2015-5-11 11:50 | spring

在进行storm与spring集成时,本来想着一次就能成功,抱着很大的希望可是运行时竟然报了个java.io.NotSerializableException的异常。该异常要求被依赖注入的jar包实现序列化接口,但那些jar包都是别人开发的你不能一个一个都改掉源码才能用到项目里。

  再网上找一下还真有人遇到类似的问题,具体原因是对storm的spout和bolt的生命周期理解的不够深刻。

  一般来说spout/bolt的生命周期如下:

  1.在提交了一个topology之后(在nimbus所在的机器), 创建spout/bolt实例(spout/bolt在storm中统称为component)并进行序列化.

  2.将序列化的component发送给所有的任务所在的机器

  3.在每一个任务上反序列化component.

  4.在开始执行任务之前, 先执行component的初始化方法(bolt是prepare, spout是open).

  因此component的初始化操作应该在prepare/open方法中进行, 而不是在实例化component的时候进行.

  按照这种说法进行改造,结构该问题消失了。但接下来又有了新的问题:

  Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog.

  这个异常网上搜索之后发现原来是由于*.xml文件编码的问题。原因是在从其他项目里或者编辑工具编辑时,在文件编码中加入了BOM头的原因,于是用notePad++打开xml文件选择去掉BOM头信息,重新进行保存即可。再次运行时一切ok。


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条