📄 mm7receiveservlet.java
字号:
/**
* File Name:MM7ReceiverServlet.java Company: 中国移动集团公司 Date : 2004-2-17
*/
package com.cmcc.mm7.vasp.service;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import sun.misc.BASE64Encoder;
import com.cmcc.mm7.vasp.common.MMConstants;
import com.cmcc.mm7.vasp.common.SOAPDecodeException;
import com.cmcc.mm7.vasp.common.SOAPDecoder;
import com.cmcc.mm7.vasp.conf.MM7Config;
import com.cmcc.mm7.vasp.message.MM7DeliverReq;
import com.cmcc.mm7.vasp.message.MM7DeliverRes;
import com.cmcc.mm7.vasp.message.MM7DeliveryReportReq;
import com.cmcc.mm7.vasp.message.MM7DeliveryReportRes;
import com.cmcc.mm7.vasp.message.MM7RSReq;
import com.cmcc.mm7.vasp.message.MM7ReadReplyReq;
import com.cmcc.mm7.vasp.message.MM7ReadReplyRes;
import com.cmcc.mm7.vasp.message.MM7VASPRes;
public class MM7ReceiveServlet extends HttpServlet implements MM7AbstractReceiver {
private static final Logger log = Logger.getLogger(MM7ReceiveServlet.class);
protected MM7Config Config = null;
private String logFileName;
private String strEnvelope;
private int N;
private DecimalFormat df;
private ByteArrayOutputStream Finerbaos;
private StringBuffer TempBuffer;
private StringBuffer SevereBuffer;
private StringBuffer InfoBuffer;
// private StringBuffer FinerBuffer;
// private SimpleDateFormat sdf;
private SimpleDateFormat Recordsdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// private long LogTimeBZ;
// private long SameMinuteTime;
// private int SameMMSCID;
private String MMSCID;
private void reset() {
Finerbaos = new ByteArrayOutputStream();
TempBuffer = new StringBuffer();
SevereBuffer = new StringBuffer();
InfoBuffer = new StringBuffer();
// FinerBuffer = new StringBuffer();
// LogTimeBZ = System.currentTimeMillis();
// SameMinuteTime = System.currentTimeMillis();
// sdf = new SimpleDateFormat("yyyyMMddHHmm");
df = new DecimalFormat("0000");
N = 0;
// SameMMSCID = 0;
logFileName = "";
strEnvelope = "";
Recordsdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
public MM7ReceiveServlet() // 构造方法
{
log.info("MO和REPORT接收之Servlet初始化:MM7ReceiveServlet()........");
reset();
}
// 处理到VASP的传送(deliver)多媒体消息
public MM7VASPRes doDeliver(MM7DeliverReq mm7DeliverReq) {
MM7DeliverRes res = new MM7DeliverRes();
res.setTransactionID(mm7DeliverReq.getTransactionID());
res.setStatusCode(1000);
return res;
}
// 处理到VASP的发送报告
public MM7VASPRes doDeliveryReport(MM7DeliveryReportReq mm7DeliveryReportReq) {
MM7DeliveryReportRes res = new MM7DeliveryReportRes();
return res;
}
// 处理到VASP的读后回复报告
public MM7VASPRes doReadReply(MM7ReadReplyReq mm7ReadReplyReq) {
MM7ReadReplyRes res = new MM7ReadReplyRes();
return res;
}
private void WriteLog(String MMSCID) {
int LogLevel = Config.getLogLevel();
String LogPath = Config.getLogPath();
int LogNum = Config.getLogNum();
int LogInterval = Config.getLogInterval();
int LogSize = Config.getLogSize();
FileOutputStream fos = null;
SimpleDateFormat simpledf = new SimpleDateFormat("yyyyMMddHHmm");
String temptime = simpledf.format(new Date(System.currentTimeMillis()));
long timeNow = 0;
try {
timeNow = simpledf.parse(temptime).getTime();
}
catch (ParseException pe) {
// pe.printStackTrace();
log.error("WriteLog()-1:" + pe);
}
if (logFileName.length() > 0) {
File logFile = new File(logFileName);
int index1 = logFileName.indexOf(MMSCID + "_");
int index11 = index1 + MMSCID.length() + 1;
int index2 = logFileName.indexOf(".", index11 + 1);
String strtimeFile = logFileName.substring(index11, index2);
long timeFile = 0;
try {
timeFile = simpledf.parse(strtimeFile).getTime();
}
catch (ParseException pe) {
// pe.printStackTrace();
log.error("WriteLog()-2:" + pe);
}
if ((timeNow - timeFile) > (long) LogInterval * 60 * 1000) {
N = 1;
this.deleteFile(LogPath, LogNum, MMSCID);
logFileName = LogPath + "/" + MMSCID + "_" + temptime + "." + df.format(N) + ".log";
try {
fos = new FileOutputStream(logFileName);
}
catch (FileNotFoundException fnfe) {
// fnfe.printStackTrace();
log.error("WriteLog()-3:" + fnfe);
}
}
else {
if (logFile.length() >= LogSize * 1024) {
if (N < LogNum)
N++;
else
N = 1;
this.deleteFile(LogPath, LogNum, MMSCID);
logFileName = LogPath + "/" + MMSCID + "_" + temptime + "." + df.format(N) + ".log";
try {
fos = new FileOutputStream(logFileName);
}
catch (FileNotFoundException fnfe) {
// fnfe.printStackTrace();
log.error("WriteLog()-4:" + fnfe);
}
}
else {
this.deleteFile(LogPath, LogNum, MMSCID);
try {
fos = new FileOutputStream(logFileName, true);
}
catch (FileNotFoundException fnfe) {
// fnfe.printStackTrace();
log.error("WriteLog()-5:" + fnfe);
}
}
}
}
else {
N = 1;
this.deleteFile(LogPath, LogNum, MMSCID);
logFileName = LogPath + "/" + MMSCID + "_" + temptime + "." + df.format(N) + ".log";
try {
File logFile = new File(logFileName);
fos = new FileOutputStream(logFile);
}
catch (FileNotFoundException fnfe) {
// fnfe.printStackTrace();
log.error("WriteLog()-6:" + fnfe);
}
}
try {
switch (LogLevel)
{
case 1: {
if (SevereBuffer.length() > 0)
fos.write(SevereBuffer.toString().getBytes());
fos.close();
SevereBuffer = new StringBuffer();
break;
}
case 2:
break;
case 3: {
if (SevereBuffer.length() > 0)
fos.write(SevereBuffer.toString().getBytes());
if (InfoBuffer.length() > 0)
fos.write(InfoBuffer.toString().getBytes());
fos.close();
SevereBuffer = new StringBuffer();
InfoBuffer = new StringBuffer();
break;
}
case 4:
break;
case 5:
break;
case 6: {
if (SevereBuffer.length() > 0)
fos.write(SevereBuffer.toString().getBytes());
if (InfoBuffer.length() > 0)
fos.write(InfoBuffer.toString().getBytes());
if (Finerbaos.size() > 0)
fos.write(Finerbaos.toByteArray());
fos.close();
SevereBuffer = new StringBuffer();
InfoBuffer = new StringBuffer();
Finerbaos = new ByteArrayOutputStream();
break;
}
case 7:
break;
default:
break;
}
}
catch (IOException ioe) {
// ioe.printStackTrace();
log.error("WriteLog()-END:" + ioe);
}
}
private void deleteFile(String logpath, int lognum, String MMSCID) {
File parfile = new File(logpath);
if (parfile.isDirectory()) {
File[] subfile = parfile.listFiles();
List list = new ArrayList();
for (int i = 0; i < subfile.length; i++) {
String name = subfile[i].getName();
if (name.indexOf(MMSCID) >= 0) {
list.add(name);
}
}
if (list.size() >= lognum) {
int deleteLength = list.size() - lognum + 1;
Comparator comp = Collections.reverseOrder();
Collections.sort(list, comp);
for (int i = list.size() - deleteLength; i < list.size(); i++) {
String strfile = (String) list.get(i);
File ff = new File(logpath + "/" + strfile);
ff.delete();
}
}
}
}
protected void service(HttpServletRequest req, HttpServletResponse rsp) throws IOException, ServletException {
ServletInputStream in = req.getInputStream();
int length = 0;
String sLength = null;
String sContentType = null;
SevereBuffer = new StringBuffer();
InfoBuffer = new StringBuffer();
// FinerBuffer = new StringBuffer();
Finerbaos = new ByteArrayOutputStream();
if (Config == null) {
// System.out.println("读取默认配置文件失败");
log.warn("ERROR:读取默认配置文件失败,系统返回!!!");
SevereBuffer.append("read Config file failure");
return;
}
if ((sLength = req.getHeader("content-length")) == null) {
log.warn("取得的头部content-length为空,系统返回!!!");
rsp.sendError(404);
return;
}
length = Integer.parseInt(sLength);
if ((sContentType = req.getHeader("Content-Type")) == null) {
log.warn("取得的头部Content-Type为空,系统返回!!!");
rsp.sendError(404);
return;
}
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int readlen = 0;
int totallen = 0;
int nc = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -