如何在一个Spring应用程序中的web.xml中注册多个servlet
我想在Spring web.xml中定义两个servlet-一个用于应用程序html / jsp页面,另一个用于将由外部应用程序调用的Web服务。这是web.xml:
<servlet> <servlet-name>myservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/user-service-servlet.xml</param-value>
</context-param>
<servlet>
<servlet-name>user-webservice</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>user-webservice</servlet-name>
<url-pattern>/UserService/*</url-pattern>
</servlet-mapping>
如果我让我的servlet单独在文件中使用DispatcherServlet,它就可以正常工作。如果我的用户Web服务的配置文件(user-service-servlet.xml)具有context-param,则工作正常。但是,如果文件中同时包含这两个文件,则myservlet无法正常工作,因为不会自动加载myservlet-servlet.xml文件。如果删除context-param,则myservlet可以工作,但是user-webservice不能工作,因为未加载其配置文件(user-service-servlet.xml)。
如何定义两个servlet和两个配置文件?
回答:
正如该线程在cxf-user邮件列表上所解释的user-webservice-servlet.xml
,你不必将CXFServlet从中加载自己的spring上下文,而只需将全部加载到root上下文中即可。将现有user-webservice-servlet.xml
名称重命名为其他名称(例如user-webservice-beans.xml
),然后将contextConfigLocation
参数更改为类似以下内容:
<servlet> <servlet-name>myservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
/WEB-INF/user-webservice-beans.xml
</param-value>
</context-param>
<servlet>
<servlet-name>user-webservice</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>user-webservice</servlet-name>
<url-pattern>/UserService/*</url-pattern>
</servlet-mapping>
以上是 如何在一个Spring应用程序中的web.xml中注册多个servlet 的全部内容, 来源链接: utcz.com/qa/418107.html