我正在构建一个Spring应用程序(它是在Geronimo服务器上运行的单例应用程序,而不是Web服务或MVC应用程序)。在加载时,我正在尝试访问内部应用程序上下文(它将管理一组原型bean - 基本上尝试使用分层应用程序上下文来管理所有原型bean,以便彻底关闭这些bean)。
我看了下面的各种方法:
基本上创建一个辅助servlet(看起来不是我的最佳选择)并访问它们
或者使用GenericWebApplicationContext(也尝试了所有其他与WebApplicationContext相关的API),如下所示:
GenericWebApplicationContext context = new GenericWebApplicationContext(servletContext);
context.setParent(rootApplicationContext);
XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(context);
xmlReader.loadBeanDefinitions(new ClassPathResource("ApplicationContext/beans.xml"));
context.refresh();
请评论方法。有没有建议的方法?
此外,我还遇到以下错误:
2013-12-13 00:44:04,877 ERROR [ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ZKWatcherImpl' defined in URL [bundleresource://382.fwk1189431013/com/ebay/traffic/email/aggregate/watcher/ZKWatcherImpl.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.ebay.traffic.email.aggregate.watcher.ZKWatcherImpl]: Constructor threw exception;
nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context] Offending resource: class path resource [CustomContext.xml]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:997)
由于
答案 0 :(得分:0)
在您的例外方面,您实际上并未正确导入自定义命名空间。要么dtd不存在,要么您没有在CustomContext.xml中引用正确的公共位置。
关于你的主要问题,为什么你需要第二个servlrt或WebApplicationContext本身。你需要管理原型bean像这样有很多问题
Spring: How to cleanly terminate prototype-scoped beans?
首先根据您的要求搜索SO。你会得到很多。