我的监听器正在填充缓存(Terracota),如果应用程序启动时出现问题,将抛出ExceptionInInitializerError。我想获取服务器名称(就像HttpServletRequest上的getServerName()一样)以了解发生了什么。
如何获取这些信息?
import javax.servlet.ServletContextEvent;
import net.f.core.service.util.CacheUtil;
import org.apache.log4j.Logger;
import org.springframework.web.context.ContextLoaderListener;
/**
* Application Lifecycle Listener implementation class OnContextLoadListener
*
*/
public class OnContextLoadListener extends ContextLoaderListener {
private static final Logger log = Logger
.getLogger(OnContextLoadListener.class);
@Override
public void contextDestroyed(
@SuppressWarnings("unused") ServletContextEvent sce) {
// nothing here
}
@Override
public void contextInitialized(
@SuppressWarnings("unused") ServletContextEvent sce) {
try {
CacheUtil.getInstance();
} catch (ExceptionInInitializerError e) {
log.error("Problem with application start!", e);
// notify me
}
}
ContextLoaderListener
,然后覆盖它的方法。这样做留下来的只是一个普通的ServletContextListener
,没有任何Spring行为。 - skaffman