关于tomcat的Listener的使用
现在有这样的一个任务:
有一个应用程序(a)要向某一台运行tomcat的服务器(b)发送DatagramPacket包(c).
b上面有一个static的HashMap,里面存放的是一些JspWriter.
b通过DategramSocket监听,得到c的数据后,使用那些JspWriter向客户端的浏览器写数据。
问题:
有没有什么好的方法可以让tomcat启动的时候就开始监听DategramSocket的端口。Listener是不是可以做到,我对Listener不了解,那个example也看不太懂,所以不知道怎么用,哪位大哥可不可以给点提示。
我的程序如下,好象没用,但不知道错在那里。
tomcat的xml是这样的:
<listener>
<listener-class>listener.UDPListener</listener-class>
</listener>
/****************************************************************/
package listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class UDPListener implements ServletContextListener {
UDPServer server=null;
public UDPListener() {
}
public void contextInitialized(ServletContextEvent parm1) {
/**@todo Implement this javax.servlet.ServletContextListener method*/
//throw new java.lang.UnsupportedOperationException("Method contextInitialized() not yet implemented.");
server=new UDPServer();
try
{
server.start();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void contextDestroyed(ServletContextEvent parm1) {
/**@todo Implement this javax.servlet.ServletContextListener method*/
//throw new java.lang.UnsupportedOperationException("Method contextDestroyed() not yet implemented.");
server.disconnect();
}
}
/**********************************************************/
/********************************************************/
package listener;
import java.net.*;
import java.io.*;
public class UDPServer extends Thread
{
private static DatagramSocket server=null;
private final static int PORT=801;
private DatagramPacket packet=null;
private static boolean signal=true;
public UDPServer()
{
if(server==null)
{
try
{
server=new DatagramSocket(PORT);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public void run()
{
while(signal)
{
byte[] b=new byte[1024];
packet=new DatagramPacket(b,b.length);
try
{
server.receive(packet);
b=packet.getData();
/****任务3:b得到c的数据后,使用那些JspWriter向客户端的浏览器写数据***/
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public void disconnect()
{
try
{
signal=flase;
server.disconnect();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
/**********************************************************************/