?? tail.java
字號:
package com.hoten.tail;
import java.io.*;
import java.util.*;
import java.net.*;
import com.hoten.util.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class Tail implements Runnable {
private TailList list = TailList.getInstance();
private TailInfo info = null;
private String _logFile = MOParam.getInstance().logFile;
private DBAccess dbAccess = new DBAccess();
private static boolean flag=true;
private DatagramSocket socket;
public Tail() {
try {
creatSocket();
}
catch (Exception ex) {
}
}
public static void stopThread(){
flag=false;
}
private void creatSocket()throws Exception{
socket = new DatagramSocket();
}
public void run(){
Log.printEvent("監控系統啟動",_logFile);
int i = 0;
try {
/** 未被中斷情況下正常運行 */
while(flag){
/** 取到并刪處MO消息隊列中的一條消息 */
info = (TailInfo)list.remove();
/** 若消息隊列為空,暫停一段時間再繼續循環獲取消息 */
if(info==null){
if(i==0){
TailTools.setTailFlag(dbAccess);
}
i++;
if(i==60*3) i=0;
Thread.currentThread().sleep(1000);
continue;
}
/** 若消息體為空,則將相應消息特殊標記,存入公共出錯模塊,否則正常處理 */
try {
doTail(info);
}
catch (Exception ex) {
try {
socket.close();
creatSocket();
}
catch (Exception x) {
}
Log.printError(ex,"","",_logFile);
}
info=null;
Thread.currentThread().sleep(10);
}
}
/** InterruptedException異常 */
catch (InterruptedException ex) {
}
dbAccess.release();
Log.printEvent("監控系統退出",_logFile);
}
private void doTail(TailInfo info)throws Exception{
if(socket.isClosed()){
creatSocket();
}
DatagramPacket dp = getPacket(info);
sendPacket(dp);
}
private DatagramPacket getPacket(TailInfo info)throws Exception{
DatagramPacket dp= new DatagramPacket(info.getData(),info.getData().length,InetAddress.getByName(info.getHost()),info.getPort());
return dp;
}
private void sendPacket(DatagramPacket packet)throws Exception{
socket.send(packet);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -