Spring-WS中的自定义上下文

时间:2011-02-03 18:44:36

标签: java web-services spring javabeans spring-ws

我正在尝试以与我的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

提前致谢。

1 个答案:

答案 0 :(得分:0)

我能够找到解决方案。我创建了一个扩展MessageDispatcherServlet的类,并覆盖了postProcessWebApplicationContext方法。在该方法中,我根据我的属性有条件地添加我的可选上下文位置。调用此方法后,父级将在上下文中调用refresh()方法,并将加载其他上下文。

有人向我建议的另一个解决方案是创建自定义命名空间,并创建命名空间处理程序以在满足条件时执行导入。