(Quick Reference)

3 Hazelcast Factory Beans - Reference Documentation

Authors: Bud Byrd, Anil Manthina, Aaron Brown

Version: 1.0.3

3 Hazelcast Factory Beans

The plugin provides a set of factory beans which can be used to easily create sturctures such as Map, List, and Set, that are integrated with Hazelcast.

3.1 HazelcastMapFactoryBean

The HazelcastMapFactoryBean can be used to create Hazelcast Maps as beans by declaring them in grails-app/init/<package>/Application.groovy:

class Application extends GrailsAutoConfiguration {
    static void main(String[] args) {
        GrailsApp.run(Application, args)
    }

@Override Closure doWithSpring() {{-> 'myMap'(HazelcastMapFactoryBean) { instanceName = 'myInstance' mapName = 'myMap' }

'myClass'(MyClass) { // For Maps, it may be best to reference // rather than use @Autowired due to bean // validation logic. myMap = ref('myMap') } }} }

The bean can then be used in other managed Spring beans:

class MyClass {
    /**
     * MyMap
     */
    Map<String, Object> myMap

cache(String key, Object value) { myMap[(key)[ = value }

Object fetch(String key) { return myMap[key] } }

3.2 HazelcastSetFactoryBean

The HazelcastSetFactoryBean can be used to create Hazelcast Sets as beans by declaring them in grails-app/init/<package>/Application.groovy:

class Application extends GrailsAutoConfiguration {
    static void main(String[] args) {
        GrailsApp.run(Application, args)
    }

@Override Closure doWithSpring() {{-> 'myLSet'(HazelcastSetFactoryBean) { instanceName = 'myInstance' setName = 'mySet' } }} }

The bean can then be used in other managed Spring beans:

class MyClass {
    /**
     * MySet
     */
    @Autowired
    Set<String> mySet

void process() { mySet.putAll('foo', 'bar', 'baz') String foo = myList[0] myList << ['foo'] myList[0] != myList[-1] } }

3.3 HazelcastListFactoryBean

The HazelcastListFactoryBean can be used to create Hazelcast Lists as beans by declaring them in grails-app/init/<package>/Application.groovy:

class Application extends GrailsAutoConfiguration {
    static void main(String[] args) {
        GrailsApp.run(Application, args)
    }

@Override Closure doWithSpring() {{-> 'myList'(HazelcastListFactoryBean) { instanceName = 'myInstance' listName = 'myList' } }} }

The bean can then be used in other managed Spring beans:

class MyClass {
    /**
     * MyList
     */
    @Autowired
    List<String> myList

void process() { myList.putAll('foo', 'bar', 'baz') String foo = myList[0] myList << ['foo'] myList[0] == myList[-1] } }

3.4 HazelcastLockFactoryBean

The HazelcastLockFactoryBean can be used to create Hazelcast Locks as beans by declaring them in grails-app/init/<package>/Application.groovy:

class Application extends GrailsAutoConfiguration {
    static void main(String[] args) {
        GrailsApp.run(Application, args)
    }

@Override Closure doWithSpring() {{-> 'myLLock'(HazelcastLockFactoryBean) { instanceName = 'myInstance' lockName = 'myLock' } }} }

The bean can then be used in other managed Spring beans:

@Slf4j
class MyClass {
    /**
     * MyLock
     */
    @Autowired
    ILock myLock

void process() { if (!lock.tryLock(60000, TimeUnit.MILLISECONDS, 600000, TimeUnit.MILLISECONDS)) { log.warn("Lock failed.") return }

try { // … } catch (Exception e) { // … } finally { try { lock.unlock() log.trace("Mutex lock released") } catch (IllegalMonitorStateException ignored) { log.warn("lock expired") } } } }