3 Hazelcast Factory Beans - Reference Documentation
Authors: Bud Byrd, Anil Manthina, Aaron Brown
Version: 1.0.3
Table of Contents
3 Hazelcast Factory Beans
The plugin provides a set of factory beans which can be used to easily create sturctures such asMap, 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 ingrails-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') } }} }
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 ingrails-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' } }} }
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 ingrails-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' } }} }
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 ingrails-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' } }} }
@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")
}
}
}
}