- 浏览: 274031 次
- 性别:
- 来自: 南宁
文章分类
- 全部博客 (249)
- Memcached (6)
- 操作系统-Linux (18)
- 操作系统-Windows (2)
- JAVA-多线程 (6)
- Java-Web (46)
- Eclipse (19)
- Struts-Spring-Hibernate (25)
- 消息队列 (10)
- JBPM (3)
- 全文检索-Solr (2)
- WebService (3)
- 数据库-Oracle (9)
- 数据库-MySQL (14)
- 数据库-MS SQL (2)
- ESB(企业服务总线) (1)
- 前端技术 (9)
- 互联网安全技术 (1)
- 日志log4j (3)
- 分布式框架 (11)
- 版本控制-SVN (3)
- 版本控制-Git (5)
- Maven (11)
- 大数据-Hadoop (3)
- PHP (1)
- JAVA注解 (2)
- 系统架构 (1)
- 会话-权限-JWT (10)
- 定时任务 (1)
- 非技术 (1)
- Redis (5)
- Nginx (5)
- 云计算和虚拟化 (1)
- swagger (1)
- 移动端UI和框架 (5)
最新评论
-
lgh1992314:
applicationContext.xml 是 spring ...
Spring的applicationContext和spring-mvc.xml的区别
方法1:tomcat 自动执行servlet
写一个servlet,在init()方法中写好想要执行的程序,程序如下:
eclipse新建一个web\Dynamic Web Project , name = myweb1 , 把tomcat中的 servlet-api.jar复制到lib中,新建一个类MyServlet.java, 继承 javax.servlet.HttpServlet,代码如下:
同时,在web.xml配置文件内容如下:
其中<load-on-startup>0</load-on-startup>即可实现tomcat启动时执行该servlet
load-on-startup的值必须为整数
当load-on-startup值为负整数或者未指定时,容器在该servlet被调用时加载
当其值为0和正整数时,容器启动时加载,值越小,优先级越高
使用虚拟路径部署到tomcat中:在 tomcat的 server.xml的 </Host>前加入:
<Context debug="0" docBase="F:/studyworkspace/myweb1/WebRoot" path="myweb1" reloadable="true">
</Context>
docBase为 myweb1的webroot的路径 ,path为上下文
方法2:Servlet侦听器
要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,同时实现它的contextInitialized(ServletContextEvent event)和contextDestroyed(ServletContextEvent event)两个接口函数。
listener类如下:
contextInitialized函数里的内容将被自动执行
最后在web.xml里面添加一个监听节点就行了
<listener>
<listener-class>org.cai.MyListener</listener-class>
</listener>
完整web.xml如下
如果要执行定时任务,就在自动执行的代码里面使用 java.util.Timer以及创建一个继承java.util.TimerTask的类。示例:
以上两种方法部署到tomcat,运行tomcat\bin\startup.bat,即可看到效果,其中方法2中的日志写入到tomcat\logs\localhost.xxxx-xx-xx.log文件中。
方法3:如果要spring启动后立即执行指定的函数
spring启动后立即执行指定的函数只需要在spring配置文件中增加一个init-method属性即可
<bean id="test" class="com.zhy.demo.test" init-method="start" />
写一个servlet,在init()方法中写好想要执行的程序,程序如下:
eclipse新建一个web\Dynamic Web Project , name = myweb1 , 把tomcat中的 servlet-api.jar复制到lib中,新建一个类MyServlet.java, 继承 javax.servlet.HttpServlet,代码如下:
package org.cai; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; public class MyServlet extends HttpServlet { @Override public void init() throws ServletException { // TODO Auto-generated method stub super.init(); System.out.println("自动加载启动."); System.out.println("自动加载启动."); for(int i = 0; i < 10; i++){ System.out.println(i + "、 自动加载启动."); } } }
同时,在web.xml配置文件内容如下:
<?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"> <display-name>myweb1</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>org.cai.MyServlet</servlet-class> <strong><load-on-startup>0</load-on-startup></strong> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
其中<load-on-startup>0</load-on-startup>即可实现tomcat启动时执行该servlet
load-on-startup的值必须为整数
当load-on-startup值为负整数或者未指定时,容器在该servlet被调用时加载
当其值为0和正整数时,容器启动时加载,值越小,优先级越高
使用虚拟路径部署到tomcat中:在 tomcat的 server.xml的 </Host>前加入:
<Context debug="0" docBase="F:/studyworkspace/myweb1/WebRoot" path="myweb1" reloadable="true">
</Context>
docBase为 myweb1的webroot的路径 ,path为上下文
方法2:Servlet侦听器
要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,同时实现它的contextInitialized(ServletContextEvent event)和contextDestroyed(ServletContextEvent event)两个接口函数。
listener类如下:
package org.cai; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class MyListener implements ServletContextListener { private java.util.Timer timer = null ; public void contextDestroyed(ServletContextEvent event) { // TODO Auto-generated method stub } public void contextInitialized(ServletContextEvent event) { timer = new java.util.Timer(true) ; event.getServletContext().log("定时器已启动。") ; timer.schedule(new MyTask(event.getServletContext()), 0, 5000) ; event.getServletContext().log("已经添加任务调度表。" ) ; } }
contextInitialized函数里的内容将被自动执行
最后在web.xml里面添加一个监听节点就行了
<listener>
<listener-class>org.cai.MyListener</listener-class>
</listener>
完整web.xml如下
<?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"> <display-name>myweb2</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <listener> <listener-class>org.cai.MyListener</listener-class> </listener> </web-app>
如果要执行定时任务,就在自动执行的代码里面使用 java.util.Timer以及创建一个继承java.util.TimerTask的类。示例:
package org.cai; import java.util.TimerTask; import javax.servlet.ServletContext; public class MyTask extends TimerTask { private static boolean isRunning = false; private ServletContext context = null; public MyTask(ServletContext context){ this.context = context ; } @Override public void run() { if (! isRunning){ System.out.println("开始执行指定任务.") ; //if (C_SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY)) { isRunning = true ; context.log("开始执行指定任务.") ; //TODO 添加自定义的详细任务,以下只是示例 int i = 0; while (i++ < 10) { context.log("已完成任务的" + i + "/" + 10); //System.out.println("已完成任务的" + i + "/" + 1000) ; } isRunning = false; context.log("指定任务执行结束"); System.out.println("指定任务执行结束") ; //} }else{ context.log("上一次任务执行还未结束"); } } }
以上两种方法部署到tomcat,运行tomcat\bin\startup.bat,即可看到效果,其中方法2中的日志写入到tomcat\logs\localhost.xxxx-xx-xx.log文件中。
方法3:如果要spring启动后立即执行指定的函数
spring启动后立即执行指定的函数只需要在spring配置文件中增加一个init-method属性即可
<bean id="test" class="com.zhy.demo.test" init-method="start" />
发表评论
-
JAVA SortedMap接口
2020-03-23 11:03 453SortedMap接口主要提供有序的Map实现。 M ... -
java利用Jpcap实现抓包
2019-03-28 11:27 16651.准备工作 Jpcap是一个可以监控当前网络情况的 ... -
实战:使用JpcapCaptor实例来捕捉网络数据包
2019-03-28 11:23 703当你通过打开网卡设备得到JpcapCaptor实例后,就可以 ... -
通过java进行电脑屏幕截图
2019-01-22 03:12 862package image; import java. ... -
Java中将InputStream读取为String, 各种方法的性能对比
2018-09-17 13:12 1123如下, 一共存在11种实现方式及其对应的性能测试结果:1. ... -
浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别
2018-07-29 21:10 5571.@RequestMapping 国际惯例先介绍什么是@ ... -
关于split截取字符时,问号的特殊情况
2018-06-10 00:09 2684有一段字符 tring str = “gjjxxcx/gjj ... -
报错:No main manifest attribute
2018-04-15 23:21 5440报错信息 在Linux系统下执行Java -jar XXX ... -
CentOS下安装JDK的三种方法
2018-04-15 23:31 348由于各Linux开发厂商的不同,因此不同开发厂商的Linux ... -
Lombok 安装、入门 - 消除冗长的 java 代码
2017-10-25 22:31 368前言: 逛开源社区的时候无意发现的,用了一段时间,觉 ... -
Filter 过滤器
2017-04-18 09:32 483原文链接:http://tianweili.github. ... -
BigDecimal如何比较是否相等
2016-11-29 18:30 5441例子: BigDecimal a = new BigDec ... -
Tomcat内存设置详解
2016-11-01 18:53 415Java内存溢出详解 ... -
RESTful API 设计指南
2016-10-10 19:39 437网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前 ... -
getJdbcTemplate中execute和update的区别
2016-04-29 17:48 14781、update可以带参数,而execute不可以。例如:j ... -
处理大数字BigInteger与BigDecimal
2016-04-27 17:01 752关键技术剖析: ² BigInteger:支持任意精度的整 ... -
深入理解 Java中的 流 (Stream)
2016-04-27 16:58 686个人小站,正在持续整理中,欢迎访问:http://shito ... -
关于split函数的注意点
2016-04-27 16:58 604如果 String str = "aa|bb| ... -
企业数据总线(ESB)和注册服务管理(dubbo)的区别
2016-04-20 17:50 1574一、概述 1、什么是ESB ... -
Quartz作业调度框架
2016-04-20 14:11 453Quartz 是一个开源的作业调度框架,它完全由 Java ...
相关推荐
在部分内容中,我们可以看到使用 Java 程序来监听 Tomcat 服务器的状态,并在 Tomcat 无响应时自动重启 Tomcat 的实现思路。 监听 Tomcat 服务器状态 在 Java 程序中,我们使用定时访问服务器端固定的 JSP 页面...
要实现在Tomcat启动时自动执行的Servlet,我们需要在Servlet的`init()`方法中添加代码来创建一个后台线程。`init()`方法是Servlet生命周期中的初始化阶段,当Servlet被加载时,Tomcat会调用这个方法。我们可以在`...
然而,在某些特定场景下,例如自动化部署或者集成测试过程中,我们需要通过程序代码(如Java)来调用命令行启动Tomcat。这种方式更加灵活,可以更好地融入自动化流程中。 #### 二、准备工作 在进行Java调用命令行...
当我们希望在Tomcat启动时自动访问本地的Servlet或JSP,可以通过配置监听器(Listeners)来实现这一需求。监听器是Servlet容器中的一个组件,它可以监听特定的事件,比如Web应用的初始化、销毁等,并在这些事件发生...
Java Tomcat监控程序是用于确保Web应用程序持续稳定运行的重要工具。在Java开发环境中,Tomcat是一个广泛使用的开源应用服务器,特别适用于运行Java Servlets和JavaServer Pages(JSP)。为了提高系统的可靠性和稳定...
本话题聚焦于在Windows平台上对Tomcat的运行状况进行自动监控,并在出现异常时进行自动重启,以保障服务的连续性。下面将详细讨论这个主题。 首先,我们要理解Tomcat是什么。Tomcat是一款开源的Java Servlet容器,...
内嵌式Tomcat是开发Java Web应用时常用的一种方式,它允许我们将Tomcat服务器与应用程序打包在一起,无需单独部署到外部服务器。这种方式尤其适合于快速开发、测试和演示,因为它简化了部署流程,并且便于自动化构建...
Tomcat是一个开源的轻量级应用服务器,主要用于运行Servlet和JSP(JavaServer Pages)应用。下面将详细阐述这个主题。 1. **Apache Tomcat** - Tomcat是Apache软件基金会的Jakarta项目下的一个核心项目,它是基于...
- **安全性考虑**:在实现自动重启功能时,需要注意避免恶意重启等问题,确保系统的安全稳定运行。 通过以上知识点的学习,可以了解到如何通过Java程序实现对Tomcat服务器状态的自动检测与重启,这对于保障基于...
【Java+Tomcat环境配置详解】 ...通过配置JDK和Tomcat,我们可以创建、编译Java代码,同时利用Tomcat部署和运行Web应用程序,如OpenCMS。这为开发者提供了一个基础的工作平台,便于进行相关项目的实践和学习。
当你启动这个Tomcat服务器实例时,Eclipse会自动使用插件提供的功能来启动Tomcat,并监听调试端口。在代码中设置断点,然后开始调试,当程序执行到断点处,Eclipse会暂停,此时你可以查看变量值、单步执行、或者修改...
3. **版本管理与持续集成**:在实际开发中,通常会使用Git进行版本控制,并结合Jenkins、Travis CI等持续集成工具,每当代码提交到仓库时,自动化构建过程会生成新的WAR文件并推送到预设的Tomcat部署目录,实现无缝...
1. **Java Development Kit (JDK)**:Java Tomcat需要JDK来编译和运行Java代码。确保已安装并配置了JDK,并且JRE_HOME环境变量指向JDK的安装位置。 2. **Servlet和JSP**:Tomcat的主要职责是处理Servlet和JSP请求。...
1. **启动与配置**:在Java代码中,通过`org.apache.catalina.startup.Tomcat`类来初始化和启动Tomcat服务器。开发者可以设置端口号、上下文路径、Web应用的根目录等参数。 2. **Web应用目录结构**:标准的Web应用...
本案例“timer随tomcat启动案例”就是针对这种情况的一个实例,它利用了Java的定时器(Timer)类和Tomcat的生命周期管理来实现在Tomcat服务器启动时自动运行的任务。 首先,我们要理解`Timer`类是Java.util包下的一...
在部署和运行 Java Web 应用时,合理地配置应用服务器(如 Apache Tomcat)的内存是非常重要的。这不仅可以提升应用程序的性能,还能有效避免因内存不足而导致的应用崩溃或性能下降等问题。本文将详细介绍如何在 ...
这个"shell脚本远程启动其他服务器的tomcat传输文件自动登录判断启动停止"的方案,就是一种典型的自动化运维实践,它结合了多个核心工具和技术,包括shell脚本、expect、ssh以及scp,用于实现远程服务器管理与文件...
Java项目的自动化构建、打包和部署是现代开发流程中的重要环节,极大地提高了开发效率...通过这种方式,Java项目可以实现从代码修改到生产环境部署的无缝自动化流程,降低手动操作出错的可能性,提升开发团队的生产力。
1. **初始化**: Bootstrap类是Tomcat启动的起点,它通过main方法开始执行。在main方法中,Bootstrap会加载服务器的全局配置文件,如`catalina.properties`,并创建`Catalina`实例,这是Tomcat的主要容器。 2. **...