Note: as of Grails 2.4.x
Confirmed with grails 3.1.0.RC1
Checking the environment
Bootstrap.groovy
:
import grails.util.Environment
class BootStrap {
def init = { servletContext ->
println "Initializing..."
if (Environment.current == Environment.DEVELOPMENT) {
println "Development"
} else if (Environment.current == Environment.TEST) {
println "Test"
} else if (Environment.current == Environment.PRODUCTION) {
println "Production"
}
}
/**
* Note: this is not guaranteed to be called by the servlet container
*/
def destroy = {
printn "De-initializing..."
if (Environment.current == Environment.DEVELOPMENT) {
} else if (Environment.current == Environment.TEST) {
} else if (Environment.current == Environment.PRODUCTION) {
}
}
}
Using a Service
(or accessing other Spring beans)
Bootstrap.groovy
:
import org.springframework.web.context.support.WebApplicationContextUtils
class BootStrap {
def init = { servletContext ->
def springContext = WebApplicationContextUtils.getWebApplicationContext(servletContext)
println "Initializing..."
def service = springContext.getBean("notificationService")
service.sendAdminNotification("[UP] started")
}
/**
* Note: this is not guaranteed to be called by the servlet container
*/
def destroy = { servletContext ->
printn "De-initializing..."
def springContext = WebApplicationContextUtils.getWebApplicationContext(servletContext)
if (Environment.current == Environment.DEVELOPMENT) {
} else if (Environment.current == Environment.TEST) {
} else if (Environment.current == Environment.PRODUCTION) {
def service = springContext.getBean("notificationService")
service.sendAdminNotification("[DOWN] destroyed")
}
}
}
Checking database connections
- DataSource
- MongoDB
- spring-cloud connector
Bootstrap.groovy
:
import org.springframework.web.context.support.WebApplicationContextUtils
import org.springframework.cloud.CloudFactory
import org.springframework.cloud.CloudException
class BootStrap {
def grailsApplication
def init = { servletContext ->
def springContext = WebApplicationContextUtils.getWebApplicationContext(servletContext)
println "Initializing..."
println "Datasource: " + grailsApplication.config.dataSource
println "Mongo: " + grailsApplication.config.grails.mongo
// Get bean ref
def mongo = springContext.getBean("mongo")
// Get cloud info
def cloud = null
def dbName = "mydb"
try {
cloud = new CloudFactory().cloud
// Get database name for bound service
def mongoInfo = cloud?.getServiceInfo('myservice-db')
dbName = mongoInfo?.database
println "Got dbName from cloud info: " + dbName
} catch (CloudException e) {
println "ERROR getting cloud: " + e
}
def db = mongo.getDB(dbName)
println "Got db: " + db
}
}