关于tomcat的Listener的使用

coolzhou 2003-08-22 04:19:51
现在有这样的一个任务:

有一个应用程序(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();
}
}

}

/**********************************************************************/




...全文
720 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