2014-07-07 142 views
2

在java中实现了一个非常简单的apache风暴拓扑后,我遇到了一个导致一些混淆的NPE。apache风暴如何创建它的螺栓实现

这基本上是我的主要方法:

TologyBuilder builder = new TopologyBuilder(); 
builder.setSpout("spout", new CustomSpout(true), 4); 
final CustomBolt bolt = new CustomBolt(); 
builder.setBolt("bolt", bolt, 1).shuffleGrouping("spout"); 

LocalCluster cluster = new LocalCluster(); 
Map conf = new HashMap(); 
conf.put(Config.TOPOLOGY_WORKERS, 10); 
cluster.submitTopology("test", conf, createTopology()); 

CustomBolt扩展AbstractBasic类并实现IRichBolt。他们有这些领域:

abstract class AbstractBasic { 
    A a; 
    B b; 
} 

CustomBolt extends AbstractBasic implements IRichBolt { 
    A anotherA; 
    C c; 
    CustomBolt() { 
     this.anotherA = new A(true); 
     this.a = new A(false); 
     this.b = new B(); 
     this.c = new C(); 
    } 
} 

CustomBoltexecute方法会有一些插入到所有类。然而,从AbstractBasic遗传的字段没有实例化,但其他的,直接住在CustomBolt,...

有谁知道螺栓是如何构造的,以及它如何可能的某些领域被初始化,有些不是。

回答

0

我不知道instantiatation如何与螺栓工作,但我可以找到一个很好的理由。 根据我的理解,我们在分布式环境中运行拓扑并避免对共享变量(即从父类继承的类级别变量)的并发修改,父变量可能已经在子类中设置为null。

相关问题