'분류 전체보기'에 해당되는 글 539건

  1. 2006.11.23 [정보] IT 용어 몇가지
  2. 2006.11.23 2007년도 IBM Rational Software Development Conference
  3. 2006.11.23 Rational certification roadmaps
  4. 2006.10.25 AJAX 와 최신 자바동향 세미나를 위한 준비 (사이트 정리) 1
  5. 2006.09.06 새로운 시작 ... 6th Story ..
  6. 2006.08.02 자바랜드 시절의 양석호를 만나다.. 2
  7. 2006.08.02 익스트림 프로그래밍 제2판과 Kent Beck: Ease At Work
  8. 2006.07.29 새로운 통합 개발 환경을 기획하며...
  9. 2006.07.12 새로워진 SpringFramework 2.0 둘러보기 2
  10. 2006.06.21 [사설] OSGi R4 를 들여다 보며..
  11. 2006.06.08 [사설] ROR (Ruby On Rails)에 대한 생각... 3
  12. 2006.06.02 eclipse와 netBeans의 Profiling ..
  13. 2006.06.01 [사설] 시간이 흘러 ... 다시 만나지는듯 ... 1
  14. 2006.05.30 Java Communication API (RS-232) 1
  15. 2006.05.30 RFID 표준화 확정 소식
  16. 2006.05.28 VMWare Player로 윈도우안에서 리눅스와 놀기
  17. 2006.05.25 JAX-WS 2.0 파이널 릴리즈 작업 1
  18. 2006.05.24 [사설] 오늘날의 BPM ?
  19. 2006.05.23 Spirng의 JmsTemplate을 이용한 MOM 사용(5) : 마치며.
  20. 2006.05.23 Spirng의 JmsTemplate을 이용한 MOM 사용(4) : SonicMQ(Receive)
  21. 2006.05.23 Spirng의 JmsTemplate을 이용한 MOM 사용(3) : SonicMQ(Send)
  22. 2006.05.23 Spirng의 JmsTemplate을 이용한 MOM 사용(2) : ActiveMQ(Receive)
  23. 2006.05.23 Spirng의 JmsTemplate을 이용한 MOM 사용(1) : ActiveMQ(Send) 1
  24. 2006.05.23 만들면서 터득하는 Eclipse 플러그인 1
  25. 2006.05.12 Recommendations for using JmsTemplate
  26. 2006.05.12 Spring에서 JmsTemplate 사용시의 주의사항
  27. 2006.05.12 Lingo 와 Jencks 1
  28. 2006.05.11 SWT, Swing or AWT 의 선택시에..
  29. 2006.05.10 Celtix 1.0 정식릴리즈 1
  30. 2006.05.09 Hermes(v1.10)로 ActiveMQ와 SonicMQ 사용하기

IT 컴플라이언스(Compliance)
최근 기업 활동에 영향을 미치는 수많은 규제와 법안들이 등장하고 있으며 이에 효과적으로 대응하기 위한 활동을 IT 컴플라이언스(IT Compliance)라고 한다.

현대 기업의 경영 환경이 점점 더 복잡해짐에 따라 리스크에 대한 관리 강화, 투명성 강화를 위해 IT 컴플라이언스는 중요한 활동으로 부각되고 있다.

정부나 관련 기관들이 강제로 규정한 각종 규제나 법안은 산업별, 업종별로 상당히 많으며, 대표적인 것으로는 바젤 II, 사베인옥슬리 법안, HIPPA(Health Insurance Portability and Accountability Act) 등이있다.

IT 컴플라이언스를 효과적으로 수행하기 위해서는 자사에 해당하는 컴플라이언스에 대한 충분한 이해를 바탕으로 현재 상황을 파악한 후 규정 준수를 위한 실행 계획을 수립하고 모니터링, 평가를 수행해야 한다.

IT Governance
IT 자원의 체계적인 활용과 관리를 통해 전사적인 비즈니스 전략 및 목표를 달성할 수 있도록 지침(Rule),조직(Organization), 프로세스(Process), 정보(Information)로 구성된 의사 결정 체계를 정립하는 것을의미함. IT Governance는 Corporate Governance의 일부로서 기업의 핵심 자산 중 정보 및 IT 자산에초점을 두고 있음.

IT KPI(성과관리지표)
IT 서비스를 보다 객관적이고 정량적으로 관리하기 위한 목적으로 프로세스, 조직운영, 시스템 등 종합적 관점에서 IT를 관리하기위한 지표를 도출하여 적용하게 되며, 이 중 IT 사용자와 서비스 제공자간에 공통적으로 관리하기로 합의한 관리지표들은SLI(Service Level Indicator, 서비스 수준 관리지표)라 칭하고, SLA(Service LevelAgreement, 서비스 수준 합의서)에 반영하고 있음

IT839
''IT839''은 정보통신부가 국내 미래IT시장을 선도하기 위해 설장한 성장전략 방향입니다.

숫자 839는 ''8대 서비스·3대 인프라·9대 성장동력''을 의미합니다. 정부가 설정한 ''IT미래시장의 핵심''인 셈입니다.

우선 8대 서비스는

WiBro(휴대 인터넷, Wireless Broadband) / 위성 및 지상파 디지털멀티미디어방송(DMB)
홈네트워크 / 텔레매틱스 / 전자태그(RFID) / 광대역 코드분할다중접속(W-CDMA)
지상파 디지털TV(DTV) / 인터넷 전화(VoIP)를 의미합니다.

그리고 3대 인프라는 광대역 통합망(BcN) / U-센서네트워크 / 차세대인터넷 프로토콜(IPv6)를,

9대 성장동력은

차세대 이동통신 / 디지털TV / 홈네트워크 / IT SoC(System on Chip) / 차세대 PC
임베디드 SW / 디지털콘텐츠 / 텔레매틱스 / 지능형 로봇 을 뜻합니다.

ITA
기업의 IT 자원을 효율적으로 통합하고 관리하기 위해 기업의 비즈니스와 사용되는 데이터, 그리고 이를 지원하기 위한애플리케이션, 인프라 등의 기술 구성요소를 분석한 후 이를 구조적으로 정의한 체계이며 시스템 구축을 위한 일종의 설계도면이다.

다시 말해 "조직의 전략적 목표와 정보자원관리 목표를 달성하기 위해 새로운 정보기술을 획득하고, 기존 정보기술을 유지 진화 시키기위한 통합된 프레임워크"(1996 미 예산관리국(Office of Management and Budget : 이하 OMB))으로전사적 아키텍쳐(Enterprise Architecture), 기술참조모델(Technology Reference Model),표준 프로파일(Standard Profiling)으로 구성된다.

미국의 경우 96년부터정보기술관리개선법(ITMRA)과 연방정부프레임워크(FEAF, Federal Enterprise ArchitectureFramework)를 바탕으로 각 정부에 맞는 ITA를 수립하고 이를 바탕으로 프로젝트를 수행할 것을 적극 권장하고 있다.
Posted by 아름프로
Rational이 IBM에 합병된 후, 발표된 6.0이 eclipse기반으로의 전환을 위한 과도기 제품적인 성격이짙어 보였다면,
올해말과 내년초에 발표될 7.0버젼대 제품은 전제품이 eclipse에 기반을두고, 개발 라이프사이클을 전반적으로 탄탄히 지원해 주고 있는 것을 볼 수 있다.

7.0버젼으로의 전환과 함께 개최되는 IBM Rational Software Development Conference 2007은
개발의 전체 사이클의 일부분에서 전체 흐름까지를 두루 접해볼 수 있는 좋은 기회가 될 것 같다.

해당 홈페이지의 Agenda 에 있는 Technical workshop Track description 의 내용을 통해
앞으로 전개될 개발의 흐름과 개발툴들이 전개되는지를 잠시 살펴보자.. ~

홈페이지 링크

세션 내용 (Technical workshop)

Business Driven Development for Compliance Management
Introduction to IBM Rational Portfolio Manager
Writing Good Use Cases - A Beginners Session
Patterns for Service-Oriented Architecture (SOA) Success
Rapid Application Development Using IBM Rational Application Developer
Introduction to Rational's Automated Quality Tools
Geographically Distributed Development using the IBM Rational Software Development Platform
Walk through of IBM Rational Method Composer Tooling Capability
Introduction to the IBM Software Development Platform
Writing Good Use Cases - An Advanced Session
Business and System Modeling Using Use Case Flowdown and IBM Rational Method Composer
Designing Service-Oriented Architecture (SOA) Services with IBM Rational Software Architect
Test Drive Rational Cross Platform Rapid SOA Development Technology (EGL)
Test Management with IBM Rational ClearQuest
Geographically Distributed Development for Developers
Build and Deployment Tracking
Basic SoDA and ProjectConsole Template Building
Governing Business Driven Service-Oriented Architecture (SOA) Development
Team Development with IBM Rational Software Architect
Advanced IBM Rational Functional Tester
Working with IBM Rational BuildForge to Optimize Your Software Delivery Processes
Migrating RUP Plug-ins to IBM Rational Method Composer
Discovering the value of IBM Rational's DoD Architecture Framework (DoDAF) Solution

Track Descriptions

Requirements and Analysis
Business and Data Modeling
Architecture and Design
Construction and Assembly
Cross Platform Application Development
Software Quality
Change and Configuration Management
Change and Configuration Management -- Advanced
Process and Portfolio Management
Application Lifecycle Management
Bridging Business and Technology
Open Computing

(색상은 개인적인 이슈와 관련 된 사항입니다. 보시는 분은 의미를 부여하지 마세요.
각 세션과 상세내역은 해당페이지 링크에 가시면 보실 수 있습니다.)
Posted by 아름프로
Posted by 아름프로
'자바의 현재와 미래' 와 'Ajax 와 자바' 라는 주제로
얼마전 고객 세미나를 진행하기 위해 정리했던 사이트 링크를 오픈해본다.

최신 자바동향 관련
http://developers.sun.com/learning/javaoneonline/2006/

http://java.sun.com/javaone/sf/
http://kr.sun.com/developers/javaone/2006/post1.html
http://kr.sun.com/developers/
http://kr.sun.com/developers/event/2006/technologyday_jul1.html
http://kr.sun.com/developers/event/2006/technologyday_jul.html

http://kr.sun.com/developers/java/index.html 연대표
http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=7524
http://kr.sun.com/developers/javaone/2006/wrapup.html
http://blog.daum.net/javaone2006


AJAX와 자바관련
http://kr.sun.com/developers/techtips/e2005_1227.html#1
http://kr.sun.com/developers/techtips/2006/e2006_0405.html#1""
http://kr.sun.com/developers/ajax/
http://java.sun.com/blueprints/ajax.html
마소기사
http://www-128.ibm.com/developerworks/kr/library/wa-dw-wa-ajax-i.html
http://www-128.ibm.com/developerworks/web/library/wa-ajaxintro1.html
http://www-128.ibm.com/developerworks/kr/library/wa-ajaxintro1.html
http://www-128.ibm.com/developerworks/kr/library/j-ajax3/
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=ajax&wr_id=373&page=1
http://kr.sun.com/developers/ajax/onlinecourse.html
http://kr.sun.com/developers/ajax/faq.html
http://www.ajaxian.com/

