我正在尝试以与我的spring上下文类似的方式自定义spring-ws servlet上下文。对于初始上下文(在服务器启动时初始化),我扩展了ContextLoader
并实现了ServletContextListener
类,这与org.springframework.web.context.ContextLoaderListener
类的类似。我可以通过覆盖customizeContext(ServletContext servletContext, ConfigurableWebApplicationContext applicationContext)
方法来自定义初始上下文,并根据属性添加/删除可选的上下文xml文件。我能够将此类设置为web.xml
文件中的侦听器,而不是Spring中的默认ContextLoaderListener
,并且它按预期工作。
我希望对spring-ws servlet上下文(WEB-INF\spring-ws-servlet.xml
中定义的所有bean)采取类似的方法,但我无法找到任何解决方案。我唯一能想到的就是让自定义上下文加载器生成一个xml文件,其中包含要包含的'可选'bean,并让spring-ws-servlet
上下文导入它。然而,这是一个解决方案的黑客工作,我认为必须有一个更好的方法。有没有人对如何在调用第一个Web服务时自定义spring-ws servlet上下文有任何建议?
我正在使用Spring 2.5.6& Spring-WS 1.5.9
提前致谢。
答案 0 :(得分:0)
我能够找到解决方案。我创建了一个扩展MessageDispatcherServlet
的类,并覆盖了postProcessWebApplicationContext
方法。在该方法中,我根据我的属性有条件地添加我的可选上下文位置。调用此方法后,父级将在上下文中调用refresh()
方法,并将加载其他上下文。
有人向我建议的另一个解决方案是创建自定义命名空间,并创建命名空间处理程序以在满足条件时执行导入。