Tomcat Listener使用

能拿Tomcat怎么办?

Tomcat是非常有名的开源容器,因其开源我们可以对其做定制化的改变,而且Tomcat在其配置文件方面做了很多注释说明摘要,帮助我们更好的定制化我们所需的功能点。

 

New Tomcat Listener

首先看下Tomcat整个比较有名的Listener,在我们的conf/server.xml文件中一目了然


Tomcat Listener使用
类图


Tomcat Listener使用NEXT 自定义的Listener,本代码是案例的方式,实际上在我们项目中定制化扩展了,譬如应用stop后,通知集群下的另外机器;监听接受UDP发过来的信息...

import java.io.FileWriter;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

import org.apache.catalina.Container;
import org.apache.catalina.Executor;
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.LifecycleListener;
import org.apache.catalina.LifecycleState;
import org.apache.catalina.Server;
import org.apache.catalina.Service;
import org.apache.catalina.connector.Connector;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;

public class EwellListener implements LifecycleListener {

	public void lifecycleEvent(LifecycleEvent event) {
		System.out.println("-------------------------------------------------");
		if (event != null && event.getLifecycle() != null) {
			System.out
					.println(event.getLifecycle().getStateName() + "chenyang");
		}
		System.out.println("-------------------------------------------------");
		if (!(event.getLifecycle() instanceof Server))
			return;

		if (!Lifecycle.AFTER_START_EVENT.equals(event.getType()))
			return;

		Server server = (Server) event.getLifecycle();
	
	}
}

 对于容器在不同事件下触发的行为,在tomcat中LifeCycle都有说明


Tomcat Listener使用
 

下一步就是如何在Tomcat中能够进行识别以及启动呢?

1.把你生成的jar包放入,tomcat的lib的目录下${CATALINA_HOME}/lib or ${CATALINA_BASE}/lib

2.把你的监听器配置到server.xml文件中
Tomcat Listener使用
 

 

结论

Tomcat的监听能够帮助我们webapp在启动的生命周期内完成你棘手的若干在应用系统中才能完成的功能,那么下一章Tomcat的Vavle能够帮助我们在信息流中一层层剥离,还原事实的真相,期待吧!