当前位置: 首页 > 知识库问答 >
问题:

如何防止服务开始,直到卡特琳娜已经开始

廉博赡
2023-03-14

我有一个在ApacheTomcat9上运行的JAX-WS客户机。客户机通过进入无限循环来轮询数据,并设置为servlet以在启动时加载。我遇到的问题是,servlet在Catalina完成启动之前启动并进入循环。

我尝试过使用sleep()和wait()但是没有用,我尝试过实现org。阿帕奇。卡塔琳娜。生命周期工程师,这也没用。

这是我的servlet类:

@WebServlet("/MyClient")
public class MyServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    @Override
    public void init() throws ServletException {
        System.out.println("Servlet Started");
        MyClient client = new MyClient();
        client.startClient();

    }
}

这是我的投票类:

public class Polling {

    private static final int TWO_MINUTES = 120000;

    public void startPoll() throws IOException {
        for (;;) {
            //Do something
            try {
                Thread.sleep(TWO_MINUTES);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

}

我期待着见到你。阿帕奇。卡塔琳娜。启动。卡塔琳娜。在我的程序打印“Servlet Started”之前的XXXX毫秒内启动服务器,但它首先启动Servlet,这会使tomcat挂起并阻止访问其他web应用程序。

共有1个答案

贺桐
2023-03-14

您将看不到服务器启动,因为您将初始化线程提升并开始使用它进行轮询。服务器将在servlet初始化后启动,但它永远不会完成初始化,因为您在init()中调用startPoll(),它永远不会返回。

与其手工制作无限循环和手动2分钟睡眠的轮询,不如研究调度,例如使用Quartz或至少使用SchduledExecutorService,这里有一个基于Tomcat的示例

 类似资料:
  • 当前尝试打开文件时出现以下错误: 我所做的是让应用程序在webapps中运行并使用以下命令启动: 现在我想查看窗口中的日志。在Ubuntu中,可以使用。但是如何在窗口中强制查看tomcat日志呢?

  • 问题内容: 我想向包含标签的浏览器输出一行文本。呈现此效果时,DIV似乎会换行。如何在同一行的div标签中包含内容-这是我的代码。 我试图在这里整理一下。如何在一行上显示此内容? 问题答案: 该标签是块元素,造成这种行为。 您应该改用内联元素。 如果您 确实 要使用,请添加。(您也可以将其放入CSS规则中)

  • 面试官有两位:技术+hr,面试时长(2022.10.14,大概30分钟)。 面试内容:自我介绍+项目+hr问+反问 自我介绍:老生常谈 项目:科研项目+负责内容(深度学习模型+数据统计服务) -    利用深度学习做哪些内容? 项目背景+数据来源(线下采集)+负责模块+最终功能(定量定性分析)。 -    你认为深度学习和游戏怎么结合? VR、视觉、人的行为数据分析(消费习惯、性格预测等),前途广

  • 问题内容: 在我的PHP代码中,如果一个会话已经开始,而我尝试启动一个新会话,则会收到以下通知: 注意:会话已经开始-忽略session_start() 如何避免这种情况? 问题答案: 尝试

  • 《写面经攒人品系列回忆式更新...》 一面 30min 以基本的八股考察为主 1、tcp连接断开的状态变化 2、为什么三次握手,不是四次或者两次 3、数据库的优化有什么方法 4、项目提问 5、线程进程的区别 二面+hr面 30min 主管和hr两个人同时面,时间半小时 1、项目中protobuf有什么用? 2、如果让你设计一个序列化反序列化的工具,你会怎么考虑 3、你的服务器项目做过压测么 4、服

  • 本文向大家介绍如何检查PHP会话是否已经开始?,包括了如何检查PHP会话是否已经开始?的使用技巧和注意事项,需要的朋友参考一下 在PHP中,我们利用一个内置函数session_start()来启动会话。但是,PHP脚本中面临的问题是,如果我们多次执行它会引发错误。因此,在这里我们将学习如何在不调用session_start()函数两次的情况下检查会话是否启动。 有两种方法可以解决此问题。 对于低于