package org.iplantc.phyloviewer.viewer.server; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.iplantc.phyloviewer.viewer.server.db.ImportTreeData; import org.postgresql.ds.PGPoolingDataSource; public class DatabaseListener implements ServletContextListener { PGPoolingDataSource pool; @Override public void contextInitialized(ServletContextEvent contextEvent) { ServletContext servletContext = contextEvent.getServletContext(); String server = servletContext.getInitParameter("db.server"); String database = servletContext.getInitParameter("db.database"); String user = servletContext.getInitParameter("db.user"); String password = servletContext.getInitParameter("db.password"); pool = new PGPoolingDataSource(); pool.setServerName(server); pool.setDatabaseName(database); pool.setUser(user); pool.setPassword(password); pool.setMaxConnections(10); servletContext.setAttribute("db.connectionPool", pool); DatabaseTreeData treeData = new DatabaseTreeData(pool); servletContext.setAttribute(Constants.TREE_DATA_KEY, treeData); DatabaseLayoutData layoutData = new DatabaseLayoutData(pool); servletContext.setAttribute(Constants.LAYOUT_DATA_KEY, layoutData); DatabaseOverviewImage overviewData = new DatabaseOverviewImage(pool); servletContext.setAttribute(Constants.OVERVIEW_DATA_KEY, overviewData); ImportTreeData importer = new ImportTreeData(pool,servletContext.getRealPath("/images/")); servletContext.setAttribute(Constants.IMPORT_TREE_DATA_KEY, importer); } @Override public void contextDestroyed(ServletContextEvent arg0) { pool.close(); } }