LOGBack Configurator with JMX

Posted at 2014.07.20 23:11 | Posted in Java+/Example

Introduce


요즘 logback 많이 쓸꺼다... "Reasons to prefer logback over log4j"에 보면 이제는 log4j 를 버리고 logback 을 써야하는지 이유를 영어로 설명 해놓았다. ㅅㅂ -_-;;


딴건 잘 모르것고 맘에 드는걸 보자면... 

Automatic reloading of configuration files (설정 파일 자동으로 다시 로드)

- Automatic removal of old log archives (이전 로그 아카이브 자동 삭제)

- Automatic compression of archived log files (아카이브 로그 파일 자동 압축)


서버를 재시작 하지 않고 logback.xml 파일을 수정하면 바로 설정이 적용 된다고 한다. ㅎㅎ


그리고 내가 관심 있게 본 하나는 JMX 가 지원된다. JConsole 로 테스트 해보니까 로그 레벨 변경이 바로 적용 되었다.


JMX 를 통해서 할 수 있는 짓거리는 아래와 같다. 몇개 안되고 메소드명 만으로도 이해가 될꺼다.


public interface JMXConfiguratorMBean {

  

  void reloadDefaultConfiguration() throws JoranException;

  

  void reloadByFileName(String fileName) throws JoranException, FileNotFoundException;

  

  void reloadByURL(URL url) throws JoranException;

  

  void setLoggerLevel(String loggerName, String levelStr);

  

  String getLoggerLevel(String loggerName);

  

  String getLoggerEffectiveLevel(String loggerName);


  List<String> getLoggerList();

  

  List<String> getStatuses();


}


오랜만에 웹 프로젝트나 하나 만들어 볼까.. 하고 이상한거 만들어 봤다 -_-




Example


Spring Framework 4.0.5

jQuery 1.11.1

jQuery UI 1.11.0

pqGrid 1.1.3


Logback ConfiguratorLogback Configurator 화면! 매우 간단한 화면이다 ㅎㅎ.


그리드에서 로그 레벨을 클릭하면 변경 할 수 있는 콤보 박스가 나와서 수정하면 바로 반영이 된다.


그리고 아래 Test 버튼을 클릭하면 서버 에 DEBUG/INFO/WARN/ERROR 4줄의 로그를 출력하게 된다.


2014-07-20 22:50:06,375 [http-bio-8080-exec-11] DEBUG c.a.c.LogController - this is debug level log.

2014-07-20 22:50:06,375 [http-bio-8080-exec-11] INFO  c.a.c.LogController - this is info level log.

2014-07-20 22:50:06,375 [http-bio-8080-exec-11] WARN  c.a.c.LogController - this is warn level log.

2014-07-20 22:50:06,375 [http-bio-8080-exec-11] ERROR c.a.c.LogController - this is error level log.


위의 "com.antop.controller.LogController" 의 레벨을 WARN으로 바꾸고 Test 하면? 당연 WARN/ERROR 두줄만 나오게 된다.


Spring MVC 의 URL 매핑은 아래와 같아. 이걸 그림으로 표현주는 툴이 있으면 좋겠네 ㅎㅎ


스프링 MVC URL 매핑 구성도


클래스 다이어그램은 아래와 같다. 어때요? 참 쉽죠~?


Class Diagram클래스 다이어그램. 이게 전부다. -_-/


끝이다.




Download


더이상의 자세한 설명은 생략한다 -_-;; 소스 보거라.


logback.jmx.war


↑ 소스 포함 WAR 파일


logback.jmx.zip


↑ 이클립스 프로젝트 파일 (메이븐)


'Java+ > Example' 카테고리의 다른 글

LOGBack Configurator with JMX  (0) 2014.07.20
현지어로 언어명 보여주기  (0) 2014.02.09
2014년 도로명 주소 사용에 따른 우편번호 준비  (2) 2013.12.22
JSTL Custom Tag using Spring Beans  (0) 2013.12.01
Spring Message Source from Database  (1) 2013.03.03
Infinite Routing DataSource  (1) 2013.01.13
Mybatis Type Handler  (1) 2012.09.30
Using AUTO_INCREMENT keys  (0) 2011.03.01

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

