InitializeContext.java
package emissary.server;
import emissary.core.EmissaryException;
import emissary.directory.EmissaryNode;
import jakarta.servlet.ServletContextEvent;
import jakarta.servlet.ServletContextListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Initialize the application from inside the webapp context This initializer performs the following actions
* <ol>
* <li>Create and fill the emissary.pool.AgentPool</li>
* <li>Create the emissary.pool.MoveSpool</li>
* <li>Initialize the Charset conversion subsystem</li>
* <li>Initialize the Metadata Dictionary subsystem</li>
* <li>Deploy any places configure to run on this instance This is determined by looking for an appropriate config file
* or stream based on the following preferences:
* <ol>
* <li>node-ENV{{@value emissary.directory.EmissaryNode#NODE_NAME_PROPERTY} -ENV{
* {@value emissary.directory.EmissaryNode#NODE_PORT_PROPERTY} .cfg</li>
* <li>node-ENV{{@value emissary.directory.EmissaryNode#NODE_NAME_PROPERTY} .cfg</li>
* <li>node-ENV{os.name}.toLowerCase().cfg</li>
* <li>node.cfg</li>
* </ol>
* </li>
* </ol>
*
* @see emissary.directory.EmissaryNode
*/
// TODO: can we annotate this instead with @WebListener
public class InitializeContext implements ServletContextListener {
private static final Logger logger = LoggerFactory.getLogger(InitializeContext.class);
private final EmissaryNode node;
public InitializeContext(EmissaryNode node) {
super();
this.node = node;
}
@Override
public void contextInitialized(final ServletContextEvent sce) {
// ServletContext sc = sce.getServletContext();
logger.info("Emissary Node services starting for " + node);
try {
node.configureEmissaryServer();
} catch (EmissaryException ex) {
logger.error("Unable to start Emissary Node services", ex);
}
}
@Override
public void contextDestroyed(final ServletContextEvent sce) {
logger.debug("Received servlet context destroyed event");
}
}