我希望能够从我的servlet容器中运行的web应用程序中获得所有Spring应用程序上下文的列表。这样我就可以重新初始化上下文,而无需重新启动或重新加载我的容器或webapps。
这个是可能的吗?如果是这样的话,是怎么做的?有没有办法通过servlet API获得在servlet容器实例上运行的所有Servlet上下文的列表?
发布于 2009-02-16 07:41:13
编辑:这并没有什么实际的帮助,因为每个web.xml都必须有相同的监听器
您可以让ServletContextAttributeListener监听标准WebApplicationContext 属性的插入,然后通知某个集中式监视器?
未测试:
public class SpringWACListener implements ServletContextAttributeListener {
public void attributeAdded(ServletContextAttributeEvent scab) {
if (WebApplicationContext.
ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE.
equals(scab.getName()) {
myCentralisedMonitor.notify("added");
}
}
// same for others
}
发布于 2009-02-16 07:37:57
不-对这两个问题都是。
对所有servlet上下文的访问将是一个安全问题。您将能够检查和/或操作其他and应用程序。唯一知道所有servlet上下文的就是容器本身。但这是内部实现,没有api。
Spring上下文访问是类似的,但是如果你指的是一个webapp中的所有spring上下文,它们将创建一个层次结构-例如控制器的层次结构。在根spring上下文中实现org.springframework.context.ApplicationListener
as bean (由web.xml
中配置的org.springframework.web.context.ContextLoaderListener
初始化)可以通知您启动、停止、关闭或刷新的上下文。
发布于 2009-03-30 17:48:07
https://stackoverflow.com/questions/553546
复制相似问题