通过修改web.xml让服务器重启的问题?
通过修改web.xml让服务器重启时,项目中开启的线程都不会自动的被关闭,只有你自己去传达web容器关闭事件,通知运行中的线程,让其自动关闭。这里我经常使用的是观察者模式,
代码如下:
监听web容器关闭事件,并自启动一个关闭线程来进行关闭操作,因为web容器的关闭时间是有限的。
public class WebContentClose implements ServletContextListener,Runnable {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
Thread executeCloseThread = new Thread(this);
executeCloseThread.start();
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
}
private static List<IThreadClose> closeThread = new ArrayList<>();
public WebContentClose() {
}
public static synchronized void addObserver(IThreadClose o) {
if (o == null)
throw new NullPointerException();
if (!closeThread.contains(o)) {
closeThread.add(o);
}
}
public static synchronized void deleteObserver(IThreadClose o) {
closeThread.remove(o);
}
public void notifyObservers() {
Object[] arrLocal;
synchronized (WebContentClose.class) {
arrLocal = closeThread.toArray();
}
for (int i = arrLocal.length-1; i>=0; i--){
try{
((IThreadClose)arrLocal[i]).setShutdown();
((IThreadClose)arrLocal[i]).interrupted();
} catch(Exception e){
System.out.println("关闭线程发生错误:" + arrLocal[i].getClass().getName());
}
}
}
@Override
public void run() {
notifyObservers();
}
}
具体的需要关闭的线程:
public class Pojo implements Runnable,IThreadClose {
Thread thread;
public Pojo() {
thread = new Thread(this);
thread.start();
WebContentClose.addObserver(this);
}
@Override
public void run() {
int i =0;
while(true){
//在未开始做任何的业务逻辑之前来做是否停止判断
if (shutdown) {
return ;
}
i++;
printThreadInfor();
System.out.println(i);
try { Thread.sleep(2000l);
} catch (InterruptedException e) {
}
}
}
public void printThreadInfor(){
Thread currentThread = Thread.currentThread();
System.out.println("线程id" + currentThread.getId() + "线程名字" + currentThread.getName());
}
private boolean shutdown = false;
@Override
public void setShutdown() {
shutdown = true;
}
@Override
public void interrupted() {
if(thread == null)
return ;
thread.interrupt();
}
}
public interface IThreadClose {
//设置为需要停止
public void setShutdown();
//触发中断,自己去停止
public void interrupted();
}
分享到:
相关推荐
总的来说,配置Tomcat服务器的HTTPS涉及修改`server.xml`以设置SSL连接器,并可能修改`web.xml`以实现强制HTTPS。这个过程虽然稍显复杂,但对于提供安全的Web服务来说是必不可少的。通过理解这些配置,你可以更好地...
- 重启Web服务器,确保所有更改生效。 - 访问`http://IP:端口/项目名/go.action`,系统应自动调用`MyAction`类进行处理,并跳转到`next.jsp`页面。 #### 四、深入理解与应用场景 - **应用场景**:这种配置方式...
`<hot-deploy>`元素则是用于配置热部署,它监控特定资源(如`元素内的watched-resource`属性所示)的变化,实现不重启服务器即可更新应用。 接下来,`<apps>`元素是整个配置的核心部分,它包含了所有部署在TongWeb...
在开发Java Web应用程序时,尤其是使用Mybatis作为持久层框架的时候,经常遇到的一个问题是:当我们在IntelliJ IDEA中修改了Mapper XML文件后,需要手动重启Tomcat服务器才能看到改动的效果,这无疑降低了开发效率。...
为了使统计持久化,我们可以将访问计数器保存在数据库或文件中,以便在服务器重启后仍能保留统计数据。此外,我们还可以在Filter中添加更多的逻辑,比如区分不同类型的HTTP请求(GET、POST等)或者特定的URL路径,以...
6. **重启服务器**:完成修改后,别忘了重启WebLogic服务器以使更改生效。 通过以上分析和解决方案,我们可以理解"metro-default.xml"在JAX-WS Web服务部署中的关键作用,以及如何处理WebLogic 12中遇到的相关问题...
按照题目中的描述,要在不直接修改`server.xml`的情况下设置虚拟目录,可以通过在Tomcat安装目录下的`conf/Catalina/localhost`文件夹内创建一个新的XML文件(例如命名为`szdj_file.xml`)来实现。这里的`Catalina`...
总结,`server.xml`配置文件是Tomcat的核心配置,通过调整其中的元素和属性,我们可以定制服务器的行为,满足特定的部署需求。了解并熟练掌握这些配置,对优化和维护Tomcat服务器性能至关重要。
2. 修改配置文件,如conf目录下的mycat-web.xml,根据实际环境配置数据库连接、服务器监听端口等。 3. 如果需要,执行scripts目录下的初始化脚本,创建并填充MyCat-Web的数据库表。 4. 切换到bin目录,运行启动脚本...
本文档介绍了使用 Eclipse 创建 Java Web 项目的步骤,包括安装 Apache-Tomcat 服务器、在 Eclipse 中添加服务器、创建 Dynamic Web 项目、配置 Servers、修改 Web.xml 文件、启动服务器和访问 Java Web 项目等。
总之,`server.xml` 文件是 Tomcat 配置的核心,通过精细调整这些元素的属性,我们可以定制化 Tomcat 服务器的行为,以满足特定的应用场景需求。理解并熟练掌握 `server.xml` 的配置是优化和管理 Tomcat 服务器性能...
- **reloadable**:如果设置为true,Tomcat会监控`/WEB-INF/lib`和`/WEB-INF/classes`目录的变化,自动重新加载修改后的应用程序,无需重启服务器。 #### Host标签 `<Host>`标签表示虚拟主机,用于托管多个Web应用...
- **reloadable**:如果设置为`true`,Tomcat会监视应用程序的`/WEB-INF/lib`和`/WEB-INF/classes`目录变化,自动重新加载更新的应用程序,无需重启服务器。 ### `host`元素 `host`元素表示一个虚拟主机,允许在同...
在Tomcat服务器上部署Web应用时,我们常常会遇到一个问题:当频繁地刷新网页或进行热更新时,浏览器可能会返回404错误,提示找不到静态文件。这是因为Tomcat在更新应用时,会重新加载Web应用目录下的文件,而在这个...
在IT行业中,尤其是在服务器部署和应用管理领域,`Root.xml` 配置文件是一个关键的元素,特别是对于Apache Tomcat这样...正确理解和配置`Root.xml`能提高服务器的可访问性和用户体验,但同时也要考虑其潜在的安全问题。
C#作为.NET平台上的主要开发语言,提供了丰富的API来读取web.config文件中的配置信息,并且可以通过建立高速缓存机制来优化应用程序的性能。 首先,Web.config配置文件的作用是给.NET应用程序提供一个统一的配置...
- 修改后,无需重启即可生效,可以通过访问Web应用测试配置是否成功。 #### 三、在特定主机下创建独立的Context配置文件 1. **基本配置**: - 在`$CATALINA_BASE/conf/[enginename]/[hostname]`目录下创建新的...
在`server.xml`文件中添加上下文是一种常见的配置方法,适用于需要频繁更改或重启服务器的情况。具体步骤如下: - 打开`apache-tomcat-7.0.30/conf/server.xml`文件。 - 在`<Host>`元素内添加以下代码: ```xml ...
通过使用Quartz的API,我们可以读取XML文件,解析其中的Job和Trigger定义,然后在运行时添加、修改或删除这些任务,实现配置的动态更新。这通常涉及监控XML文件的变化,一旦检测到更新,立即加载新的配置并应用到...