【问题标题】:Is it possible to have load on start up Servlet and a normal Request, Response Servlet in same web.xml?是否可以在同一个 web.xml 中加载启动 Servlet 和正常的请求、响应 Servlet?
【发布时间】:2015-02-08 12:02:06
【问题描述】:

对于客户端和服务器的实现,我需要在部署后立即启动 servlet,另一个应该等待请求。可能吗?如果什么是正确的方法来实现它。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>WiCodeRedeemRequest</display-name>
    <servlet-name>WiCodeRedeemRequest</servlet-name>
    <servlet-class>com.wicode.redeem.WiCodeRedeemRequest</servlet-class>
  </servlet>

  <servlet>
        <servlet-name>WiCode</servlet-name>
        <servlet-class>com.wicode.redeem.WiCode</servlet-class>
        <init-param>
          <param-name>Group</param-name>
          <param-value>1</param-value>
        </init-param>
        <init-param>
          <param-name>Instance</param-name>
          <param-value>1</param-value>
        </init-param>       
        <load-on-startup>1</load-on-startup>
    </servlet>

  <servlet-mapping>
    <servlet-name>WiCodeRedeemRequest</servlet-name>
    <url-pattern>/WiCode</url-pattern>
  </servlet-mapping>
</web-app>

上面是我的 web.xml。我在某处看到了监听器的用法。

我是 servlet 的新手。需要帮助。

【问题讨论】:

  • 在您的 xml 文件中,您有两个 servlet,但有一个 servlet 映射,并且 url-pattern 和 servlet-name 都令人困惑。
  • 第二个 servlet,WiCode,这是我不想在请求的基础上运行的东西,这就是为什么我没有放置映射..实际上我需要它作为后台线程运行..
  • 为什么在启动时不加载 WiCodeRedeemRequest 为 1 和 WiCode 为 2?
  • 所有 servlet 等待请求。你的问题没有意义。

标签: java servlets servlet-filters servlet-listeners


【解决方案1】:

小模板xml..

<?xml version="1.0" encoding="UTF-8"?>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
    <servlet-name>Servlet1</servlet-name>
    <servlet-class>com.wicode.redeem.WiCodeRedeemRequest</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/MappingForFirstServlet</url-pattern>
  </servlet-mapping>


  <servlet>
        <servlet-name>Servlet2</servlet-name>
        <servlet-class>com.wicode.redeem.WiCode</servlet-class>
     //What ever you want to initialize..
    </servlet>

  <servlet-mapping>
    <servlet-name>Servlet2</servlet-name>
    <url-pattern>Mapping URL</url-pattern>
  </servlet-mapping>
</web-app>

【讨论】:

  • 上面的例子没问题。我同意所有 servlet 等待请求。但我不希望客户端访问 Servlet WiCode。(它基本上是一个初始化程序)。当我按照我给出的方式放置时,它不起作用; tomcat 日志上没有错误,端口正在侦听..但它不接受任何请求..
  • 是的,tomcat 不会给您任何错误,因为从语法上讲,您是正确的。我仍然不明白你基本上想做什么。即使创建许多 servlet 也不是一个好主意。由于这些过程成本高昂,每个 servlet 都有自己的生命周期等。现在容器应该管理所有这些,所以,我的建议是为什么不创建一个单独的 servlet 来接收所有传入请求,然后基于请求它将其定向到相应的控制器。简而言之,我要求您设计一个前端控制的 MVC 设计模式。
  • 实际上我还必须在我的应用服务器中管理客户端实现。基本上我想要实现的是它可以充当服务器和客户端;两者都是独立的;我不想要 url 映射的第二个 servlet,它应该能够使用 tcp 与另一个第三方接口通信。对这个 servlet 的请求也是来自另一个接口的 tcp 原始数据。基本上应用程序必须与多个接口对话,并且应该能够同时处理请求和响应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
  • 2012-12-13
  • 2011-07-29
  • 1970-01-01
  • 2016-08-01
  • 2012-08-22
相关资源
最近更新 更多