월별 글 목록: 2009년 11월월

Restart IIS from remote computer

Windows의 IIS에 배포를 위해서 xcopy 같은 명령어를 많이 사용하는데, 그런경우 copy가 되는 도중에 IIS가 읽어버리면 계속 cache miss 어쩌구 저쩌구 에러로그가 계속 쌓입니다. 그런 경우 해결책이 웹서버 리스타트 인데요..  iisreset 으로 리스타트를 합니다.  여러대의 서버에 배포를 하고 iis reset을 하기 위해서는 아래는 참고하시면 좋은 팁이 될듯 합니다.^^

파일 카피

restart iis from remote computer

iisreset.exe
\\computer_name

or
sc.exe \\computer_name stop w3svc
sc.exe
\\computer_name start w3svc

Exception StackTrace to a String

애플리케이션에서 Exception이 발생하면, 일반적으로 디버깅을 위해서 Exception의 Call Stack을 저장한다. 이 내용은 Exception의 Call Stack을 String으로 변환하는 코드이다. Save Exception StackTrace to a String 에서 Exception을 String으로 변환하는 쉬운 예를 보여주고 있다.

몇 개의 예가 있긴 한데, 아래의 코드가 간결하고 좋다..

public static String getException(Exception e ) {
  StringWriter w = new
  StringWriter();
  e.printStackTrace(new PrintWriter(w));
  return w.toString();
}

addShutdownHook() problem with java.util.Timer instance

java.util.Timer를 Logging 라이브러리에서 사용을 하고 있고, Logging라이브러리를 사용하고 있는 로깅서버에서 addShutdownHook() 메서드를 사용해서 등록한 쓰레드가 실행이 안 된다.. ^^;;

Java API 문서를 보면, 아래와 같은 내용이 있다.

Timer 객체의 마지막 라이브 참조가 종료해, 미 처리의 태스크가 모두 실행되면, 타이머의 태스크 실행 thread도 동시에 완료해, 가비지 컬렉트됩니다. 다만, 이것에는 한없고 긴 시간이 걸리는 경우가 있습니다. 디폴트에서는 태스크의 실행 thread는 「demon thread」로서는 실행되지 않기 때문에 어플리케이션이 종료하지 않게 할 수 있습니다. 타이머의 태스크 실행 thread를 즉시 완료시키는 경우, 호출측은 타이머의 cancel 메서드를 호출할 필요가 있습니다.

흠, 그렇다, 종료가 안된다..^^;;
그래서, Timer() 대신 daemon으로 Timer객체를 생성하면, addShutdownHook() 메쏘드에 등록된 쓰레드의 run() 메쏘드가 잘 동작한다. ^^;;

Timer()

새로운 타이머를 작성한다.

Timer(boolean isDaemon)
demon로서 실행되도록 지정할 수 있는 관련 thread를 가지는 새로운 타이머가 작성됩니다.

sjava-logging 프로젝트의 소스 및 문서 위치 변경합니다.

구글 프로젝트 호스팅의 도움을 받아서 코드 및 문서를 이동합니다.
기본적인 문서는 아래의 위치를 참고하세요..
http://code.google.com/p/sjava-logging/wiki/
http://code.google.com/p/sjava-logging/wiki/Introduce

그리고, 소스는 아래의 위치를 참고하세요.
http://code.google.com/p/sjava-logging/source/checkout
http://code.google.com/p/sjava-logging/source/browse/
http://code.google.com/p/sjava-logging/source/list

다시한번, 구글이 좋아지네요.. ^^

sjava-config 프로젝트의 소스 및 문서 위치 변경합니다.

구글 프로젝트 호스팅의 도움을 받아서 코드 및 문서를 이동합니다.
기본적인 문서는 아래의 위치를 참고하세요..
http://code.google.com/p/sjava-config/wiki/
http://code.google.com/p/sjava-config/wiki/Introduce

그리고, 소스는 아래의 위치를 참고하세요.
http://code.google.com/p/sjava-config/source/checkout
http://code.google.com/p/sjava-config/source/browse/
http://code.google.com/p/sjava-config/source/list

다시한번, 구글이 좋아지네요.. ^^