如何在一个Spring应用程序中的web.xml中注册多个servlet
我想在我的Spring web.xml中定义两个servlet – 一个用于应用程序html / jsp页面,另一个用于将由外部应用程序调用的Web服务。 这是web.xml:
myservlet org.springframework.web.servlet.DispatcherServlet 1 myservlet *.htm contextConfigLocation WEB-INF/user-service-servlet.xml user-webservice org.apache.cxf.transport.servlet.CXFServlet 1 user-webservice /UserService/*
如果我有myservlet自己在文件中使用DispatcherServlet,它工作正常。 如果我的user-webservice带有context-param,那就是它的配置文件(user-service-servlet.xml),它可以正常工作。 但是,如果我同时在文件中,则myservlet不起作用,因为myservlet-servlet.xml文件未自动加载。 如果我删除了context-param,那么myservlet可以工作,但是user-webservice不能正常工作,因为它没有加载配置文件(user-service-servlet.xml)。
如何定义两个servlet并加载它们的两个配置文件?
正如在cxf-user邮件列表中的这个主题中所解释的那样,您可以将整个批次加载到根上下文中,而不是让CXFServlet从user-webservice-servlet.xml
加载自己的spring上下文。 将现有的user-webservice-servlet.xml
重命名为其他名称(例如user-webservice-beans.xml
),然后将contextConfigLocation
参数更改为:
myservlet org.springframework.web.servlet.DispatcherServlet 1 myservlet *.htm contextConfigLocation /WEB-INF/applicationContext.xml /WEB-INF/user-webservice-beans.xml user-webservice org.apache.cxf.transport.servlet.CXFServlet 2 user-webservice /UserService/*
使用这样的配置:
contextConfigLocation /WEB-INF/applicationContext.xml org.springframework.web.context.ContextLoaderListener myservlet org.springframework.web.servlet.DispatcherServlet 1 user-webservice org.apache.cxf.transport.servlet.CXFServlet 2
然后你需要三个文件:
- applicationContext.xml中;
- myservlet-servlet.xml中; 和
- 用户Web服务 – servlet.xml中。
*-servlet.xml
文件自动使用,每个文件都为该servlet创建一个应用程序上下文。
从Spring文档, 13.2。 DispatcherServlet :
在初始化
DispatcherServlet
,框架将在Web应用程序的WEB-INF
目录中查找名为[servlet-name] -servlet.xml的文件,并创建在那里定义的bean(覆盖用于定义的任何bean的定义)全球范围内的同名)。
我知道这有点旧,但简单的答案是