2016-10-10 1 views
0

내 응용 프로그램이 특정 초 동안 시간 초과되도록하려고하지만 응답을받을 때까지 지정된 URL에 계속 연결하려고합니다. 아래는 내가 사용하고있는 코드입니다. 내가시스템 속성을 설정하여 HttpURLConnection 시간 초과가 작동하지 않습니다.

connection.setConnectTimeout(Integer.parseInt(timeout)); 

다음 속성을 다음으로 설정하면

System.getProperties().setProperty("sun.net.client.defaultConnectTimeout", timeOut); 

System.getProperties().setProperty("sun.net.client.defaultReadTimeout", timeOut); 

URL url = new URL(targetURL); 

HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 

하지만 서버의 응답을 기다리지 않고 원하는 시간에 시간 초과됩니다.

그래서 시스템 속성 만 사용하여 시간 초과가 발생하지 않는 이유는 무엇입니까?

: behavior/bug과 관련이 있습니까? 아니면 Java 1.4에서 작동하는 데 사용되는 동일한 코드가 있지만 지금은 Java 1.7 사용하고 있기 때문에 Java 버전과 어떤 관계가 있습니다.

+0

@ brso05 제안 할만한 제품이 있습니까? – Steve

답변

2

객체 지향 디자인에 대한 표준 접근 방식은 방어 복사입니다. 이것은 메소드가 실제 내부 객체 자체를 반환하는 것이 아니라 데이터 사본을 반환하므로 객체를 가져온 API를 거치지 않고 다른 코드가 유해한 동작을 시도 할 수 없으므로 변경 사항의 유효성을 검사 할 수 있습니다.

System.getProperties()내부 시스템 프로퍼티의 복사하는 속성 개체를 반환합니다. 대신 System.setProperty을 사용하십시오.

+1

당신은 "방어적인 복사"문제에 대해서는 맞지만 당신이 제안한 변경 사항으로는 작동하지 않습니다. – Steve

+0

'timeOut'의 실제 값은 무엇입니까? – VGR

+0

40000 밀리 초 – Steve

관련 문제