当前位置: 首页 > 面试题库 >

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

归德厚
2023-03-14
问题内容

我想在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上下文,而只需将全部加载到根上下文中即可。将现有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>


 类似资料:
  • 在一个web.xml中有多个jersey servlet是可能的吗?我尝试以这种方式执行RESTfull版本控制:

  • 问题内容: 我有一个Appp类,它从Application扩展并在清单中调用Appp。 还有两个jar,每个作者都说在清单中将它们称为Application标记。 根据android问题中如何处理多个应用程序类,要具有从Application扩展的多个应用程序类,我们应该从另一个应用程序类扩展某个应用程序类,并在清单中调用上层类。 但就我而言,我没有资源,只有罐子。我能做什么?! 问题答案: 解决

  • 我正在尝试在web.xml中映射多个servlet。在我的index.html中,我有一个操作“desktype.do”的表单,当我运行程序时,它成功了。我是这样开始的: …效果很好。它成功地编译,并且在按下我在index.html中设置的按钮后,它就会按照需要运行。在添加了额外的servlet映射之后: 我收到错误“模块尚未部署。详细信息请参阅服务器日志。构建失败(总时间;0秒)”我不确定该怎么

  • 我想在Spring引导管理服务器中注册同一个应用程序的两个实例(只有端口不同)。但是我在我的Spring引导管理面板中只看到一个实例(MyApp实例2)。我的配置有什么问题? 基本信息: Spring Boot管理客户端-2.0.0-SNAPSHOT Spring Boot管理服务器-2.0.0-SNAPSHOT Spring Boot版本(两者)-2.0.1。发布 我的申请书。yml文件:

  • 我在spring应用程序中使用jdbctemplate对db执行查询。 下面是用@Transactional注释的方法 我的问题是,如果1和2成功而3失败,那么1和2上的事务是否会回滚?我怎么测试这个?

  • 我正在创建一个新的应用程序,我使用了许多放置在子包中的模块。我有类似于我的主类和放在哪里,在这个