When you say "pre-existing" does that mean you set the DAO before the
topology is submitted? Because that would cause a serialization exception
if no custom serializer is provided.
At which point do you create OrderDAO? Without a custom serializer this
must not be done in the Bolt's constructor, but can be done, for example,
in the Bolt's prepare method.
>From your exception it looks like you did:
class YourBolt {
private OrderDAO DAO;
public YourBolt() {
DAO = new OrderDAO();
}
}
In contrast to:
class YourBolt {
private OrderDAO DAO;
public void prepare() {
DAO = new OrderDAO();
}
}
2016-03-26 16:18 GMT+01:00 I PVP <[email protected]>:
> Dominik,
>
> Thanks for your answer.
>
> The only thing I am doing is ,inside the bolt Execute() method , calling
> OrderDAO.findbyID() that uses Hibernate to retrieve the Order from MySql
> Table.
> The Topology sets de KafkaSpout and the Bolt and that is all.
>
> When you say “...suppose you are setting the MySqlDB attribute in the
> Bolt's constructor..” Does that mean Storm requires that something
> specific is done before being able to call MySql or can I just use my
> pre-existing DAO that calls Hibernate to get the MySql data ?
>
> Thanks
>
> --
> IPVP
>
>
> From: Dominik V. <[email protected]>
> <[email protected]>
> Reply: [email protected] <[email protected]>>
> <[email protected]>
> Date: March 26, 2016 at 11:48:38 AM
> To: [email protected] <[email protected]>> <[email protected]>
> Subject: Re: What can be causing NotSerializableException ?
>
> I suppose you are setting the MySqlDB attribute in the Bolt's constructor?
> The constructor is called *before* serializing the Topology and submitting
> it to the cluster. Therefore every object within the Topology *before*
> submitting it must be serializable.
> You can solve this bei either providing a custom serializer, read more
> here: http://storm.apache.org/releases/0.10.0/Serialization.html
> Or you set the MySqlDB object in the Bolt's prepare method which is called
> *after* submitting the topology.
>
> 2016-03-26 0:06 GMT+01:00 I PVP <[email protected]>:
>
>> Hi everyone,
>>
>> What can be causing a “java.io.NotSerializableException ….Caused by:
>> java.io.NotSerializableException:
>> com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers" ?
>>
>> I new to Storm.
>> After successfully developing, deploying to cluster and seeing my first
>> 4 Topologies( all simple: KafkaSpout-> Bolt) running fine for the last 2
>> days, today I created the 5th Topology that the only difference from the
>> others is the Bolt retrieving a object from MySqlDB via a pre existing
>> application wide Hibernate DAO.
>>
>> Stack Trace :
>>
>> RUNNING locally via LocalCluster:
>> -----
>> 30239 [main] INFO b.s.d.supervisor - Starting supervisor with id
>> c4c8647d-fee5-45a4-a44d-943e5e03e3b0 at host 192.168.56.1
>> 30335 [main] ERROR o.a.s.s.o.a.z.s.NIOServerCnxnFactory - Thread
>> Thread[main,5,main] died
>> java.lang.RuntimeException: java.io.NotSerializableException:
>> com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers
>> at backtype.storm.utils.Utils.javaSerialize(Utils.java:91)
>> ~[storm-core-0.10.0.jar:0.10.0]
>> at
>> backtype.storm.topology.TopologyBuilder.createTopology(TopologyBuilder.java:107)
>> ~[storm-core-0.10.0.jar:0.10.0]
>> at <my package
>> name>.storm.topology.OrderCreatedTopology.main(OrderCreatedTopology.java:54)
>> ~[classes/:?]
>> Caused by: java.io.NotSerializableException:
>> com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
>> ~[?:1.8.0_60]
>> at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
>> ~[?:1.8.0_60]
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
>> ~[?:1.8.0_60]
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
>> ~[?:1.8.0_60]
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
>> ~[?:1.8.0_60]
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
>> ~[?:1.8.0_60]
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
>> ~[?:1.8.0_60]
>> at
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
>> ~[?:1.8.0_60]
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
>> ~[?:1.8.0_60]
>> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
>> ~[?:1.8.0_60]
>> at backtype.storm.utils.Utils.javaSerialize(Utils.java:87)
>> ~[storm-core-0.10.0.jar:0.10.0]
>> -----
>> SUBMITTING to Cluster via StormSubmitter.submitTopology()
>> -----
>> ...
>> 658 [main] INFO b.s.u.Utils - Using defaults.yaml from resources
>> 3922 [main] INFO b.s.u.Utils - Using storm.yaml from resources
>> Exception in thread "main" java.lang.RuntimeException:
>> java.io.NotSerializableException:
>> com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers
>> at backtype.storm.utils.Utils.javaSerialize(Utils.java:91)
>> at
>> backtype.storm.topology.TopologyBuilder.createTopology(TopologyBuilder.java:107)
>> at <my package
>> name>.storm.topology.OrderCreatedTopology.main(OrderCreatedTopology.java:47)
>> Caused by: java.io.NotSerializableException:
>> com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
>> at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
>> at
>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
>> at
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
>> at
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
>> at
>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
>> at
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
>> at
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
>> at
>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
>> at
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
>> at
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
>> at
>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
>> at
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
>> at
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
>> at
>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
>> at
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
>> at
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
>> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
>> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
>> at backtype.storm.utils.Utils.javaSerialize(Utils.java:87)
>> -----
>>
>> —
>>
>>
>> Thanks
>> IPVP
>>
>>
>