윈도 원격 서버에서 다른 윈도 서버 IIS 재 시작 방법

윈도의 IIS에 앱을 배포하는데 xcopy 같은 명령어를 많이 사용한다. 이 경우에, 앱과 각종 리소스 파일을 복사하는 도중에 IIS가 복사 중인 파일을 읽어서 종종 cache miss… 에러 로그가 쌓이는 것을 볼 수 있고, 이 경우의 해결책이 IIS를 재시작하면 된다. 이 경우 iisreset 명령으로 재시작한다. 한대의 경우에는 크게 문제가 없지만, 여러 대의 서버를 운영하는 경우에는 한 서버에서 다른 서버의 IIS를 재시작하는데 아래와 같은 명령을 사용하면 쉽게 재시작할 수 있다.

원격 서버에서 IIS를 재시작하는 명령

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

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