Image Pyramid

Posted at 2014.01.30 03:28 | Posted in Mini Project

Introduction


아주 오래 전 플렉스와 실버라이트가 난리를 쳤을 때 난 플렉스를 공부 했었다.


그 때 훈스닷넷에서 하는 실버라이트 세미나를 갔었는데(왜 플랙스 세미나를 안가고...) 그 때 발표자(?)가 발표를 했던게 실버라이트의 이미지 피라미드였다.


그 때.. 난 "아 참 조쿠나~" 라고 생각 해놨다가 꽤 오랜 시간이 지난 지금 생각이 났다. ㅋㅋㅋ




Fundamental


고용량의 큰 이미지가 있다. 이 이미지를 브라우저에서 본다고 하자.


그러면 실제로 화면에 보여지는 이미지의 영역은 얼마 안될 것이다.



하지만 큰 이미지를 한번에 가져오기 때문에 네트워크 낭비가 심하다.


이 문제를 해결하기 위해서 이미지를 잘게 자른 후 화면(브라우저)에 보이는 영역만 불러오는 것이다!



이것 저것 찾아보니까 이미지 피라미드에 대한 문서들이 있었다. 


Web Map Tile Services for Spatial Data.pdf


Pyramid methods in image processing.pdf



이미지 저장 시에 참고한 그림는 아래와 같다. 아래 그림에 영감을 받아서 만들어 보았다.





Project

 

데모 : http://antop.nerv.kr/image.pyramid/



데이터베이스가 서버에는 MySQL이고, 샘플은 Derby 이다.


pyramid.txp



이 ERD가 자바에서는 아래 그림과 같이 클래스 구조를 가진다. ORM!





jQuery Plugin


이미지를 저장하는 부분보다 보여주는 부분이 더 개발 비율이 많다. 화면에 보여주는데 사용한 제이쿼리 플러그인은 아래와 같다.


jQuery Form Plugin - AJAX 로 폼 전송이나 파일 업로드를 할 수 있는 플러그인


jQuery Upload File - jQuery Form Plugin 을 이용하여 파일 업로드를 하는데 상태바를 지원해준다.


jQuery Mouse Wheel Plugin - 마우스 휠이 굴러가는 이벤트를 감지할 수 있게 해준다.


jQuery Schedule - 스케쥴링을 가능하게 하는 해준다. (Quartz 같은거...)


jQuery Dragscrollable (jQuery 홈페이지 개편되면서 플러그인 링크 죽음) - 마우스를 끌면 화면을 스크롤 해줌.


perfect-scrollbar : 가상 스크롤바를 달아준다.


Element Onscreen Visibility - 선택한 태그(selector)가 화면에 보이고 있는 태그인지를 판별한다.




이제 힘들어서 못쓰겠네 후.... 알아서 ㄱㄱ 질문은 받음 -_-/


image.pyramid.src.zip


↑ 이클립스 프로젝트 소스 파일 (메이븐)


image.pyramid.war.zip.001


image.pyramid.war.zip.002


↑ WAR 파일 (7-zip 분할)


'Mini Project' 카테고리의 다른 글

Image Pyramid  (0) 2014.01.30
Proftpd Manager  (0) 2012.12.10
게시판 2.0  (5) 2011.07.27
Sudoku  (0) 2011.06.09
간단한 JAVA 실행기(?)  (1) 2011.03.21
Forecast Repository  (8) 2010.11.30
Sales History API  (2) 2010.05.27
Order Entry API  (0) 2010.05.13
Human Resources API  (0) 2010.05.10
게시판 1.0  (1) 2010.03.11
비밀번호 생성기(Generate Password)  (1) 2010.02.10

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

Forecast Repository

Posted at 2010.11.30 15:05 | Posted in Mini Project

