gpt4 book ai didi

java - 如何在一个 Spring 应用程序的 web.xml 中注册多个 servlet

转载 作者:IT老高 更新时间:2023-10-28 13:46:33 25 4
gpt4 key购买 nike

我想在我的 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>

如果我让 myservlet 单独使用文件中的 DispatcherServlet,它可以正常工作。如果我有带有上下文参数的用户 web 服务,它的配置文件 (user-service-servlet.xml),它工作正常。但是,如果我在文件中同时包含两者,则 myservlet 将无法工作,因为 myservlet-servlet.xml 文件不会自动加载。如果我删除上下文参数,那么 myservlet 可以工作,但用户 Web 服务不起作用,因为它的配置文件 (user-service-servlet.xml) 没有加载。

如何定义两个 servlet 并加载它们的两个配置文件?

最佳答案

this thread 中所述在 cxf-user 邮件列表中,您可以将全部内容加载到根上下文中,而不是让 CXFServlet 从 user-webservice-servlet.xml 加载它自己的 spring 上下文。将您现有的 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>

关于java - 如何在一个 Spring 应用程序的 web.xml 中注册多个 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1865088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com