웹2.0
http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=6898&page= 웹2.0
http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html
http://network.hanbitbook.co.kr/view.php?bi_id=1141
http://network.hanbitbook.co.kr/view.php?bi_id=1148
http://network.hanbitbook.co.kr/view.php?bi_id=1152



Posted by 아름프로

9월 1일부로 IBM으로 일터를 옮겼습니다.
SWG(Software Group)내 Rational 소속입니다.
앞으로의 글들은 아무래도 IBM과 관련된 글들이 많이 올라오지 않을까 합니다.

그리고, 이달 20일경에는 용인에 성복동으로 이사합니다.
분당에서 서울로 올라와 서울시민 된지 4년여만에 다시 경기도민이 되네요. ㅡㅡ;;
인근에 사시는 분 계시면 맛난거라도 먹었으면 하네요. ^^

이래저래 새로운 환경에서 .. 새롭게 시작해봅니다.
으샤으샤..

#사이트의 큰 변화가 생긴 것을 기준으로 Story를 새로 써가고 있지만,
이번엔 여러 변화가 사이트에 변화를 줄것 같아.. Story를 한단계 업해봤습니다.
Posted by 아름프로
익스트림 프로그래밍 제2판을 사기위해 강컴에 들렸다가 배송비 내는 것이 아까워
뭐하나 더 살까(항상 이런식이다.) 둘러보다 반가운 이름을 보게 되었다.
SWT/JFace 인 액션 : 이클립스 스타일로 만드는 자바 GUI 애플리케이션
이라는 책을 보다보니..
==================================
양석호 javanese@naver.com
KAIST 전산과를 졸업하고, 웹, 모바일, 임베디드, 자바 GUI애플리케이션 등 다양한 프로젝트를 수행했다. 모바일 애플리케이션 개발 도구를 이클립스 기반으로 만들다가 이클립스에 완전히매료되었으며 현재 네이버 이클립스 플러그인 까페(http://cafe.naver.com/eclipseplugin)를 운영하고있다.
==================================
라는 것이 있지 않은가. 오랜 잊혀진 친구를 만난듯 너무 반가웠다.
더욱이 틈틈히 지식을 담아주기 위해 북마크의 '하루에한번' 메뉴에도 들어있는 사이트
'네이버 이클립스 플러그인 까페'의 주인장 javanese가 석호였다니.. ^^

하이텔에서 만나 자바랜드를 오픈하기전인 초기시절부터 실력으로도 두각을 내고, 어린 나이에도
어른스럽게 행동하였기에 모두의 이쁨을 받았던 석호였는데..
어느덧 기간이 흘러, 사회의 한 구성원으로 그리고 한 분야의 전문가로 성장해가는 모습을 보니
감회가 새롭고 가슴이 따듯해 진다.

관심은 항상 가지고 있고, 여유가 되면 해야지 미루어왔던 분야였지만,
이를 계기로 열심히 공부할 계기가 되지 않을까 싶다 ...
그렇기에... 주저하지 않고 이책도 주문해 버렸다. ^^

석호야 기다려라!~ 열심히 공부해서 카페에 글 남이 남겨주꾸마. ^^

Posted by 아름프로
한때 XP와 Agile쪽을 공부하며,
켄트백 가라사데 ... 에 신도마냥 정신없이 몰입했던 기억이 지금은 추억처럼 남아 있다.
당시 공부하던 때만해도 너무나도 이에 대한 인식과 지식이 부족하던 시대였기에..
이를 도입하기 위해 회사와 팀사람들과 옥신각신하며, 새로운 것 만을 너무 좋아하는 놈(^^;)
소리 들으며 결국엔 제대로 실천해 보지 못했던 아픈 기억이지만 ...
뭔가에 미쳐서 사람들과 미친듯이 주장하고 더 공부하던 것이 돌이켜보며.. 가장
즐거웠던 기억중에 하나가 아니였나 생각도 든다.

그런 것 있어 김창준씨처럼 한길로 오래기간 꾸준히 할 수 있는 모습에 ...
XP와 Agile란 것을 떠나 한 사람을 존중하며 존경안할 수 없는거 같다.

원본인 Extreme Programming Explained 를 봤음에도 기억조차 흐릿한 기억과 추억을
새롭게 변역되어 나온
' 익스트림 프로그래밍 제2판 : 변화를 포용하라'
를 통해서 찾아볼까 한다.

더불어 한때 나의 우상이였던, 켄트백의 동영상 'Ease At Work' 도 틈틈히 봐야겠다. ^^
구글 Ease At Work 
Posted by 아름프로
새롭게 마음도 다잡고, 정리도 할겸해서 개발환경을 새롭게 구성하기로 마음먹고 진행 중이다.
여기서 말하는 통합 개발환경이라는 것은 프레임워크, 개발툴, 관련서버, DB, 개발언어, 형상관리,
리팩토링, 테스트, 문서화, 레포팅, 모니터링 등등.. 모든 것을 다 포함한 개념이다.

개발이 단순 노다성을 벗어나며 프레임워크나 패턴의 사용에 따른 설계 및 코딩능력을 중요시 되던
시기가 있었지만, 이는 개발자의 능력과 사상에 따라 팀을 이루어 개발시에 오히려 문제를 일으키는
요소로까지 작용하였고, 그러한 부분은 여러 툴들이 기능을 향상함에 따라 어느정도 보안해기 시작했지만,
적지 않은 가격과 시간이 흐르며 툴에 종속적으로 그 모양새가 변모 되어갔다.
(그래서 한때는 특정 툴에서 개발 잘하던 개발자가 다른 툴에서는 어찌할 바를 모르는 웃지 못할 상황까지
생기기도 했었다.)

이러한 변화의 흐름속에 묻혀 생활하면서 얻은 결론은
시대에서 최고라 칭하는 프레임워크만을 잘한다고, 최고의 기능을 제공한다는 툴을 잘 다루는 것으로,
궁극적으로 원하는 단기간에 최고의 결과물을 내놓기가 어렵다는 것이였다.
결국, 이 모든 것과 그 이외에도 개발에서 사용되어야하는 모든 것들이 함께 잘 어울려져야만 해야만 했고,
또한 이것은 대중적(또는 범용적)인 환경을 제공해야 된다는 것이다.
(아무리 좋은 것도 프로젝트 시마다 새롭게 가르쳐야하고 배워야하는 것이라면, 이는 장점보다
단점이 더 많은 것이다.)

여러 과정과 시행착오, 경험들은 뒤로하고, 그래서 구성할 수 있는 최고의 조합이 현재로써는
eclipse과 springframework을 기반으로 한 통합 개발환경이다. (그 외 다양한 오픈소스들과...)
이 새부적인 내용에 대해서는 생각하는 환경이 구축되어감에 이곳을 통해 조금씩 정리해볼까 한다.

통합환경은 크게 이렇다고 하더라도, 새부적인 부분에 있어서도 이슈들이 상당히 많다.
우선 가장 핵심이되는 프레임워크 차원에서의 spring 의 쓰임새는 이를 사용해본 사람이라면
공감하겠지만, 사용하는 사람의 사상과 설계 방식에 따라서 완전히 달리할 수 있다는 것이다.

이전의 수많은 프레임워크라는 것을 접하고 하면서 지금의 struts나 spring을 바라보는 관점은
일반일들에 비해 나는 좀 달리하고 있고, 사용방식은 조금은 특이하다. (최소한 이러한 방식 또는
관점을 이야기하는 것을 듣고 보지 못했기에.. )

특히나, 웹기반에 있어서의 도메인 객체를  모델링하는 것은, 객체지향이라는 자바의 태생(!)에도
불구하고 이러한 설계를 상당히 싫어함을 넘어 Anti- 로까지 생각을 한다.
core J2EE Pattens에서 이야기하는 VO(Value Object), 최근에는 DTO(Data Transfer Object),
hibernat에서는 domain model 등.. 으로 이야기하는 그 모든 것들이 이 대상이 될 수 있다.

EJB가 툴에서 자동생성해 주는 것이 나오기전의 노가다로 일일이 작성하며, 초기 EJB 기반으로의
프로젝트를 진행해 본 사람이라면, 지금에 이야기하는 DTO나 DAO가 왜 필요한지, 그리고
자신도 모르는 사이 그러한 것을 구현한 것을 알 것이다.
하지만, 그렇게 구현한 DTO(VO)는 결국엔 고객의 무수한 요구사항 수정덕에 이렇게 설계 스스로에
대해, "왜 이렇게 설계한 것일까? 아니야 고객의 잘못이야? 아니지 이러한 수정요구까지 반영 못한
것이 잘못이지"라 떠들며 자학 또한 해보았을 것이다.
그러면서 편법으로 구현빈 내에 쿼리를 집어 넣지 않고 할 수 있는 방법과 파라메터들을 좀 더 유연하고
정형화해서 쓸 수 있는 방법들을 찾으며, 나름대로의 패턴과 프레임워크들을 만들어 보았으리라
생각한다.

이러한 것이 struts의 등장으로 사람들이 다시 우르르 이동과 함께 박수를 보내기 시작했다.
(struts가 EJB 대안이나 그렇다는 이야기는 분명아니다, 많은 이들에게 고민이 많던 시기에
등장했다는 것을 말하려는 것이다.)
나 또한 struts를 여러 프로젝트에서 감사의 마음(!)과 찹찹한 마음(그간만들었던 여러
MVC기반의 나만의 프레임워크가 날아간 순간)으로 잘(!) 사용하였다.
하지만, 개인적으로 사용을 좀 달리해서 사용하였다.
내가 사용하는 Action Mapping 은 프로젝트 많아야 3~5개 정도로 국한 시키는 방식이였고,
ActionForm 또한 사용하지 않는 방식이였다.
(프레임워크는 그대로 적용해야지, 프레임워크의 프레임워크를 만들면 안되다는 이야기 또한
있지만, 난 후자의 방식을 좋아하고 그것이 옳다고 믿는 사람이다.)
대규모 프로젝트의 Action Mapping을 모든 화면의 Action마다 만들어서는 오히려 감당히
어려웠기에 공통의 호출과 그에 따른 리턴 방식을 공통화 시키고, 웹기반에서 주로 사용하는
다운로드, 엑셀변환, pdf 추출, 프린터등등을 별도의 모듈로 만들어 이를 Rule 기반으로 호출시에
이렇나 기능들이 동시에 처리되어 결과로 뿌려줄 수 있게 설계하였기에 이런 것이 가능하였다.

ActionForm을 사용하지 않았던 것은 앞선 EJB를 사용하면서 느꼈던 VO(DTO, DAO)를 별도로 생성해서
개발을 하는 것에 대한 불신(!) 때문이다. 이는 EJB의 비즈니스 로직의 변경보다 화면의 변경이슈가
더 많은 상황에서 화면상의 파라메터와 DTO 간의 종속성(나는 이렇게 표현한다)은 웹개발에 있어서
생산성을 현격히 저하 시킨다고 믿기 때문이다.
(여러 툴에서 이를 해소해 준다고는 하지만, 툴에 지나치게 종속적을 되는 것 또한 옳지 않다고 생각
하기도 하기에... )
이는 최근에 이슈가 되고 있는 DTO와 도메인 모델의 사용에 어느 것이 좋니, 나쁘니 하는 것에 있어
개인적으로는 둘 다 웹개발 생산성에 도움이 되지 않는다는 것으로도 이야기하는 것이다.
(이렇기에 사상적으로 많이 틀리다고 스스로 인정하는 부분이다.)
이러한 논리는 View단과 Controller단의 Layer을 어떻게 잘 구분하고 비즈니스 로직을 어디에 어떻게
줄까라는 것을 해결하기 위해, 많은 고민과 방식을 취하는 이들과는 상반 될 수도 있다고 본다.
이에 대해서는 논란의 소지가 다분히 있지만, 나만의 생각을 정리하는 것이기에..
그리고 누구에게도 강요하고픈 생각 또한 없는 것이기에 편안히 적고 있다.

어쨌든, 내가 얻은 경험에서의 핵심은.

1. DB로부터의 데이터를 가져오고 하는 기본은 변형된 쿼리 방식보다는 각 DB마다의 특성을
그대로 사용할 수 있는 쿼리를 사용할 수 있어야 한다. 즉, 표준 SQL이든 각 벤더에 종속된
쿼리든 그 쿼리 그대로를 사용할 수 있어야 하고, 이럴 시에만 대용량 데이터 처리든 대규모
프로젝트에 유리하다.

2. form 파라메터를 form data든 DTO나 도메인 객체든, 이를 다시 퍼시턴트 객체로 사용하든
하는 방식보다는 파라메터 자체를 쿼리와 직접적으로 처리하는 것이 개발 공수를 상당히
줄 일 수 있다.

3. 이를 위한 컨트롤러는 화면이나 액션마다의 맵핑에 따른 결과보다는 정형화된 패턴으로 호출과
결과값을 가져올 수 있도록 하는 것이 좋다.

는 것이다.

이를 위해서 지난 날에는 모든 부분을 실제 모두 개발을 했었지만,
지금에 있어서는 다음의 조합으로 가능하다.

1. 쿼리를 비즈니스 객체에서 분리하여, DAO는 정형화 할 수 있으며 이에 따른 개발은 spring기반으로
가능하며, 쿼리의 분리는 iBatis를 활용하면 된다. (예전엔 쿼리를 관리하는 XML을 별로도 두어
id를 주고 context상에 쿼리를 넣고 해석하는 등의 엔진을 만들어서 사용도 해봤다.)

2. form의 파라메터들은 Map 타입으로 받을 수 있기에 이는 iBatis에서의 Map을 파라메터들의 맵으로
받아 #파라메터명 으로 처리하는 것이 가능한 부분에서 효과적으로 사용이 가능하다.
(다시 말해, 굳이 form data를 사용하지 않고도 웹의 파라메터를 iBatis에서의 쿼리 파라메터로 바로
처리할 수 있게 있기에 일괄 된 결과 값을 가져올 수 있다.)
이러한 것을 통해 비즈니스 로직은 viewer단에서 자연스레 처리가 가능하다.
(비즈니스 로직이 DTO나 도메인 모델등에 어디에 포함되니 안되니하는 논란에서 벗어날 수 있다.)

3. 이 부분을 위해 예전에 Rule기반의 엔진을 별도로 만들어 XML기반에서 룰(element 또는 Attribute)을
임의대로 바꿔가며 호출해서 사용하였었다. 그런데 이 부분을 요즘에 쓰기 좋게 나온 오픈 Rule 엔진들
또는 Groovy 또는 JRuby를 활용, 이도 아니면 Sping의 WebFlow에서도 어느정도
가능하리라 보인다. (실제 1,2 부분은 얼마전의 프로젝트에서 사용해보며 가능성을 확인한바 있고,
3을 새롭게 설계함에 있어 1,2를 처리 방식이 단순 DB에서의 데이터만을 가져오는 것 이외에 여러
기능들이 추가 될 것으로 생각된다.)

다시 제목의 통합개발 환경으로 돌아가 이러한 기반위에 좀 더 효율적인 개발툴과 기능들의 연계를
새롭게 구성할까 한다.
초기에는 메시징 기반으로 웹서비스의 연동, ESB를 활용한 SOA기반과 BPEL을 포함 시킨 BPM기반으로의 연계 및 확장까지 구상해 보았지만, 일차적으로는 자바의 이러한 개발 환경을 '일반화'와 '대중화' 쪽에
목표를 두기로 했다.
그러기 위한 기준으로는 자바기반(JSP 호스팅)의 호스팅이 되는 곳에서 쉽게 사용이 가능하여야 되는
것을 전제로 하기로 했다.

이는 지금까지 기업솔루션 중심으로 개발을 해온 나였기에... 정작,
내 사이트를 PHP기반의 제로보드나 터터툴로..., 또 지인들의 부탁으로 PHP기반의 쇼핑몰을
만들어줘야했던 현실을 바꿔보고 싶은 마음도 있기 때문이다. (이젠 JSP 호스팅도 많아졌고 저렴도 해졌기에.. )
최근 zb5의 발표로 호스팅업체들의 MySQL4.1 지원, PHP5 등 지원으로 서버증설 및 난리를 치는 것을보며,
자바의 대중적 쓰임은 아직 미비할 따름이듯 싶다. 이에 기업 솔루션 개발 및 생각으로만 굳어버린
머리와 마음을 좀 더 많은 이들이 사용할 수 있는 것들을 만들고 나 또한 사용하고 싶은 요즘이고,

이러한 생각과 정리들을...
틈틈히 실천으로 만들어 볼까 한다.

ps : 위에 쓴 내용만으로는 이해하기 어려운 부분이 많으리란 것은 충분히 동감한다.
많은 분들이 공감할 수 있는 결과물이 빨리 나올 수 있는 날을 기대해 볼 따름이다.
Posted by 아름프로

Spring이 어느덧 2.0 RC2를 7월6일에 발표하였다.
개인적으로는 dev 메일링을 받아 개발진척이나 관련 프로젝트들의 진행을
꾸준히 모니터링하고 있는데, 분위기상  정식 릴리즈가 임박했음이 느껴진다.

이에 곧 나올 2.0 정식버젼에 앞서 어떤 것들이 새롭게 변모되었는지 이제는
한번쯤 봐둘 필요가 있을 듯 싶어 간단히 정리해 볼까한다.

1. IoC 컨테이너의 향상

  2.0으로 올라오며, 내부적으로 가장 많은 변화가 있었던 부분이 IoC 컨테이너
  부분이다. (단, 사용자 관점에서는 큰 변화를 느끼지 못하겠지만)
  간단히 간추려 보면,

  1.1. XML 설정파일이 쉬워지다.  

  내용인 즉, 새로운 스키마의 지원에 따른 내용을 쉽게 처리할 수 있다는 것이다.
  <util:XXX> , <jee:XXX> 와 lang, tx, aop 스키마가 추가 지원되고 이에 대한 것이
   IDE 에서의 제공되는 spring 플러그인에서 제공된다는 것이다.
   결과적으로 새로운 것 더 열심히 공부하면 더 쉽게 쓸 수 있다는 것이다. ^^
   참조 : http://static.springframework.org/spring/docs/2.0.x/reference/new-in-2.html

  1.2. XML 작성의 확장

  2.0에서는 단지 쉬어지기만 한 것이 아니라, 좀 더 확장성을 띄고 있다.
    이는 XML 스키마를 직접 작성가능하게 함으로 이를 가능케 한다.
    위에서 언급한 새롭게 등장한 스키마와 같이, 나 또는 팀에서 자주 사용하는 스키마에
    대해서 이미 스키마로 구현이 가능하다는 것이다. (말그대로 확장성을 대폭 강화하여
    spirng을 사용하는 개개인이 스키마 확장까지 가능하게 되었다.)
    참조 : http://static.springframework.org/spring/docs/2.0.x/reference/extensible-xml.html

  1.3. 새로운 bean 범위
    
  기존의 Spring은 IoC 컨네이터 레벨에서 두가지(singleton과 prototype)만 지원했었지만,
    2.0에서는 위의 두가지 이외에 request, session, global session 가 추가되었다.
    앞선 두가지는 local(!) 개발에 후자 3개는 웹기반에 적용된다.
    크게 변화가 없는 듯 하면서도 변화가 생긴 부분이라 하겠다. (기존 사용방식에는 차이가 없다.)
   참조 : http://static.springframework.org/spring/docs/2.0.x/reference/beans.html#beans-factory-scopes
 
2. AOP
 
  2.0에서는 AOP 제공이 매우 향상되었다.
   XML 설정이 쉬워졌으며, AspectJ pointcut 언어와 @AspectJ와 통합되었다.
   (이것은 AspectJ의 리더인 Adrian Colyer가 지난해 9월 IBM에서 Interface21(스프링을 만드는 회사)로
   옮기면서 이미 예견된 부분이다.)

  2.1. 쉬워진 AOP XML 설정

  2.0은 aspects 를 위한 새로운 스키마를 지원한다. AspectJ pointcut 언어와 전체적인 타입에 대한 안내
  (캐스팅이나 Object[]아규먼트와 같은 더이상의 조작은 필요없다.)의 이점을 제공한다.
  <aop:config> 엘리먼트 내에 <aop:aspect> <aop:pointcut> 등과 같은 방법으로 사용 가능하다.
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/aop.html#aop-schema

  2.2.  @AspectJ aspects의 제공

  2.0 은 @AspectJ annotations의 사용을 제공하고 이는 AspectJ와 Spring AOP간에 공유가 가능하다.

3. Middle Tier (Data Access)

  3.1. XML 내에 선언된 트랜젝션의 설정이 쉬어졌다.

  기존의 1.2.X 스타일이 계속 지원은 되지만, 2.0 스타일을 추천되며, 이 방식은 작성을 쉽게 소스량(!)을
  현저히 줄인다. 주목해야 할 부분은 AspectJ aspects library와 사용이 가능한데 이때 다양한 오브젝트와
  사용이 가능한데 하물며, Sping container에서 생성되지 않은 객체까지 사용이 가능하다는 점이다.
  (의미적으로는 이런데 자세히 봐야되겠다. 기존의 트랜젝션 관리에 있어서 많은 솔루션들이 가지고 있던
  문제가 여러 객체를 거치는 (프로세스를 가지는) 트랜젝션의 처리가 쉽지 않다는 것이였는데, 이 의미로는
  이것 또한 해결이 가능하다는 이야기이므로 정확한 확인이 필요할 듯 싶다.
  이가 가능하다면 엔터프라이즈 솔루션에 있어 상당한 기여가 있을 것 같다.)

  3.2. JPA

  Spring의 JDBC 추상 레이어 목적으로 Hibernate, JDO와 같은 것을 동일한 방법 내에서 포괄적으로
  Java Persistence API를 위해 제공한다.
  + JPA 관련 참조 : http://static.springframework.org/spring/docs/2.0.x/reference/orm.html#orm-jpa
  + Java Persistence API 참고 : http://java.sun.com/developer/technicalArticles/J2EE/jpa/index.html

  3.3. Asynchronous JMS

  개인적으로 오래 기다려온 내용이다.  
    이전의 1.2 버젼까지의 Spring은 JMS를 제공함에 있어 JmsTemplate 클래스가 기능적으로 훌륭히
  추상화하여 사용의 간편함을 제공하였다. 그러나 이것은 메시지의 비동기적인 production 와
  consumption은 지원하는 것이 아니였다.
    이번 2.0 에서는 이러한 부족한 부분을 완성하여 비동기적인 부분까지 지원이 되었다.
    참고 : http://static.springframework.org/spring/docs/2.0.x/reference/jms.html#jms-asynchronousMessageReception

  3.4. JDBC

  Spring의 JDBC 추상 프레임워크 내에 새롭게 주목해야할 크랠스가 있는데,
  첫째가 NamedParameterJdbcTemplate 로 named parameters 의 사용을 지원한다.
  둘째가 SimpleJdbcTemplate 로 기존의 core 기능에서 더욱 사용을 간편하게 만들어졌다. 단, 이는 Java 5(Tiger에서만 사용가능)

  자세한 것은 참조 사이트의 예제를 보면 바로 이해가 될 듯하다.
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/jdbc.html#jdbc-NamedParameterJdbcTemplate
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/jdbc.html#jdbc-SimpleJdbcTemplate

4. Web

  4.1. Spring MVC를 위한 form fag 라이브러리

  2.0 에서는 많은 개발자들의 요구에 의해 대부분의 JSP tag 라이브러리와 사용이 가능하게 하여,
  개발자의 만족도를 높였다고 확신하고 있다. struts에 있어서도 form tag의 사용에 따른 추가적인 개발
  요소가 만만치 않았던 것을 고려할때
  이에 대한 추가에 따른 개발에 도움이 될지 어떨지는 좀 더 확인 필요할 듯 싶다.
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/mvc.html
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/spring-form.tld.html

  4.2. Sping MVC 내에 분별력 있는 표준설정

  convention-over-configuration 를 통해 models, views, 와 controllers 의 기본 영역에서 주소를
  제공하여, naming convention의 표준화를 통해 XML 설정에 따른 소스 량을 줄이고, 내용을 명확하고
  쉽게 처리할 수 있도록 한다.
  기존의 무분별한 프로젝트마다의 naming conventions 을 설정한다거나 개개인마다의 방식을 만들어
  가는 것에서 큰 도움이 될 듯하다.
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/mvc.html#mvc-coc

  4.3. Portlet framework  

  웹기반에 있어서의 Portlet (JSR-168 Portlet)을 지원한다.
  이는 특별한 설명이 필요 없을 듯 싶다.
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/portlet.html

5. 그밖에

  5.1. Dynamic language 지원

  자바 이외에도 현재 JRuby, Groovy 와 BeanShell 가 포함되어 지원된다.
  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/dynamic-language.html

  5.2. JMX

  Spring에서 지원하던 JMS의 변경은 발전적이상의 획기적인 것으로 ...
  + Controlling the registration behavior : MBean 등록에 있어서 3가지을 제공한다.
      - REGISTRATION_FAIL_ON_EXISTING : MBean 인스턴스가 등록되어 있으면 InstanceAlreadyExistsException 을 통한 등록거부(디폴트),
      - REGISTRATION_IGNORE_EXISTING : MBean 인스턴스가 등록되어 있으면 아무런 에러없이 등록거부(멀티 어플리케이션 환경에 유용)
      - REGISTRATION_REPLACE_EXISTING : MBean 인스턴스가 등록되어 있으면, 이를 등록해지하고 새롭운 MBean으로 등록처리(기존MBean 대처시 유용)
  + Notifications : NotificationListeners을 통한 MBeans의 변경을 모니터링 가능하다.

참조 : http://static.springframework.org/spring/docs/2.0.x/reference/jmx.html#jmx-exporting-registration-behavior
참조 : http://static.springframework.org/spring/docs/2.0.x/reference/jmx.html#jmx-notifications

  5.3. Task scheduling (작업 스케쥴링)

  드럭 리가 심여를 기울여 Tiger에 포함시킨 java.util.concurrent.* 패치지에는 기존의 thread 의
  기능을 강화하고 확장시킨 Executors 라는 인터페이스가 있다. 이는 위의 내용에서 이야기 하다시피
    Java5 에서부터 구현이되어 사용이 가능하다.
  이에 2.0 에서는 Java 1.3, 1.4 에서도 Executors와 같은 기능(thread pools)을 가능케 하고자 이와
  동일한 기능의 (하지만 세부적인 구현을 더 추상화 시킨) TaskExecutor 를 제공한다.
  이에 대한 것은 아래를 참조하면 된다.
  (얼마전 리스너를 여러개 띄운 상태에서의 스케쥴링을 해야하는 프로그램을 작성한 적이 있었다.
     Spring에서 Quartz Scheduler를 사용하여, 처리하려 하였지만 데드락의 징후(!)가 보여 충분한 테스트
     도 채하기도 전에(기간이  촉박했던 것이였기에) thread 로 대처하여 어찌어찌 작성을 했었다.
     돌이켜 기억해보면 이때 이 기능을 사용했으면  여러가지 도움이 되었을텐데라는 생각이 든다.)  
  그 이외에도 scheduling 관련해서 문서상으로도 많은 보강이 있어 보인다. (특히 Pooling 관련)

  참조 : http://static.springframework.org/spring/docs/2.0.x/reference/scheduling.html#taskexecutor  

  5.4. Java 5 (Tiger) 지원
  제목과 같이 Java 5 (Tiger)을 지원하는 기능들이 추가 되었다.

  - Using AspectJ to dependency inject domain objects with Spring :
     http://static.springframework.org/spring/docs/2.0.x/reference/aop.html#aop-atconfigurable
    - @AspectJ support :
     http://static.springframework.org/spring/docs/2.0.x/reference/aop.html#aop-ataspectj
    - Using @Transactional with AspectJ :
     http://static.springframework.org/spring/docs/2.0.x/reference/transaction.html#transaction-declarative-aspectj
  - @Required :
     http://static.springframework.org/spring/docs/2.0.x/reference/metadata.html#metadata-annotations-required
  - SimpleJdbcTemplate :
     http://static.springframework.org/spring/docs/2.0.x/reference/jdbc.html#jdbc-SimpleJdbcTemplate

6. 샘플 업데이트
  전반적인 소스의 업데이트와 showcases 라는 폴더가 새롭게 생겼다.

7. 문서의 향상
  2.0 에 맞춰 새롭게 레퍼런스 문서가 작성되었다.  

Posted by 아름프로
OSGi가 나오고 알려진지도 5년여가 되어간다.
하지만, R1 ~ R4가 나오기까지... 시대의 흐름속에 스펙자체의 큰 변경으로 많은 혼선과
어려움이 있었던 시기가 아니였나 싶다. 특히나, 이러한 빠른 변화에도 불구하고 현 실세계는
아직 OSGi를 실용화 되기엔 다소 이른감과 준비가 덜 된것도 큰 요인이 되었던 것으로 보인다.

하지만, R4가 지난해 10월경에 발표되고 이에 대한 것들이 다시 정리되어가는 현 시점에서는
그 쓰임새와 내용에 대해 다시 관심을 가지고 지켜보야할 것으로 보인다.
(기술적으로나 시대적인 흐름이 어느정도 물이 오른(!) 상태이기에.. )

개인적으로는 OSGi가 eclipse의 핵심엔진으로 플러그인 기능을 담당하는 모습에서 단순히
가전기기나 홈네트워킹을 위한 개발표준의 이상의 현 모습에 주목을 하지 않을 수 없다.
(궁금하신 분은 eclipse의 equinox 프로젝트를 들여다 보라.. )
번들을 구성하는 방식은 spring에서의 DI와 비슷하게 보여지면서도 인터페이스를 강조하는
형태에서는 만족스러움과 아쉬움이 동시에 느껴지기도 하지만,
springframework 내에 올 여름이면 OSGi가 포함되리라 로드존슨이 이야기한 상태이므로
현재로써는 모든 것이 긍정적으로 받아들여질 뿐이다. ^^
(확인을 위해 cvs에서 sandbox를 확인해 보니, 이미 어느정도 구현이 되어져 있는 상태를 확인할
수 있었다. 스프링 팀이 기특한 따름이다. ^^)
그런데 두 단체간의 약간의 힘싸움은 있는듯 하기에 조심스러운 마음도 없잖아 있다.
서로 손내밀어 주기를 원하는 모습에서.. ㅡㅡ;;

일예로 R3에서 포함되었던 JINI가 작동상의 일부 문제가 발견되점도 있지만,
이를 해결하는 과정에서 JINI팀의 무관심과 SUN의 전략적인 것이 맞물려 R4에서 제외되었다는
것이.. 최종적으로 적용되기까지 마음이 찜찜할 것 같다.

어쨌든,
OSGi를 통해 우리 정부에서도 밀고 있는 u-IT839 정책을 실현하기 위한 소프트웨어적인
접근과 홈네트워크 시대의 장을 여는 중요 포인트로써 관심 있게 다루어야 할 것이고,
이에 대한 관심과 스터디가 많이 이루어졌으면 하는 바램을 가져본다.

OSGi가 무엇인지 여기에 설명을 하지 않는 것은...
좀 더 흥미꺼리를 던져주기 위함과 관심을 보이는 사람의 연락도 기다려보기 위함이다. ^^

J2 EE, SE, ME가 다시 하나의 이슈로 접목되어 실용화 될 날도 머지 않아보인다.
Posted by 아름프로

개인적으로 99년부터 만남을 계속하고 있는 자눅스라는 모임이 있다.
다들 잘되서 IBM, MS, Sun, BEA, TMax, 일본, 중국, 싱가폴, 등등.. 여러곳에서 잘들 살고 있는듯하다.(뿌듯뿌듯)
어쨌든, Sun에 다니다가 MS로 옮긴 형이 최근 MS 개발자들 중에 ROR쪽으로 많이 전향하고 있다는
이야기를 들어(자바쪽에서는 어느정도 듣던 이야기지만 ... MS쪽까지?), 실태조사에 나서 봤다.
그리고 .. 자눅스 모임에 남겼던 글이다.
# 하루에 하나 글 쓰기 운동을 지켜야 되는데... 최근에 쓴글들은 오픈하지 않은 상태의 글들이
많기에 .. 이렇게라도 남긴다. ㅡㅡ;
====================================================================

형 글보고 휴일동안 간만에 ROR쪽을 돌려보았습니다.
예전에 Ruby에 푸욱 빠져있던 사람을 좀 알고 있었는데.. rails 초기에 자랑하기에 잠시해보고
에이~하면서 덮은 이후에 주위에서 떠들어도 그다지 거들떠 보지 않았는데.. XX형이
이야기하기에 다시한번 접해보았답니다. ^^

본론으로 들어가서...
그리고 바로 결론부터 제 생각을 말씀드리자면 현재의 ROR 수준은 단순 웹개발쪽에의 장점이외에는
고려해야 할 부분들이나 이슈들이 많아 보이고 ... 아직은 개인적으로는 그다지 끌리지가 않는다입니다.

J2EE하던 사람이 ROR 도입하고 만족해했다는 말에 대해서는 그 사람이 어떤 의미에서 J2EE를 여기에
갔다붙이려 하는지도 의심스럽습니다.
코팅양적으로나 속도차원에서의 장점도 있다고는 하지만, ROR를 접하면서 제가 가장 먼저 떠오른것은
예전의 velocity를 struts 기반으로 프레임워크 만들어서 섰던 지난날의 즐거웠으면서도 아품이 있었던
기억납니다.

ROR에서 rb를 작성하고 html에 간단한 테그나 로직을 짜는 부분은 velocity에서 마크로 기능을 이용하는
것보다 솔직히 더 파워플하다는 느낌은 받을 수 없습니다. (단순 텍스 기반의 개발 내용만 놓고 비교시..)
그 이외의 여러 기능들이 추가되고 있는 상황에서 그것들을 활용하는 차원에서는 ROR가 좀 더 낳다고는
하지만.. 그렇지 않은 부분에 있어서는....

지난 날 앞서 말씀드린 프레임워크가 실패했던 가장 큰 원인은 그리드 컴포넌트와 그래픽 API를
사용하면서 발생하였습니다. 상용그리드던 자바스크립트 기반의 그리드든 ... 이를 적용하기 위해서는
기존의 아무리 쉽게 생성하고 구조화 시킨 환경에서라도 기존의 뻘짓꺼리 코딩이 계속 뭍어만 갔습니다.

또한, 자바라는 녀석에서 .NET 기반의 그리드가 대세인 현실에서 .. velocity 기반에서는 더욱 T.T OTL
이였습니다. 이것은 그렇다치더라도 ... 통계테이터를 그래프로 뿌리기 위해 쉽게 사용할 수 있는
오픈소스차원의 것들이든 무엇이든 ... 순수 velocity 기반에서는 어림도 없었기에 결국엔 velocity + jsp
구로 갈 수 밖에 없었습니다.
속도와 코딩량에 있어서는 기존의 자바로 짤 수 있었던 어떠한 것보다 훌륭했음에도...

ROR에서 얼마나 많고 훌륭한 라이브러리나 API 또는 플러그인들이 제공되고 있는지는 파악해보지는
못했지만 아직 2년도 채되지 않는 기반에서는 이러한 확장성에 대한 것들에 있어서는 한계가 있어 보입니다.

그리고 eclipse 기반의 radrails로 테스트하기 위해 설치를 하는 과정에 의문점이 있어..
관련 자료를 찾아보았지만, 국.내외 어디에서도 자료를 찾기 힘들었습니다 그러면서 알수 있었던것이
아직 유저들이 많지 않음과 이에 따른 문제 발생시의 대처와 극복에 대해서는 인터넷의 힘을 크게
얻기 힘들 다는 생각 또한... 아직은 부정적인 생각을 만들었습니다.

끝으로.. 최근에 spring을 꾸준히 사용하면서 느끼는 부분은...
이러한 단위의 개발을 쉽게 하는 것보다 ... ROR에서 이야기하는 단순화 된 코딩과 소스의 량은 제가 보기엔
단순 기능차원의 껀껀의 내용으로 밖에는 안보여집니다.

프로세스가 있는 개발을 효과적으로 지원해줄 수 있는
프레임워크가 더 중요함을 새삼 느끼게 됩니다.
예로, 웹에서 엑셀 다운로드를 받는 단순한 기능을 예로들면..
이를 구현하기 위해서는.. jsp와 같은 페이지단에서의인코딩방식처리에서 부터 시작하여,
다운로드 이벤트 발생에 따른 DB에서의 데이터 쿼리 .. 이를 다시 엑셀로 변환하는 처리
를 거쳐 완성된 엑셀이 다시 다운로드 처리를 거쳐 다운로드되는 ...
기능적으로는 각각이지만, 이러한 프로세스적인(기능적 프로세스) 것을 설정레벨이나
로직 레벨에서 엮어 줄 수 있는 것들이 더욱 중요하게 느껴집니다.
이는 간단한 예였지만, 지금 KBS 방송관련 된 프로젝트는 데모형식으로 하고 있는데
유선(KT),무선,인터넷에서 받은 메시지를 MQ를 통하여 취합하고 이를 다시 DB에
저장하며 이를 다시 통계화하고 이를 방송을 위한 솔루션과 연계시키고.. 어쩌고..
하는 .. 차원에서의 예로 봤을 때는... 위의 ROR는 적용시키는 것이 가능하지 않을거 같습니다.

(ROR는 코딩을 쉽게 해줄 수는 있어도 Spring에서의 DI와 같은 개념은 포함되어 있지 않기에..
ROR가 웹기반이라 적절하지 않은 비유라 할 수도 있겠지만..... JSP 만으로도 위에 것들을
어느정도 생각할 수 있는 것과 다르게 어디서부터 해딩해야할지 막연하기에(공부를 안해서일지도)...)

이야기가 길어져 꼬이고 있으니.. 정리하면..
ROR는 현재의 수준에서는 단순 웹기반의 텍스트 기반의 개발에서는 어느정도의 강점이 있어보이지만
그 이외의 다양한 엔터프라이즈 환경까지 커버하기엔 다소 무리가 있어보이며,
더욱이 이를 해결하기 위한 과정과 노하우들에 대한 지식은 전세게적으로도 부족한 상황이기에
활용기술적인 차원보다는 미래에 속된 말로.. 뜰~ 기술로써 조금씩 적용시킬 수 있는 단계가 아닐까
란 개인적인 생각입니다...

다시 시간이나면 ... 확장성의 차원에서 어떠한 것들이 지원되는지는..
다시한번 확인해보고.. 글 남기겠습니다.
===========================================
요즘 벌짓꺼리하면서 노는게 많아, 언제 확인들어갈 수 있을지는 ... ... 이다. ^^
하루동안의 재미삼아 체크한 내용이라 깊이 있게 스터디하신 분들의 다른 의견이 있을 것이란 생각도든다.

* 혹시 제 사이트를 들려 글을 보시고 ... 다른 의견이 있으시다면.. 댓글 환영합니다. ~*

Posted by 아름프로
참여방송을 프로젝트가 막바지에 접어들고 있는 시점에 메모리와 쓰레드 관리가 아무래도 찜찜해서
프로파일링을 해볼까해서 eclipse와 netBeans를 사용해 보았다.

1. eclipse를 활용한 profiling .. (3.1.2 버젼에서 진행)
  eclipse의 TPTP 의 4.1.0.1 버젼으로 진행을 해보았다.
  설치는 위의 사이트에서 해당 파일을 받아서 설치하는 방법과 이클립스상에서 update.xml 을
  받아서 설치하는 방법 모두를 지원한다. 개인적으로 후자의 방법으로 설치하는 것을 좋아하므로
  (전자와 같이 하여 설치를 잘못하여 여러번 개발환경을 셋팅했던 아픔이 있기에..)
  후자의 방법으로 진행을 하였다. 관련 사항은 이곳 을 참조하면 된다.
  단, 후자의 방법으로 설치를 위해서는 종속적으로 걸려 있는 BIRT 를 설치해주어야 한다.
  (설치 가이드에 특별한 언급은 없지만, 전자도 BIRT를 설치해주어야 하지 않을까 싶다.)
  그래서 BIRT도 설치를 하였다. BIRT는 자동설치를 지원하지 않으므로 직접 다운 받아서 설치를
  하여야 했다. 설치는 이곳 을 참조하였는데, 일일이 수작업으로 해주어야 할 것이 좀 있어 귀찮음을
  느꼈다. (그나마 WTP 설치해 놓은 상태라 GEF, EMF의 설치는 하지 않았다.)
  그렇게 하여, 재기동 후에도 에러가 없이 잘 동작하는 것을 확인 후에 ...
  테스트 시작.. ~ 그런데.. 문제가 발생했다. 테스트로 만들어본 간단한 어플리케이션에서는 잘
  동작했지만, 테스트 하려는 것에서는 .. 진행을 하다가 이클립스 자체를 다운 시켜버리는 놀라운
  위력을 보여주었다. (가장 중요한 것은 나의 사용상에 문제가 있지 않나 싶다. 사이트에서 제공하는
   플래쉬 강좌와 같은 방식으로는 도저히 진행이 불가능 하였다.)
  
   참고로, 프로파일일을 하려는 프로젝트는 외부에서 메시지를 MQ로 request 형식의 메시지를 날려
   Thread 상으로 대기중인 미들웨어형태의 어플리케이션에서 대기중인 MQ의 receiver를 기동시켜
    DB에서 어떤 결과들을 결과 함께.. 통계처리를 하는.. 뭐 그런 시스템이다. (설명이 이상하다. ㅡㅡ;)
  
   어쨌든, 하다가 일단 포기를 하고... 그냥 netBeans에서 진행을 하기로 하고 넘어섰다.

2. netBeans 5 에 프로파일러는 추가로 설치를 하였다. 프로파일러는 이곳에서 다운 받을 수 있고
  관련 정보도 얻을 수 있다. 간단히 설치를 마치고 (netBeans5는 설치가 되어 있던 상태라 프로파일러만
  그냥 간단히 설치했다.)
   그리고, eclipse에서 netBeans로 프로젝트의 이동은 찾아보니 특별한 가이드가 안보여서 수작업으로
   옮기는 작업을 했다. ant로 빌드를 하나 만들까도 했지만, 간단히 이동이 가능하였기에 그냥 처리했다.
   이렇게 해서 테스트 진행 ... 이에 대한 것은 여기 를 참조했다.
   결과는.. 일단 성공...

   내용을 대충 분석해보니 쓰레드가 계속 쌓이고 있었고, char[] 를 사용하는 어딘가에서 메모리를 계속
   해서 잡아 먹는 것이 보였다. 슬프게도 내일 회사가서 원인을 잡아야 될듯 싶다.

그리고 TPTP에서 실패한 것은 이것의 문제가 아님을 밝히고 싶다. 일단 사용자의 미숙이 크다는 것을
인정하고 싶고, TPTP에서 나온 결과를 BIRT를 이용해서 레포트를 뽑는 기능은.. 상당히 매력이 있어
보였다. 내일 버그를 빨리 수정하고 시간나면 다시 이에 대한 도전(!)을 해려 한다.

노르웨이와 축구를 한다고 해서 간단하게 설치하고 테스트 했던 이야기만을 남겨본다.
(위의 링크들을 찾아가서 설치 및 데모를 보면 어느정도 이해가 되리라 본다.)
Posted by 아름프로
자바의 길로 들어선지 10년이란 시간이 흘렀다.
그동안 많은 사람들 만나고 헤어지고 했는데...
그 중간에 가장 큰 이슈로 나뉘게 된 것이, 모바일쪽 시장이 태동하면서  이쪽으로
1세대 ~ 2세대 사람들이 대거 이동하게 되었던 기억이 난다.

그동안 나는 엔터프라이즈쪽에서만 주로 활동하며 현상유지에 배고픔에서는 벗어나
살 수는 있었지만, 당시 모바일쪽으로 이동했던 사람들 중에는 월급도 제대로 못받거나
노가다성으로 밤지세우기에 몸을 많이들 축내는 것을 보며 가슴아파했던 기억이 난다.
그 모습을 보며, 그래 저쪽은 아니야... 아니네.. 하며 .. 스스로는 정당화하며 지냈지만,
어느덧 시간이 흐른 지금에 시장을 둘러보면, 이젠 모바일쪽은 어느정도 안정적인 모습과
수익이 보장된 반면, 엔터프라이즈 시장은 솔루션 벤더로 시장을 버티기는 쉽지 않음을
느끼게 된다.  (국내의 인력구조로는 엔터프라이즈 솔루션을 만들기에는 차차 더 어려워
질 수 밖에 없는 형태로 흘러가기에 더욱 그러하다... )

RFID 표준 확정과 더불어 연휴내 이쪽 분야와 홈네트워, 와이브로쪽을 보다보니 ...
모바일쪽에서의 확장으로 접근이 용이한 점을 많이 보게 된다. 하지만, 그 중에서도
미들웨어쪽에서는 엔터프라이즈 환경이 포함이 되어야만 하는 모습과 SOA기반이 근간을
이루었을 때 더 큰 시너지를 가져 올 수 있음을 볼 때, 이들간의 접점을 찾을 수 있었고,
자바를 같이 오래 공부하다 한국썬에서 얼마전 한국MS로 이동한 친한 형의 모습에서도
예전에 자바와 MS가 완전히 다른 극과 극을 달렸던 것과는 달리 SOA기반에서 만큼은
평행한 접점에서 힘의 논리로 싸우는 것에 그래도 접점을 찾을 수 있었다.
(그 접점에는 SOA기반의 관련 기술과 아키텍쳐들이 있었다.)

뭐 어쨌든, SOA기반의 어떤 것이든, ESB든 .. 메시징 기반에서 뭐를 해볼까를 고민하고 있는 요즘,
엔터프라이즈 시장에서만 관점을 머물기보다는 아래단으로의 확장과 접목쪽에 시간을
투자해보는 것도 좋은 선택이란 판단이 섰고 ... 이제 실천해볼까 한다.
어제는 간만에 강신동씨의 idosi.com에를 들려봤는데... 초기 JINI 시장에서 고생하더니..
이제는 모바일과 RFID, 홈네트워크쪽에서 어느정도 자리를 매김 하는 모습을 보니 감회도 새롭게
약간은 부럽다는 생각까지도 든다. ^^

J2SE, J2EE, J2ME가 나눠진지도 어느덧 5년여가 되어가는거 같은데,
이젠 다시 이들이 함께 뭉쳐지는 날이 오고 있슴을 ... 뭉쳐져야 더 큰힘을 발휘할 수 있슴을 ...
느끼고 볼 수 있었던 시간이였고, 이제 핵심 키워드와 기술은 이들을 서로 잘 엮을 수 있는
기술과 고급 아키텍쳐쪽에도 있슴을 인지하고 관련 기술과 지식에 많은 투자를 해야 되라라 본다.

간만에 이와 관련한 스터디라도 진행해볼까 하는 생각이 마음한구석에 솔솔 피어오른다. ^^



Posted by 아름프로
현재 프로젝트를 진행중인 참여방송에서 TV 방송을 위해 RS-232 통신을 사용한다고 한다.
(자세한 것을 추후 설명 ... )
이에 궁금하던 차이기도 했고, RFID와 와이브로 관련해서 공부하다보니 자연스레 RS-232 통신에 대한
것이 나와 자바로 이것을 어떻게 할 수 있을까해서 찾아보니 Java Communication API로 가능한 것을
알게 되었다. (뭐 예전에 이 녀석이 나온 것을 알고 있었지만, 이것이 이런 용도라는 것은.. 그다지
관심을 두지 않았었다. ㅡㅡ;; )

현재 버젼 3.0 으로 리눅스와 솔라리스만을 제공하고 있다. 2.0까지는 윈도우관련 API도 제공했다고
하는데 왜 빠지게 된 것인지에 대한 비하인드는 관심 밖의 API이다보니 잘은 모르겠다.
(시간나고 기회되면 찾아보면 될꺼고... )

document 에보면 간단한 문서와 소스가 첨부되어 있다.
물론, 다운로드 받은 파일 내에서 샘플이 있으니, 이 또한 참고하면 된다.

예제에서 Linux 기반에서는 minicom을 사용하는 부분이 나오는데.. 이 부분은
ubuntu 에서는 sudo apt-get install minicom 하면 설치가 가능하다.

자세한 것은 좀 더 다뤄보고 다시 정리해보록 하고 오늘은 간단히 소개로 마무리해본다.

관련 사이트 : http://java.sun.com/products/javacomm/
Posted by 아름프로
차세대를 이끌어갈 기술항목중 하나로 뽑히며, 많은 이들의 이목을 집중시킨
RFID가 지긋한 힘겨루기 시절을 지나치며, 29일 ISO를 통해 표준화가 이루어졌다.

표준화 관련해서 한때 미친듯이 공부하다 지긋한 싸움들에 시간을 많이 허비한
나로써는 기쁨과 함께 아쉬움이 교차할 따름이다.

이젠 표준으로 정리가 된 만큼 2006년말 상용화를 목표로하는 기업이나 정부차원의
빠른 대응들이 나올 것으로 보여지며, 내년쯤엔 IT의 한 분야로써 자리 잡힘을 할 것으로
확실시 된다. 새로운 시대를 열어갈 분야로 재미있는 것이 있는지 한번쯤 살펴보는 시간을
가져보며 앞으로의 전망을 해볼까 한다.

Posted by 아름프로
90년중반에서 말까지 리눅스와 윈도우를 한 PC에 사용하던 사용자는 많지가 않았다.
더욱이 한 OS내에서 다른 OS를 탑재한다는건, 테스트로 진행해보고 할 수는 있었지만,
결국 사용하는데 포기를 했야만 했다. (하드웨어 성능이 충분히 받쳐주지 못했기에...)
... 그렇게 놀던 시절에서 한참이 지난 시점에서 윈도우에 리눅스를 탑재하여 놀 수 있는(!) 좋은 방법을
알게 되어 소개할까 한다.

지금에도 리눅스 위에 VMWare로 윈도우를 설치하는 이들은 많지만, 반대의 경우는 많지가 않은 것은..
VMWare workstation의 가격이 만만한 것이 아닌 것이 그 이유라면 이유일 것이다.
(불법 소프트 단속에 안전할 수 없기에, ... )
나 또한 이러한 생각으로 이러한 구성을 생각지도 않았다가... 금요일 퇴근전에 재미난 녀석을 보게 되었다.

이름하야, VMWare Player. 간단히 이야기해서 아크로뱃과 아크로뱃리더와의 관계라고 보면 될 것 같다.
여기에서의 VMWare Player는 아크로뱃리더와 같이 VMWare workstation에서 만들어진 이미지(!)형태의
것을 사용할 수 있는 녀석이다. (위의 관계처럼 VMWare Player는 무료다.)
처음 이것을 보고 생각했던 것은 VMWare workstation을 집에서 크랙으로 하나 설치하고, 필요한 것(!)들을
만들어서.. 이것을 노트북이나 회사 PC에서 쓰는 되지 않을까? 란 호기심이였는데..
조금 자세히 살펴보니, 이러한 짓꺼리도(!) 할 필요가 없음을 알게 되었다.

vmware 사이트의 vmtn(VMware Technology Network)에 가면, 왼쪽 메뉴에 Virsual Application이 있고,
이곳에서 검색을 하면, 리눅스의 경우 fedora Core 5, Ubuntu 5.10 을 구할 수가 있다. (Suse의 경우는
다른 사이트에서 구할 수 있다. 그 외 경량의 리눅스들도 여러개 보인다.)

쉽게 눈치채셨듯이, 그냥 VMWare Player 설치하고 위의 사이트에서 관련 파일 받아서..
그냥 실행하면, 끝이다. (단, 필요에 따른 설정들은 일일이 해주어야 한다. 특히 영문버젼인 상태라
한글화 작업을 진행해야한다.)

주말동안, fedora core5 , Suse 10, Ubuntu 5.10 ..그리고 윈도우의 짝퉁이라는 ReactOS까지 설치해보며
예전의 리눅스로 놀던 때의 추억에 빠질 수 있었다.

결론적으로 이야기하면, 한글화 작업과 별다른 어려움없이  기능을 사용하고 싶은 사람에게는 Ubuntu가
가장 쓰기 좋다는 것을 추천하고 싶다. (Fedora는 한글화 작업에 해야할 것들이 많다. 나도 적당히(!)만
해보다가 시간 축내지 않고 그냥 Ubuntu 하나만 어느정도(!) 설정만 해놓은 상태다.)
그리고 기대를 모았던 ReactOS는 정식릴리즈가 아니어서도 이지만, 속도면에서나 기능면에서 아직
가야할 길이 멀어보였다. (윈도우 프로그램 설치가 가능하다고하여, 필요에 따른 가벼운 프로그램 크랙해서
쓸까해서 테스트 해본 것인데, .. 안될듯 싶다. 혹시라도 윈도우를 떠놓은 것이 있다면, 윈도우 안에
윈도우를 띄워서 불법단속에 대비하는 것도 가능하리라 보인다.)

어쨌든, 이젠 노트북에서 윈도우와 리눅스환경을 동시에 오가며 개발하는 환경이 구축되었으니
이를 적극 활용해볼 수 있는 것들을 한번 찾아볼까 한다. (리눅스 안에서 eclipse 띄워서 이것저것
해봤는데, 별 무리 없이 잘 돌아갔다.)

요즘들어 재밌게 살고픈 생각이 아주 오래전의 나를 만나게 해주곤 한다.
Posted by 아름프로
한동안 표준에 쫓아다니가 지쳐 잠시 쉬었는데, 그 사이 JCP 에 JAX-WS 2.0 의 파이널 릴리즈 작업이
시작되었다. (2006/05/11 ~  .실제 릴리즈되었다고 보는 것이 맞다).
공식 명칭 : JSR 224: JavaTM API for XML-Based Web Services (JAX-WS) 2.0

최종 투표결과를 보니, Google에 기권한 것이 눈에 띄는 점이고, Expert Group에 눈에 익은 업체들이
유난히 많은 점도 눈에 띄는 점이다.
관련 사이트 : http://www.jcp.org/en/jsr/detail?id=224

잠시 다른쪽에 신경쓰고 있었는데, 이쪽에 대한 스터디도 본격적으로 시작해야될 듯 싶다.
예전에 netBeans에서 이에 대한 사용법을 본 기억이나서 쫓아가서 잠시 둘러보고 글 남긴다.
netBeans에서 JAX-WS20 사용법 : http://www.netbeans.org/kb/50/jaxws20.html

Posted by 아름프로


이 그림은 2004년 6월에 소비즈 메거진에 나온 그림이다.
몇일만 있으면 2년이라는 시간이 흐른샘이 된다.
과연, 현재의 BPM은 어디까지 왔다고 생각들하고, 솔루션들이 어느정도의 커버를 하고 있다고 보는가?
그리고 BPM에 물려있는 것들로만 봤을 때, ... 이 어마어마한 덩치의 프로젝트가 현실성은 있는것일까?

이쪽 분야로 관심을 돌린지가 짧게는 2년, 부분적으로는 4년여가 흘러가는 시점에서 점검해 필요성을
느끼게 된다. 현실적으로는 IBM, MS, Oracle, BEA, 등의 업체만으로도 이러한 부분에 상당히 접근해
있다고 볼지만, 저 위에서 이야기하는 모든 것이 BPM이라면 ... 과연 제품가격으로만 얼마가 책정될지
걱정스러울 뿐이다.

한가지 위한으로 삼을 수 있는 것은 많은 부분이 오픈소스쪽에서 준비되고 진행되고 있다는 점이다.
그 내용 또한 예전의 개개인 차원에서의 오픈소스가 아닌, 체계화되고 업계에서 인정받고 있는 커뮤니티
또는 단체에서 지원 또는 주도적으로 진행하는 ...

마냥 대형벤더에게 이러한 미래를 양보 또는 기대해서는 안된다고 생각한다.
특히, 우리나라의 개발업계로 봐서는 이와 같은 덩치의 솔루션을 준비할 수 있는 업체는 없다고 봐도
무방하기에(이의가 있다면 댓글로 달아주시길...)  오픈소스 프로젝트의 힘을 빌려보는 것도 나쁘지
않은 선택이라 생각한다.

어쨌든, 현실에서 진행되어 나가는 모든 것에 대해 냉철하게 되돌아볼 시기가 아닌가 싶다.
특히, 개발자들에는 말이다. (프로세스 위주의 컨설턴트들에게 이론적으로만 끌려다고 있는 것은 아닌지..)

Posted by 아름프로
아래의 예제들은 JNDI를 사용하다는 전제로 소스를 만들었다.
ActiveMQ는 별도의 설정없이 바로 테스트 가능하지만, SonicMQ의 경우는
Sonic Magement Console의 JMS Administrator Objects 을이용하여 Connection Factories에 Lookup관련
사항을 등록하여야하고, Desincation에도 예제에서 사용한 T1을 등록해주어야한다.

Spring JmsTemplate을 사용함에 따라 각 벤더에서 사용하는 API를 정리할 수는 있지만,
각 벤더만의 API 가지는 장점을 사용하기 위해서는 좀 더 세련된 소스 형태로 고민을 해야될 것이다.
(아래의 예제는 가장 간단히 주고, 받기만을 할 수 있는 예제이며 설정이다.)

그리고, (1)에서도 잠시 언급한 JmsTemplate Gotchas 를 꼭 읽어보고, 이에 대한 부분도 함께 고려하여야
할 것이며, James Strachan 이 설계한 lingoJencks 도 살펴보길 바란다.

다음엔 이를 좀 더 확장하여, ServiceMix와 Celtix, mule 에 통합하는 것을 다뤄볼까 한다.

아래의 내용은 소스는 다음에서 받을 수 있다.
클릭
Posted by 아름프로

소스는 ActiveMQ의 소스와 같으며, 해당 xml은 아래와 같다.

sonicmq_receive.xml

<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<bean id="start" class="java.lang.String"/>

<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="jndiTemplate"/>
</property>
<property name="jndiName">
<value>OUTTER_CB_URL</value>
</property>
</bean>

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
com.sonicsw.jndi.mfcontext.MFContextFactory
</prop>
<prop key="java.naming.provider.url">
tcp://222.112.180.61:2506
</prop>
<prop key="com.sonicsw.jndi.mfcontext.domain">
Domain1
</prop>
<prop key="java.naming.security.principal">
Administrator
</prop>
<prop key="java.naming.security.credentials">
Administrator
</prop>
</props>
</property>
</bean>

<bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="jndiTemplate" />
</property>
<property name="jndiName">
<value>T1</value>
</property>
</bean>

<bean id="messageListener" class="org.jtop.spirng.sample.sonicmq.receive.Receiver" />

<bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="destination" />
<property name="messageListener" ref="messageListener" />
</bean>
</beans>


Posted by 아름프로
소스 부분은 AciveMQ에서의 예제와 같으며, 실행 소스상에서의 아래 xml로 적용.

sonicmq_send.xml 부분
<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="jndiTemplate"/>
</property>
<property name="jndiName">
<value>OUTTER_CB_URL</value>
</property>
</bean>

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
com.sonicsw.jndi.mfcontext.MFContextFactory
</prop>
<prop key="java.naming.provider.url">
tcp://222.112.180.61:2506
</prop>
<prop key="com.sonicsw.jndi.mfcontext.domain">
Domain1
</prop>
<prop key="java.naming.security.principal">
Administrator
</prop>
<prop key="java.naming.security.credentials">
Administrator
</prop>
</props>
</property>
</bean>

<bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="jndiTemplate" />
</property>
<property name="jndiName">
<value>T1</value>
</property>
</bean>

<bean id="rankSender" class="org.jtop.spirng.sample.sonicmq.send.Sender">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="destination" />
</bean>
</beans>


Posted by 아름프로
메시지 받기 (onMessage)

package org.jtop.spirng.sample.activemq.receive;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
*
* @author lee
*/
public class Receiver implements MessageListener {

Log log = LogFactory.getLog(this.getClass());

public void onMessage(Message message) {
try {
TextMessage tm = (TextMessage)message;
log.debug("Property : " + tm.getStringProperty("Property"));
log.debug("Text : " + tm.getText());
} catch (JMSException e) {
log.error("onMessage Exception : ", e);
}
}
}


실행하는 클래스

package org.jtop.spirng.sample.activemq.receive;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class Runner{

Log log = LogFactory.getLog(this.getClass());

private void run() {
ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/activemq/activemq_receive.xml");
ctx.getBean("start");
log.info("============= onMeesage() ==============");
}

public static void main(String[] args) {
Runner job = new Runner();
job.run();
}
}



activemq_receive.xml 내용

<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<!-- === XML이 로딩되면서 자동으로 messageListener 동작(start는 단순 로딩용) === -->
<bean id="start" class="java.lang.String"/>

<bean id="r_connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="r_jndiTemplate"/>
</property>
<property name="jndiName">
<value>ConnectionFactory</value>
</property>
</bean>

<bean id="r_jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
org.apache.activemq.jndi.ActiveMQInitialContextFactory
</prop>
<prop key="java.naming.provider.url">
tcp://localhost:61616
</prop>
</props>
</property>
</bean>

<bean id="r_destination" class="org.apache.activemq.command.ActiveMQTopic" autowire="constructor">
<constructor-arg value="FOO.BAR" />
</bean>

<bean id="messageListener" class="org.jtop.spirng.sample.activemq.receive.Receiver" />

<bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="r_connectionFactory" />
<property name="destination" ref="r_destination" />
<property name="messageListener" ref="messageListener" />
</bean>

</beans>
Posted by 아름프로
두 MQ모두 Sample(or Example)에 보면 Connection 생성에서부터 각자의 Connection 클래스로 생성하게
되어 있어, 한쪽에서 개발을 한 다음에는 다른 MQ로의 사용이 어렵게 되어 있다.
이에 Spring의 JmsTemplate을 사용하여, 좀 더 쉬운 방법으로의 통합된 형태의 간단한 예제를 작성해본다.
(단, JmsTemplate Gotchas 을 읽어보고, JmsTemplate을 적용에 주의를 요한다.)

메시지 Send

package org.jtop.spirng.sample.activemq.send;

import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;

public class Sender {

Log log = LogFactory.getLog(this.getClass());

private JmsTemplate jmsTemplate;
private Destination destination;

public void setConnectionFactory(ConnectionFactory cf){
jmsTemplate = new JmsTemplate(cf);
}

public void setDestination(Destination des){
this.destination = des;
}

public void send(){
this.jmsTemplate.send(this.destination, new MessageCreator(){
public Message createMessage(Session session) throws JMSException {
Message ms = session.createTextMessage("Example Message");
ms.setStringProperty("Property", "Example");
return ms;
}
});
}
}

실행하는 클래스

package org.jtop.spirng.sample.activemq.send;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class Runner{

Log log = LogFactory.getLog(this.getClass());

private void run() {
ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/activemq/activemq_send.xml");
Sender sender = (Sender)ctx.getBean("sender");
sender.send();
log.info("============= Send ==============");
}

public static void main(String[] args) {
Runner job = new Runner();
job.run();
}
}

activemq_send.xml 내용

<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<!-- ======================== Sender =========================== -->
<bean id="s_connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="s_jndiTemplate"/>
</property>
<property name="jndiName">
<value>ConnectionFactory</value>
</property>
</bean>

<bean id="s_jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
org.apache.activemq.jndi.ActiveMQInitialContextFactory
</prop>
<prop key="java.naming.provider.url">
tcp://localhost:61616
</prop>
</props>
</property>
</bean>

<bean id="s_destination" class="org.apache.activemq.command.ActiveMQTopic" autowire="constructor">
<constructor-arg value="FOO.BAR" />
</bean>

<bean id="sender" class="org.jtop.spirng.sample.activemq.send.Sender">
<property name="connectionFactory" ref="s_connectionFactory" />
<property name="destination" ref="s_destination" />
</bean>
</beans>



Posted by 아름프로

링크 자료는 되도록 안올리려 했지만, 좋은 내용이 있어서 링크해본다.
스타도 지우고 eclipse와 잼난 시간을 보내고 있는 ... 요즘이 즐겁다.

제1회 가장 간단한 Eclipse 플러그인

  1. 플러그인 작성의 기본 순서
  2. 플러그인의 소스를 살펴 보자
  3. SWT와 JFace

제2회 트리 표시 플러그인을 작성하자

  1. 트리 뷰어를 사용한 뷰어의 구현
  2. 뷰의 툴바와 풀다운 메뉴

제3회 텍스트 문자 편집기 플러그인 구현

  1. 템플릿에 의한 XML 에디터의 생성
  2. 문서의 분할 작업
  3. 에디터의 configuration

제4회 플러그인의 설정 보존

  1. preference 스토어 / 초기값의 설정
  2. preference 페이지의 구현
  3. 에디터로 설정내용 반영/preference의 변경 검지

제5회 Eclipse플러그인에 마법사를 구현하려면

  1. 마법사의 기본 구조
  2. XML 파일을 작성하는 마법사의 구현
  3. 마법사의 이동을 제어한다.
  4. 여러 개의 페이지를 가지는 마법사의 구현

Posted by 아름프로
어설픈 해석보다는 원문 그대로를 적어본다.
ActiveMQ 사용에 있어서의 JmsTemplate 사용에 대한 좋은 내용이다.
  • Never use a regular ConnectionFactory unless you are totally sure it does all the pooling you need
  • If using in an EJB ensure you use the EJB containers ConnectionFactory; otherwise consider using Jencks to create it for you
  • If not using in an EJB then use Jencks to create the ConnectionFactory
  • If you are only publishing messages and you are not in an EJB and you are using ActiveMQ then you can use the PooledConnectionFactory
  • Ifyou are consuming messages its probably simpler & more efficient& less likely to loose messages to avoid using the receive() methodand use
    Message Driven POJOs instead - unless you absolutely must pull messages on demand from inside an EJB.
원문 : 위치
Posted by 아름프로
JmsTemplate은 설계가 되어질 때, EJB 컨테이너를 사용하는  EJB상에서 사용한다는 것을 전제로 설계가
되어졌다고 한다. 다시 말해, J2EE Cotainer 환경에서 JMS pooling을 이  J2EE Cotainer가 처리해준다는
것이 전제 되어있다는 것이다.

이로 인해 JMS pooling 처리를 하지 않고, JmsTemplate 을 사용할 시에 인스턴스 생성상에서 어느정도에
이르르면 에러가 발생하게 된다. (ActiveMQ의 경우, 65535 MessageProducer instances 생성시)

결과적으로 Spring JmsTemplate 은 WAS 기반을 갖추어야만 사용에 문제가 발생하지 않는다는 것이다.
해결책으로는 각 MQ벤더별 Connection에서의 풀링여부를 체크하여 사용하는 방법과
앞선 글에서 소개된 Jencks (pooling  메커니즘으로 처리됨) 를 사용하는 방법이 있다.


Posted by 아름프로

Lingo 와 Jencks

2006. 5. 12. 11:45
codehaus.org 프로젝트에 보면, ActiveMQ와 연계되는 프로젝트에 Lingojencks 라는 것이 있다.
1년전 MQ들의 통합과 이들을 다시 ESB기반의 Open 제품과 사용제품과 함께 통합할 수 있는
것을 만들어보고자, Spring 기반에서 고민한 적이 있는데, 현 시점에는 이들이 그것을 가능케해주는데 있어서
중요한 기능을 담당할 수 있을 듯하다.
Geronimo에 포함되어져 있어 앞으로도 계속 업그레드되어지리라 보여진다.

두 프로젝트 모두, 개인적으로 좋아라하는 james strachan 이 프로젝트 리더로 이끌고 있다.

Lingo :
[CODE] JMS기반위에 Spring Remoting을 구현한 녀석으로, JMS를 사용면서 POJOs의 뒤로 JMS의 사용을 숨길 수가 있다. (다시 말해서, 원격지의 데이터 전송에 있어 Spring을 사용(Spring Remoting)하여, JMS의 사용에 대한 부분은 캡슐화 시켜준다.) [/CODE]
Jencks :
[CODE] Spirng을 내에 JMS와 JDBC pooling을 이용하여 Message Driven POJOs를 구현한 녀석으로 (lightweight JCA 컨테이너와 Resource Adapters를 사용한다.), EJB를 사용하지 않으며, MDB와 같은 역할을 한다. [/CODE]
Posted by 아름프로
SWT, Swing or AWT 어떤 것을 사용해야할지..
아니면, .NET으로 해야할지.. VB? VC? ... 어플리케이션을 하나 만드는데 있어서 어떤 것으로
만들지 고민이 많이 된다.

그중 SWT, Swing or AWT 의 선택에 있어서는 좋은 가이드 문서가 있어서 소개할까 한다.
여기


Posted by 아름프로

Celtix가 릴리즈 된 소식에 반갑기도하고, 기운빠지기하다.
이런 녀석을 만들겠다고 덤비던 시기가 불과 1년도 채지나지 않았는데..
어느덧 아무런 형태나 계획조차 없었던 Celtix가 이렇게 정식으로 릴리즈 되니 말이다.

아직 소스나 돌려보지는 않았지만, 눈에 띄는것으로는...
ActiveMQ 를 사용하였다는 부분과 왠지 구성이 ServiceMix를 많이 참조하지 않았나 싶은거다.
이 부분은 소스를 열어보면 어느정도 명확해지지 않을까 싶다.

어쨌든, 나에겐 재미난 흥미꺼리가 하나 늘어남과 동시에 고민꺼리가 늘어난 샘이다.


------------------------(릴리즈 소식)-----------------------------

May 8, 2006

Celtix 1.0 is released and available for download at http://forge.objectweb.org/project/showfiles.php?group_id=192. Celtix 1.0 is also available as a Maven distribution at, http://maven.objectweb.org/maven2.

Celtix 1.0 provides users with a feature-rich, open source ESBruntime that can support any organization’s adoption of ServiceOriented Architecture (SOA) in the enterprise.

The Celtix project was initiated in June 2005 under the sponsorshipof IONA. Celtix 1.0 is the result of the fifth consecutive on-scheduledelivery of key project milestones and the acceptance of the currentCeltix build by the ObjectWeb community. The availability of an opensource ESB that offers comparable features and functionality to manycommercially available ESB products provides users with an effective,standards-based foundation from which their SOA initiatives can berapidly built and extended.

The features contained in this release include:

  • Persistence support for Reliable Messaging based on Apache Derby
  • HTTPS based security support
  • Support for Javascript based webservices.
  • Support for changing configuration dynamically
  • Management support for additional Celtix components
  • Support for wsdlvalidator commandline tool
  • Routing support for all Celtix bindings and transports
  • Enhanced routing capabilities
  • WS-Addressing support for JMS based services
  • Interoperability with .NET.
  • Support for Maven 2.0.4
  • Support for running Celtix inside Apache Tuscany
  • Support for Webservice callbacks

Features completed in previous releases include:

  • Support for JAX-WS Dispatch APIs
  • Support for JAX-WS Provider APIs
  • Support for non-wrapper Doc/Literal style
  • Celtix based javatowsdl tool
  • Celtix based wsdltojava tool
  • First cut of transport APIs
  • Enhanced binding API for better pluggability
  • Support for Protocol Handlers
  • Support for Logical Handlers
  • Support for Contexts
  • SOAP 1.1 support for doc/rpc literal
  • Support for SOAP 1.1 faults
  • Support for SOAP 1.1 headers
  • Support for JAX-WS Sync APIs
  • Support for JAX-WS One-Way APIs
  • Support for inout and out variables
  • HTTP 1.1 transport
  • HTTP servlet transport
  • JMS transport based on Active MQ
  • Support for WS-Addressing
  • Support for JAX-WS async client APIs
  • Policy based configuration
  • Support for StreamHandler APIs
  • WS-RM based support for Webservices Reliability
  • Support for JMX based management
  • XML Binding
  • New commandline tools: xsd2wsdl, wsdl2xml, wsdl2soap, wsdl2service
  • Native integration into Apache Geronimo J2EE appserver
  • Support for validating application data against XMLSchema
  • Enhanced support for deploying celtix services into a servlet container based on feedback from Jonas J2EE appserver project
Posted by 아름프로
1. New session을 클릭한다.



2. Session : new 라고 되어진 곳에 ActiveMQ 또는 해당 MQ을 입력한다.
  (작성 버젼 : ActiveMQ3.2.2 버젼)
3. Connection Factory 에 그림과 같이 선택하고 입력한다.


4. 위 그림의 Seesions 옆의 Providers를 클릭하면 아래 처럼 나온다.
5. 마우스 오른쪽을 클릭하여, Add Group 을 클릭하여 그룹을 등록한다.
6. 등록 후, Library 라로 적힌 곳에서 다시 오른쪽 마우스 클릭하여 해당 jar 파일 등록한다.
7. 아래는 ActiveMQ(3.2.2 와 4.0RC2) 와 SonicMQ6.1을 등록한 모습


8.아래와 같이 각각 Session을 등록한 후,
9. 해당 Session(ActiveMQ or SonicMQ)에서 오른쪽 마우스를 클릭하여, Queue 또는 Topic을
   등록한다.
10. ActiveMQ에 디폴트로 생성되어 있는 FOO.BAR를 Topic으로 등록한다.
    Sonic은 SampleQ1~6까지 사용하면 된다.


11. 테스트를 위해 메뉴의
버튼을 클릭하여 아무 Text 파일을 클릭하여 확인을 누른다.

12. 별 이상이 없다면 ... 위의 그림과 같이 메시지가 들어와 있는 것을 확인할 수 있다.

Posted by 아름프로

BLOG main image

카테고리

분류 전체보기 (539)
이야기방 (19)
토론/정보/사설 (16)
IBM Rational (9)
U-IT (0)
SOA/WS/ebXML (110)
개발방법론/모델링 (122)
J2SE (34)
J2EE (60)
DataBase (39)
Open Projects (30)
BP/표준화 (50)
Apache Projects (15)
Web/보안/OS (22)
Tools (7)
AJAX/WEB2.0 (1)
Linux/Unix (1)
영어 (0)
비공개방 (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

글 보관함

Total :
Today : Yesterday :