Thanks! All the answers give me good idea. Here's why I need this list be sharable. One bolt needs the list for computation. Another bolt will periodically update the list. In other words, the list is changeable.
I tried passing it in conf but there are some 3rd party libs in the wrapper. Anyway, I also need to improve the topology. Separate bolt to two etc. That way, it would be easier to handle that cache. One more question, I thought about giving hazelcast a try. Create local node and then the bolts will have clients. What do you think? Sent from my Android phone On Dec 4, 2014 9:14 PM, "Kushan Maskey" <[email protected]> wrote: > Hi Eyal, > > I had the similar issue earlier. Static objects are not a good way of > passing the variables around in Storm due to clustered nature of the Storm. > You will see null for all the static variables. > > This is how I implemented mine, for instance I wanted to pass around the > server properties such and host name and username/password. I read the > properties file and then created a map of these properties then set it into > the Config object. Like below. > > *In topology:* > > Map<Stirng, Stirng> map = new HashMap(); > map.put("hostname", "localhost"); > map.put("username", "testuser"); > map.put("password", "testpassord"); > map.put("port", "1234"); > > Config config = new Config(); > > config.put("MY_MAP", map) > *In Bolts:* > > public void prepare(Map stormConf, TopologyContext context) { > > HashMap<Stirng, Stirng> map = stormConfig.get("MY_MAP"); > > } > This how i resolved my problem.Try that if that helps. > -- > Kushan Maskey > 817.403.7500 > M. Miller & Associates <http://mmillerassociates.com/> > [email protected] > > On Thu, Dec 4, 2014 at 1:01 PM, Eyal Golan <[email protected]> wrote: > >> Hi all, >> I am newbie with Storm and having some issues with static objects in the >> topology. >> In the main class, where I set the topology, I also set a static object. >> It's actually a wrapper for a collection of strings. >> This object needs to he shared between different bolts. >> It's big so I want it to be only one instance. >> >> The problem is that when a bolt tries to get this static instance: >> example - MyMain.Shared... It's null. Although I instantiated it in the >> main method. >> >> I guess I'm doing something wrong. >> >> Thanks for any assistance. >> >> Eyal >> >> Sent from my Android phone >> > >
