2014-07-07 141 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。

相關問題