2011년 2월 10일 - 수정 사항
 - json-taglib 수정(http://antop.tistory.com/99). 이에 따른 js에서 강제 파싱부분 제거
 - ExtJS 3.3.1 업그레이(아무 변화 없음 -_-) 및 필요한 라이브러리만 담음
 - IE에서 열라 느린거 해결 못함 ㅠ_ㅠ

forecast.part1.rar
forecast.part2.rar

해보시려면 sql(/WEB-INF/sql/*.sql)로 스키마 세팅하고, WEB-INF/applicationContext.xml 에서 DB 설정을 해줘야 합니다.

 


http://antop.nerv.kr/forecast


새로 개편하여 화면을 만들었습니다. 데이터베이스 구조만 빼고 완전 다 바뀌었군요....

  1. Cron을 이용하여 돌리던 배치(스케쥴링)를 Quartz를 이용(Spring과 연동)하여 처리 하였습니다.
  2. 화면은 ExtJS 3.2.1 + (Hightcharts 2.0.5 + jQuery 1.4.3)을 사용하였습니다
  3. 서버단은 쓰던대로 Spring 2.5.6.SEC02를 사용하였습니다.

아래 그림은 전체 흐름 구상입니다.



그림의 서버단은 다 따로 돌아가게 그려졌는데 -_-.. 다 스프링과 연동되어 돌아갑니다.

클라이언트에서는 풀 AJAX를 사용하고 서버에서는 url로 요청을 받고 json으로 응답합니다.

클라이언트의 레이아웃 구성은 아래 그림과 같습니다.



center의 tab panel의 레이아웃 구성은 아래와 같습니다.




Parameter

URL 요청 파라미터와 응답 아래와 같습니다.

- 현재날씨 목록 : http://antop.nerv.kr/forecast/whole.do?action=list&stn_id=100&from_date=2010-07-01&to_date=2010-07-14

 파라미터  필수  포맷  설명 
 stn_id  ○   숫자  지역 코드 
 from_date  ○   yyyy-MM-dd  시작 날짜
 to_date  ○  yyyy-MM-dd  마지막 날짜

- 현재날씨 상세 : http://antop.nerv.kr/forecast/whole.do?action=detail&stn_id=100&date=2010-07-08
 파라미터  필수  포맷  설명
 stn_id  ○  숫자  지역 코드
 to_date  ○  yyyy-MM-dd  날짜

- 현재날씨 제한 날짜 : http://antop.nerv.kr/forecast/whole.do?action=limit

- 현재날씨 지역 목록 : http://antop.nerv.kr/forecast/whole.do?action=stn


- 동네예보 목록 : http://antop.nerv.kr/forecast/town.do?action=list&area=1100000000&from_date=2010-08-02&to_date=2010-08-10
 파라미터  필수  포맷  설명
 area  ○  숫자(10자리)  지역 코드
 from_date  ○  yyyy-MM-dd  시작 날짜
 to_date  ○  yyyy-MM-dd  마지막 날짜

- 동네예보 상세 : http://antop.nerv.kr/forecast/town.do?action=detail&area=1100000000&date=2010-10-01
 파라미터  필수  포맷  설명
 area  ○  숫자(10자리)  지역 코드
 date  ○  yyyy-MM-dd  날짜

- 동네예보 제한 날짜 : http://antop.nerv.kr/forecast/town.do?action=limit

- 동네예보 지역 목록 : http://antop.nerv.kr/forecast/api.do?action=area
 파라미터  필수  포맷  설명
 parent  ×  숫자(10자리)  상위 지역 코드


- 주간예보 목록 : http://antop.nerv.kr/forecast/week.do?action=list
 파라미터  필수  포맷  설명
 location  ○  문자(8자리)  도시 코드
 from_date  ○  yyyy-MM-dd  시작 날짜
 to-date  ○  yyyy-MM-dd  마지막 날짜

- 주간예보 제한 날짜 : http://antop.nerv.kr/forecast/week.do?action=limit

- 주간예보 지방 목록 : http://antop.nerv.kr/forecast/api.do?action=province

- 주간예보 도시 코드 : http://antop.nerv.kr/forecast/api.do?action=location
 파라미터  필수  포맷  설명
 province  ×  문자(8자리)  지방 코드


Database Structure

테이블은 하이버네이트로 생성하였습니다.

동네예보



주간예보



전국예보



※ Toad Data Modeler 3.5 로 뽑아낸 데이터베이스 구조 입니다.









이전 버전의 forecast 보기




hey30 님의 질문 답변

아래는 조금 더 자세하게 그린 그림입니다.



이 프로젝트를 이해 하려면 최소한 'ExtJS'와 'Spring MVC', 'JSON' 정도는 아셔야 합니다. ㅠ_ㅠ

클라이언트단과 서버단은 완전히 분리 되어 있습니다. 100% AJAX[각주:2]로만 주고 받습니다.

클라이언트단은 꼭 ExtJS가 아니어도 되고, 서버단도 역시 뭘로 만들던지 JSON으로 응답만 하면 됩니다.



클라이언트에서 서버와 통신하는 객체는 JsonStore 밖에 없습니다. Store에서 알아서 서버에 요청 후 받아서 처리합니다.

store의 config properties를 autoLoad: true로 설정 하면 자동으로 요청 url을 만들어 서버단에 요청합니다.

그러면 서버단에서 contorller - (service - service impl) - (dao - dao impl) 을 거쳐서 controller에서 mav를 리턴하면 마지막에 해당 JSP 까지 가게 됩니다.

JSP에서는 jstl + json-taglib를 이용해서 JSON을 출력합니다.

그걸 다시 클라이언트단의 ExtJS Store에서 받아서 처리하게 됩니다.



vo(Value Object)는 뭐 자기가 정해서 쓰는거니.. 적당히.... ㅠ_ㅠ

  1. 계속해서 발생되는 자료를 축적하여 두었다가 일정 시점 단위로 일괄해서 처리하는 자료처리 방식으로서 배치 데이터 처리라고도 한다. [본문으로]
  2. 비동기 방식의 자바스크립트와 XML(Asynchronous JavaScript and XML). 웹상에서 JavaScript + CSS + DHTML + DOM + XMLHttpRequest + XML 등과 같은 현존하는 스크립트 언어를 통해서 서버와 통신을 하는 개발 방식 [본문으로]

'Mini Project' 카테고리의 다른 글

Image Pyramid  (0) 2014.01.30
Proftpd Manager  (0) 2012.12.10
게시판 2.0  (5) 2011.07.27
Sudoku  (0) 2011.06.09
간단한 JAVA 실행기(?)  (1) 2011.03.21
Forecast Repository  (8) 2010.11.30
Sales History API  (2) 2010.05.27
Order Entry API  (0) 2010.05.13
Human Resources API  (0) 2010.05.10
게시판 1.0  (1) 2010.03.11
비밀번호 생성기(Generate Password)  (1) 2010.02.10
  1. 우훗- 님 쫌 짱인듯 -
    돌아가는 모습도 캡쳐해놨으면 더욱더 대단했을텐데..! ^^
  2. hey30
    위에 미니프로젝트를 실제 적용하여 공부하고 있습니다
    다만 무지하여 이해가 되지 않는 부분이 좀 있어서 그러는데요
    질문이 있습니다.
    1. web단에서 처리하는 방식
    2. jsp jstl에서 spring 컨트롤러로 값을 넘겨준후 동작방식
    3. spring controller에서 mav로 리턴시 json의 내용을 web에서 어떻게 받아 처리하는지
    4. 한개의 화면을 만든다고 할때 파일을 만들어주어야 되는 순서
    ex) jsp->js->applicationContext.xml->forecast-servlet.xml->controller->service->service_impl->model
    ->dao->dao_impl <-이런식의 순서가 맞는지 의문입니다. 그리고 이걸 일일이 다 날코딩으로 만들어야되는지?
    그리고 vo는 디자인패턴으로 볼때 어느시점에서 쓰는것이 좋은지?
    이런것들이 궁금합니다.
    좀 번거로우시겠지만 무지한 개발자 업그레이드하는 기회가 될수 있도록 좀 도와주세요
  3. hey30
    친절하게 받아주셔서 감사합니다~
    학수고대하며 본문 바로 아래 답변을 기다리겠습니다.
  4. 비밀댓글입니다
    • 2012.06.28 22:55 신고 [Edit/Del]
      지금 받아오는거는 WSDL 이 아니라 그냥 일반 XML 입니다.

      그냥 Java(소켓이었나.. HttpClient 였나.. URL 이었나..)로 XML 파싱 했습니다. ^^

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

Introduction

jQuery 공부를 시작하기에 앞서 툴을 세팅합시다.. -_-v

Eclipse Galileo + Apatna 를 사용하여 jQuery Code Assist를 사용해 봅시다.

http://www.aptana.org



Installation Plugin

Help - Install New Software 클릭




http://download.aptana.org/tools/studio/plugin/install/studio 를 등록 후 Aptana Studio 를 선택합니다.




Next 클릭




라이센스 수락 후 Finish 클릭




경고가 나오는군요... 깔끔하게 패스!




이클리스를 재시작 합니다.




파이어폭스가 필요하다네요...





Install Aptana Features

Aptana 플러그인을 설치했다고 바로 되는게 아닙니다.

jQuery 를 지원하기 위해 플러그인 설치해야 합니다.

도구 모음에 보면 Aptana Studio 관련 아이콘이 몇 개 생겼습니다.

Install Aptna Features 를 클릭합니다.




여러가지 라이브러리를 많이 지원하네요!

Ajax Libraries - jQuery Support 를 선택 후 Install 버튼을 클릭합니다.




플러그인 설치 화면으로 넘어갑니다.

Ajax Frameworks - Aptana Support for jQuery 선택 후 Next 버튼을 클릭합니다.




Finish 클릭




플러그인 설치 - 이클립스 재시작 후 WIndow - Preferences 클릭




Aptana - Editors - JavaScript - Code Assist 메뉴에서 jQuery를 선택합니다.




js 파일을 편집하면 편집기가 Aptana 편집기인 것을 확인할 수 있습니다.

잘 되는군요 ㅎㅎㅎ




만약 편집기가 설치 전의 그냥 보통 편집기일 경우 설정에서 변경해줘야 합니다.




사용해본 결과(jQuery, ExtJS) 생각보다는 그렇게 잘 Code Assist 가 되지는 않는것 같네요.. 특히 ExtJs... ㅠ_ㅠ

'JavaScript > jQuery' 카테고리의 다른 글

jQuery UI Datepicker IE 버그 해결...  (1) 2011.08.26
Eclipse + Aptana : jQuery Code Assist 사용하기  (12) 2010.03.25
  1. Lu
    감사합니다. 요즘 업무적으로 jQuery가 많은 부분 거론 되는 중이라..좋은 정보 담습니다.
  2. tpholic
    필요한정보 감사합니다.
  3. 13412
    흐흠 Ajax Libraies 가 ==> JavaScript Libraies 영역으로 넘어갔나보네요~

    이거 때문에 한참 망설이다가 설치하니 그 다음부터는 같네요 ㅎㅎ
  4. 엮인글 제블로그에 남길께여

    제가검색한여러블로그중에서 가장 깔끔하게나와있는듯 ㅋ
  5. sunnyKim
    많은 도움이 되었습니다. 감사합니다. ^^
  6. 구리구리
    깔끔하게 정리하셨네요, 블로그에 퍼갈께요~
  7. joys
    정말 좋은 정보네요~~감사합니다(__꾸벅)
  8. 이 게시물은 웹 프로그래머와 관련된 모든 새 개인 홈 페이지의 지원에 좋은 결실이며 그들이 연구하고 연습을 수행해야합니다.
  9. agapeuni
    좋은글 출처를 표시하고 블로그에 담아갑니다. ^^
  10. 아판타가 인스톨이 안될때 , 이 주소를 써보세요~

    http://download.aptana.com/studio3/plugin/install

    아판타 홈페이지에서 인스톨 실패했을 때 업뎃주소가 오래되면 인스톨이 안된다고 하네요~

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기