Ajax 질문 있어요.
조회수 2915회
jquery-1.8.2.min.js:2 GET http://localhost:8080/api/trmnlInfoColctToFile.do?imei=A2&phoneSerial=testS…=lte&androidVersion=1.1&swVersion=aa_f10_1212&extra=extra1&_=1461227407494 net::ERR_CONNECTION_RESET
에러는 위랑 같습니다.
제가 브라우저 단에서 반복문 안에 ajax로 비동기 통신 1000번 수행합니다. 서버를 키고 처음 천번 돌리면 수행안된 5번의 request 상태는 pending 됩니다. 두번째 부터는 1000번 요청 수행 다 되고요.
현재 고객이 보내는 데이터를 파일로 저장 중이라 5개 요청까지도 다 받아야 하거든요.
이건 어디 문제인가요? 톰캣 문제인가요? 아니면 ajax 문제인가요.
브라우저단 코드 입니다
<script type="text/javascript">
var i=0;
function testfunction(){
var testid = $("#Bid").val();
if(testid==""){
alert("아이디 입력 해주세요.");
return;
}
//http://localhost:8080/api/trmnlInfoColctToFile.do?imei=testIMEI3&phoneSerial=testSerial1&phoneModel=testModel1&phoneUptime=1:1:1&lineNumber=01000010001&pttNumber=1|123*456&networkName=lg&networkType=lte&androidVersion=1.1&swVersion=aa_f10_1212&extra=extra1
var i=0;
while(i!=1000){
var myurl = "http://localhost:8080/api/trmnlInfoColctToFile.do?imei="+testid+i+"&phoneSerial=testSerial1&phoneModel=testModel1&phoneUptime=1:1:1&lineNumber=01000010001&pttNumber=1|123*456&networkName=lg&networkType=lte&androidVersion=1.1&swVersion=aa_f10_1212&extra=extra1";
$.ajax({
type: 'GET',
url: myurl,
cache: false,
success: function(data) {
console.log("성공"+data);
},
error: function(xhr) {
console.log("Error: " + xhr.statusText);
}
});
i++;
}
console.log("종료");
}
</script>
비즈니스 단 코드 입니다.
public synchronized void trmnlInfoColctToFile(){
try{
if(check==false){
wait();
check=true;
}
check = false;
System.out.println("수행"+ exc++);
String Time = new SimpleDateFormat("yyyyMMddHHmmss").format(Calendar.getInstance().getTime());
StringBuffer sb = new StringBuffer();
sb.append(((TrmnlinfoColctVo)vo).getImei() == null ? "" : ((TrmnlinfoColctVo)vo).getImei());
sb.append(",").append(((TrmnlinfoColctVo)vo).getPhoneSerial() == null ? "" : ((TrmnlinfoColctVo)vo).getPhoneSerial());
sb.append(",").append(((TrmnlinfoColctVo)vo).getPhoneModel() == null ? "" : ((TrmnlinfoColctVo)vo).getPhoneModel());
sb.append(",").append(((TrmnlinfoColctVo)vo).getPhoneUptime() == null ? "" : ((TrmnlinfoColctVo)vo).getPhoneUptime());
sb.append(",").append(((TrmnlinfoColctVo)vo).getLineNumber() == null ? "" : ((TrmnlinfoColctVo)vo).getLineNumber());
sb.append(",").append(((TrmnlinfoColctVo)vo).getPttNumber() == null ? "" : ((TrmnlinfoColctVo)vo).getPttNumber());
sb.append(",").append(((TrmnlinfoColctVo)vo).getNetworkName() == null ? "" : ((TrmnlinfoColctVo)vo).getNetworkName());
sb.append(",").append(((TrmnlinfoColctVo)vo).getNetworkType() == null ? "" : ((TrmnlinfoColctVo)vo).getNetworkType());
sb.append(",").append(((TrmnlinfoColctVo)vo).getAndroidVersion() == null ? "" : ((TrmnlinfoColctVo)vo).getAndroidVersion());
sb.append(",").append(((TrmnlinfoColctVo)vo).getSwVersion() == null ? "" : ((TrmnlinfoColctVo)vo).getSwVersion());
sb.append(",").append(((TrmnlinfoColctVo)vo).getExtra() == null ? "" : ((TrmnlinfoColctVo)vo).getExtra());
String fileName = Time.substring(0, 10)+".req";
File AbsolPath = new File(fileName);
String Mypath = AbsolPath.getAbsolutePath();
Mypath = Mypath.substring(0,Mypath.lastIndexOf("\\")); // 이클립스 폴더로
Mypath = Mypath.substring(0,Mypath.lastIndexOf("\\")); // tools 폴더로
Mypath = Mypath.substring(0,Mypath.lastIndexOf("\\")); // 프로젝트 폴더로
Mypath = Mypath+"\\workspace\\KtpOta\\WebContent\\data\\ing";
//통신 테스트
File testPath = new File(Mypath+"\\"+((TrmnlinfoColctVo)vo).getImei());
FileWriter tfw = null;
tfw = new FileWriter(testPath, true);
tfw.write(sb.toString()+"\n");
tfw.close();
File myPath = new File(Mypath);
//디렉토리 없을 경우 생성
if(!myPath.exists()){
myPath.mkdirs();
}
File myFilePath = new File(Mypath+"\\"+fileName);
FileWriter fw = null;
if(myFilePath.isFile()){
fw = new FileWriter(myFilePath, true);
fw.write(sb.toString()+"\n");
fw.flush();
fw.close();
}else{
fw = new FileWriter(myFilePath, false);
fw.write(sb.toString()+"\n");
fw.flush();
fw.close();
}
if(check==false){
check = true;
notify();
}
}catch(Exception e){
System.out.println("처리실패"+e);
}
}
댓글 입력