Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- SPC
- Android
- R
- 보조정렬
- Python
- table
- JavaScript
- IntelliJ
- Eclipse
- Express
- vaadin
- 공정능력
- Kotlin
- plugin
- mybatis
- Spring
- tomcat
- NPM
- Java
- GIT
- Sqoop
- SSL
- MSSQL
- react
- hadoop
- es6
- xPlatform
- SQL
- mapreduce
- window
Archives
- Today
- Total
DBILITY
java timeserver 시간 확인하기 본문
반응형
서버시간의 오차가 많이 발생한다.
윈도우2012던가에서 자꾸 발생했는데, 저 경우는 대부분 윈도우 타임서버에 문제가 있다.
time2.kriss.re.kr이나 time.bora.net으로 변경해주면 잘되는데,각 서버간의 시간이 달라서야
APP에서 SQL에 시간을 일일이 넣어서 사용해야 하나?!
윈도우10에서 명령창에 w32tm /query /verbose 해보자.
time서비스가 실행중이지 않으면 실행으로
서버시간마저 스케줄링을 해야하는 건가?
apache-commons-net을 사용했다.
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.2</version>
</dependency>
package com.dbility.batch;
import java.io.IOException;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.net.ntp.NTPUDPClient;
import org.apache.commons.net.ntp.TimeInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* Description
*
*
* @author hyperrookie@gmail.com
*
* @version 1.0.0
* @date 2017. 12. 26.
*=======================================================================
* Date Name Revision History
*=======================================================================
* 2017. 12. 26. hyperrookie@gmail.com Creation
*=======================================================================
*/
public class TimeChecker {
private static final Logger LOG = LoggerFactory.getLogger(TimeChecker.class);
public static void main(String[] args) {
String[] timeServer = {"time2.kriss.re.kr","time.kriss.re.kr","time.bora.net","time.windows.com",
"0.pool.ntp.org","1.pool.ntp.org","2.pool.ntp.org","3.pool.ntp.org"};
NTPUDPClient client = new NTPUDPClient();
client.setDefaultTimeout(10000);
boolean next = true;
try {
client.open();
for (String server : timeServer) {
if ( next ) {
try {
InetAddress inetAddress = InetAddress.getByName(server);
TimeInfo timeInfo = client.getTime(inetAddress);
long returnTime = timeInfo.getReturnTime();
Date time = new Date(returnTime);
//Date localTime = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).parse("2017-12-27 09:21:00");
Date localTime = new Date();
long timeGap = Math.abs(time.getTime()-localTime.getTime())/1000;
LOG.info("time : {}, {}", server,new Object[]{time,localTime,timeGap});
if (timeGap > 300) {
LOG.info("{}", "표준시간과 시스템간 시간차가 5분이상~서버시간을 확인하셔~");
}
next = false;
break;
} catch (UnknownHostException ue) {
LOG.info("server error : {}", server, ue.getMessage());
ue.printStackTrace();
} catch (SocketTimeoutException skte) {
LOG.info("server error : {}", server, skte.getMessage());
skte.printStackTrace();
} catch (IOException ioe) {
LOG.info("server error : {}", server, ioe.getMessage());
ioe.printStackTrace();
}/* catch (ParseException pe) {
pe.printStackTrace();
}*/
}
}
} catch (SocketException ske) {
LOG.info("error : {}", ske.getMessage());
ske.printStackTrace();
} finally {
client.close();
}
}
}
반응형
'java > basic' 카테고리의 다른 글
maven uber-jar packaging (0) | 2018.04.30 |
---|---|
maven build war package exclude paths or files ( 특정 경로 제외 ) (0) | 2018.04.11 |
java summer time ( daylight saving time, DST ) (0) | 2017.12.16 |
java for loop (0) | 2017.10.18 |
maven build Using platform encoding (UTF-8 actually) to copy filtered.... (0) | 2017.10.17 |
Comments