I'm writing a Bolt where a bolt will send data to Kinesis. The library is
AmazonClient. If I initialize AmazonClient outside of prepare() method I
will get this error

*16:53:32.561* [stderr]Exception in thread "main"
java.lang.RuntimeException: java.io.NotSerializableException:
com.amazonaws.services.kinesis.AmazonKinesisClient*16:53:32.561*
[stderr]        at 
backtype.storm.utils.Utils.javaSerialize(Utils.java:109)*16:53:32.561*
[stderr]        at 
backtype.storm.topology.TopologyBuilder.createTopology(TopologyBuilder.java:107)*16:53:32.561*
[stderr]        at 
io.conde.data.SparrowFirehoseTopology.main(SparrowFirehoseTopology.java:93)*16:53:32.561*
[stderr]Caused by: java.io.NotSerializableException:
com.amazonaws.services.kinesis.AmazonKinesisClient*16:53:32.561*
[stderr]        at 
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)*16:53:32.561*
[stderr]        at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)*16:53:32.562*
[stderr]        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)*16:53:32.562*
[stderr]        at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)*16:53:32.562*
[stderr]        at 
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)*16:53:32.562*
[stderr]        at 
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)*16:53:32.562*
[stderr]        at backtype.storm.utils.Utils.javaSerialize(Utils.java:105)



So I have to do it like this to not get the Exception

@Override
public void prepare(Map map, TopologyContext topologyContext,
OutputCollector outputCollector) {
    this.amazonKinesisClient = new AmazonKinesisClient(new
CustomCredentialsProviderChain(), new ClientConfiguration());
    this.random = new Random();
    this.outputCollector = outputCollector;
    this.decoder = Charset.forName("UTF-8").newDecoder();
}

But then I won't be able to inject that and unit test that properly. How do
I overcome this? I'm using Storm 0.10

Reply via email to