Ryon`s Life

Programing +9
    

■ Java Exception 처리시에 Exception 내용 String 객체로 받아 출력하기


Java Exception의 전체 내용을 로그에 찍고 싶어 catch 문에 e.toString() 값을 log4j에 던져 보았습니다.


확인 결과 해당 e.getMessage() 한 결과와 별반 다르지 않게 에러코드 메세지만 출력이 되고, 전체 에러 내용이 다 변환되지는 않더군요.


아무튼 찾아보니 방법이 있어 기록 합니다.


* 테스트 소스


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import java.*;
class MyFirstProgram {
 public static void main(String[] args) {
  Exception e = new Exception("Exception String Print !!");
  ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  PrintStream pinrtStream = new PrintStream(outStream);
  e.printStackTrace(outStream);
  String printStackTraceStr = out.toString();
  System.out.println("printStackTrace to String ==> " + printStackTraceStr);
 }
}




- e.printStackTrace()하면 System.out에 찍힘.

- 출력할 Exception 내용을 PrintStream을 생성해서 건네 주면 String 객체로 변환 가능.

<12 class="hx cmt">
    

Java SE 6 버전이 필요해서 다운로드 사이트를 찾아서 포스팅을 했었습니다.

Java SE 5 버전도 Java SE 6 버전처럼 나중에 필요 할 지 모르기 때문에 다운로드 사이트를 포스팅 해두려 합니다.


Java SE 5 버전 다운로드 사이트


해당 사이트로 접속을 하면 Java SE 5 버전  Build 별로 다운로드가 가능하네요.





<12 class="hx cmt">
    

Java SE 6 버전이 필요해서 다운로드를 좀 받아 보려고 했습니다.

그래서 Oracle Official 사이트에서 Java SE 6 버전을 다운로드 하려고 했으나, 페이지로 가는 방법을 찾을 수가 없다군요.

그래서 검색을 통해 찾아낸 다운로드 페이지를 공유 할까 합니다.


Java SE 6 버전 다운로드 사이트


해당 사이트로 접속을 하면 Java SE 6 버전  Build 별로 다운로드가 가능하네요.





※ 다운로드 정책이 바뀌었는지 다운로드시 Oracle 사의 Official 사이트 계정이 필요하네요.

<12 class="hx cmt">
    

from 안에 선언된 객체들을 불러 올 경우 보통은 document.폼명.객체명 으로 해당 객체를 

Javascript에서 참조할 것이다. 허나 오늘 얘기 하고자 하는 것은 간단하지만 놓치기 쉬운 부분에 대해 

얘기 하고자 한다.

유지보수 중 Radio 버튼을 이용하여 처리를 해야 하는 경우가 발생 하였다. 조금 더 디테일 하게 얘기

하자면, 이용약관 밑에 동의여부를 만들어 달란다. 

기존이라면 위의 예시 처럼 document.폼명.객체명 으로 참조 했었겠지만, 요세는 크로스 브라우징 및 

웹접근성을 고려해야 하여, document.폼명.객체명 코드 보다는 document.getElementById 코드와

getElementByName 코드를 주로 사용하게 되었는데...

Radio 버튼을 두개이상 만들어서 Javascript로 제어를 하려 하니 getElementById로는 제어가 되지 

않았다. 그래서 getElementByName도 사용 해봤지만 객체를 찾지 못하였다. 

그래서 정리했다.

* getElementById : 객체의 고유 ID 값 참조 (싱글 객체로만 인식됨)

* getElementByName : 객체의 고유 Name 값 참조 (싱글 객체만 인식됨)

* getElementsByName : 객체의 고유 Name 값 참조 (두개 이상 동일 Name을 갖는 객체 배열로 인지)


Radio 버튼을 두개 이상 사용시 getElementsByName 로 인식이 가능하다.

<12 class="hx cmt">
    
회원가입 폼 관련하여 수정 중 특정 textbox 객체의 value값이 서블릿으로 넘어가지 않는 경우가 발생 되었다.

만 하루를 테스트해보다 찾은 결론은  textbox 객체에 disable="true" 옵션 때문이었다.

해당 옵션을 readonly 로 변경하니 서블릿으로 값이 정상적으로 넘어갔다.

*  disable="true" 
  - 해당 객체의 value값을 사용 할 수 없도록 하는 옵션이며, 임의 변경이 불가능 하다.
    또한, 기본적으로 Gray 처리를 한다. 고로, 서블릿에 해당 값을 submit 할 수 없다.

* readonly
  - 해당 객체의 value값에 대해 임의 변경만 불가능 하다. 하지만, 해당 객체의  value값에 대해 읽기
    권한은 가지고 있어 서블릿에 해당 값을 submit은 가능 하다.

우선 확인된 사항은 이렇게 이며, 해당 옵션의 차이점을 좀 더 찾아보고 업데이트를 해야 겠다.
<12 class="hx cmt">
    

PHP 유지보수를 하던 중 뒤로가기시 만기된 페이지가 떠서 해결 책을 찾았다.

php.ini 파일의 session.cache_limiter 값을 아래와 같이 변경 하면 된다.

변경전(default 값) : session.cache_limiter = nocache;
변경후                 : session.cache_limiter = ;


단, 주의 사항은 phpInfo() 함수를 이용하여, 어떤 php.ini 파일을 php 환경파일로 사용하는지 확인 후

변경 해야 한다.

확인은  phpInfo()함수를 이용 php 파일을 만든 후 웹으로 띄어놓고 Loaded Configuration File

항목을 확인 하여 해당 파일을 수정 하면 된다.
<12 class="hx cmt">
    
웹 개발 및 유지보수 시 자바스크립트 오류가 나는 경우가 있다.

실제로 비즈니스 로직상의 문제는 없으나, 오류가 나는 경우가 있다.

필자도 어제 그걸로 고민을 하다가 결국 해결을 했다.

필자의 경우는 사이트(클라이언트) 쪽에 설치된 웹이 PHP+Smarty(Framework) 기반으로 개발이 

되어 있었고, 유지보수를 하였다.

우선 자바스크립트 오류(document.XXX.XXXX은 null이거나 개체가 아닙니다) 오류가 날 경우 

1. 참조 하려는 개체의 name이 정확한지 또는 중복인지 확인 한다.
   --> 만약 틀리다면 개체 name을 맞춰 주면 되고, 중복이라면 중복된 개체 중 하나를 수정 해준다.
         (아쉽게도 필자는 정상이였다. 고로 필자는 패스 했다.)

2. 참조 하는 name이 정상이라면 html 태그를 확인 하자!!
   --> 웹 개발을 한 후에 유지보수를 맡은 개발자가 수시로 바뀌면서 소스는 더러워지고, 간혹 일정에
         쫒겨, form 이나 table 안닫아서 문제가 생기더군요. 저도 결국 include 되는 파일에서 안닫힌 
         태그가 있어서 닫았 답니다.

<12 class="hx cmt">
    
Windows7 64bit로 갈아 탄 후 JSP를 다시 공부해보기 위해 아파치 톰캣을 설치를 했습니다.

아파치 톰캣이 64bit OS를 지원 이전에는 Windows7 64bit OS에서 server start를 시켜도 전혀

서버가 동작하지 않고 이클립스에서는 동작하는 오류가 있어서 XP모드를 설치하여 사용을 했습니다.

톰캣이 64bit OS를 지원을 시작하면서 다시 설치를 해봤는데 정상 동작은 했지만 이번에는 

아래 스샷과 같은 에러메세지 창이 뜨더군요.


사실 비스타는 1시간도 채 안써보고 지웠고 XP에서 바로 Windows7으로 넘어왔다고 해도 무방한

저로써는 사실 원인의 멀까 고민이 많았습니다.

근데 결국 권한 문제더군요. 

지금부터 위의 스샷처럼 메세지 창이 나타날 경우에 정상 작동 하도록 하는 방법에 대하여 

알아 보겠습니다.

사실 톰캣 설치시 관리자권한 계정으로 설치 하셨다면 위와 같은 스샷은 나타나지 않지만

유저 계정으로 설치를 했을 경우에는 위와 같은 스샷이 나타나더군요.

1. 설하고 본론으로 들어가서 우선 컴퓨터(내컴퓨터) 창을 열어 주세요.

2. 컴퓨터(내컴퓨터) 창이 열리면 아파치 톰캣이 설치된 폴더를 아래의 그림처럼 찾아 갑니다.


3. 2.번의 그림에서 tomcat6w.exe 파일을 마우스 우 클릭 후 속성을 클릭 합니다.

4. 속성창이 나오면 호환성 탭으로 이동 합니다.


5. 모든 사용자에 대한 설정 변경 버튼을 클릭 후 아래의 스샷과 같은 창이 나오면 권한수준의
   관리자 권한으로 이 프로그램 실행을 체크해 주세요.


6. 속성창을 모두 확인버튼을 누르고 나옵니다.

7. 시작메뉴 - 프로그램에 가서 Monitor Tomcat을 실행해 봅니다.


8. 사용자 계정 컨트롤 창이 나오면 "예"를 클릭해 주세요.

9. 톰캣 모니터링 아이콘이 정상적으로 나타나는지 확인 합니다.

                                  
10. 톰캣 모니터링 아이콘을 이용하여 서버가 Start와 Stop 명령이 제대로 동작하는지 확인합니다.
<12 class="hx cmt">