【问题标题】:How can I Load a class while startup tomcat Server [duplicate]启动tomcat服务器时如何加载类[重复]
【发布时间】:2017-02-13 22:02:08
【问题描述】:

我想加载包含 db 相关函数的 java 类文件。如何在启动 tomcat 服务器时加载该 java 文件

【问题讨论】:

  • 您是否尝试过为您的数据库连接使用单例模型?还是静态块??你想要达到的目标到底是什么问题??
  • 引用任何其他类文件的方式相同 - 您只需引用它,JVM 会在必要时加载它。
  • 我正在使用 Quartz 调度器来调度作业。一旦我们停止服务器,Quartz 相关数据就会消失。如果我再次启动服务器,我需要从 db 获取作业详细信息并提供提交作业详细信息的调度程序方法
  • 在这里的行之间完全阅读..但我认为你的意思是,你如何让 Quartz 使用内存中的 JDBC 存储stackoverflow.com/questions/13633404/…
  • 设置 Quartz 以使用数据库。例如,在此处使用此帮助页面:teknosrc.com/…

标签: java spring-mvc jakarta-ee


【解决方案1】:

你可以使用servlet,如下,定义到web.xml

<servlet>
   <servlet-name>YourServletName</servlet-name>
   <servlet-class>com.abc.xyz.YourServletClassName</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>

您可以在 YourServletClassName.java 文件中编写代码。

希望对你有帮助。

【讨论】:

  • 您在加载应用程序之前询问过检查授权(spring-security)吗?
  • 其实我没弄明白,你的实际问题和登录授权有什么联系,请解释一下。
  • 这是 2001 年之前的解决方案。一个通用的解决方案是使用 java.servlet.ServletContextListener。然而,OP 似乎真的需要配置 Quartz 来代替他做他的脏活。
【解决方案2】:

Psabuwala 的回答是正确的,但并不完整。 将在启动时运行的代码应放在 servlet 的 init 方法中。

Web.xml:

...
<servlet>
    <servlet-name>mainServlet</servlet-name>
    <servlet-class>example.com.MainServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
...

MainServlet.java:

public class MainServlet extends HttpServlet
{

    public void init() throws ServletException
    {
        DataLoader dataLoader = new DataLoader();
        dataLoader.load();
    }
    ... 
}

【讨论】:

    猜你喜欢
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2019-12-30
    • 2016-04-09
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多