전체 글 1274

Oracle Service Bus (OSB/ALSB)에서 Tuxedo 호출하기

(FML인 경우) 1. Tuxedo에서 도메인 Config 설정을 한다. 2. FML 파일을 java weblogic.wtc.jatmi.mkfldclass fmldata 로 해서 JAVA 클래스를 생성한다. 3. WLS에서 WTC 설정을 하고 Resource 탭에서 위에서 설정한 JAVA 클래스를 적는다. 4. 2에서 작성한 클래스를 JAR로 묶어서 클래스 패스에 추가한다. == 여기까지가 WLS의 WTC설정 5. SB에서 AnyXML로 비지니스 서비스를 만들고 6. JAR를 SB 프로젝트에 추가한후, CLASS에서 해당 JAR를 고른다. 7. 비지니스 서비스를 완성한후 테스트시에 FML이 다음과 같을때 #name number type flags comments ACCOUNT_ID 10 long - - ..

자바 기술 트렌드 분석 - 2. OR Mapping

두번째 기술 트렌드 분석은 DB2JAVA 즉 OR Mapping Framework 입니다. IBatis와 Hibernate를 봤는데, 1. IBatis 2. Hibernate 언뜻 보기에는 사용량이 유사해보입니다만, 국가별 차이를 비교해보면 재미있는 결과가 나옵니다. 1. Ibatis 2. Hibernate IBatis의 경우 한국 편중 현상이 매우 심합니다. 반면 Hibernate의 경우 개발이 많은 인도, 특히 델리에서 많이 검색되고 있고, 실리콘밸리가 근접한 샌프란시스코에서도 검색 빈도가 높습니다. 언어 분포에 있어서도 꽤나 골고루 되어 있는 것을 보면, 세계적으로는 Hibernate가 대세, 한국에서는 IBatis의 압도적인 우세 정도로 평가할 수 있습니다. 실제로 IT 구인 사이트 Dice.co..

자바 기술 트렌드 분석 - 1. MVC

백기선님 블로그에서 재미있는 글을 하나 봤습니다. 구글 검색엔진에, http://www.google.com/trends 을 보면 검색어별로 검색 비중에 대한 트렌드를 보여줍니다. 이 데이터를 분석하면 현재 기술의 흐름을 대략 읽어볼 수 가 있겠지요. 먼저 MVC 모델에 대한 분석을 해봤습니다. 1.Struts. 2. Spring MVC 3. JSF 그래프에서 볼 수 있듯이, Struts는 하향세, Spring MVC가 주요인것 처럼 보이고, JSF는 중간 정도로 보입니다. 사실 좀 데이타가 이상한것 같아서 Dice.com이라는 IT 전문 사이트에 가서 해당 키워드를 검색을 해보니 다음과 같은 결과가 나옵니다. JSP 1589건 Spring MVC 186건 JSF 735건 Struts 884건 이 결과로 ..

Tomcat 6.0과 Apache 2.X 연동

server.xml에 AJP 프로토콜 설정하는 부분의 샘플이 빠져 있어서 삽질을 좀 했네. 아래와 같이 server.xml에서 AJP Port를 열어줘야함. Apache에서는 mod_jk 설치한후 LoadModule jk_module modules/mod_jk.so JkWorkersFile /usr/local/apache2/conf/workers.properties JkLogFile logs/mod_jk.log JkLogLevel info # First Virtual Host. # DocumentRoot "/usr/local/confluence-2.10.3-std/conf" ServerName wiki.javastudy.co.kr JkMount /* confluence workers.propertis에 ..

G1GC Collector

Garbage First Collector 이하 G1 Collector는 예전에 잠깐 소개한적이 있는데, 오늘 지금 하는 프로젝트에서 메모리 관련 이슈가 있어서 잠깐 살펴보았는데, 대략 적인 원리는 다음과 같다. CMS (Concurrent Mark & Sweep)의 원리는 기존에, New 영역을 Old영역으로 보낸후에, Old 영역의 Object Tree를 Search해서 Dead Object를 Mark하고, Mark 된 Object들을 deallocate하는 방식이었다. 이 작업을 Concurrent Thread가 연속적으로 한다는 것인데, (Full GC 시간에 몰아서 하는 것이 아니라. ) G1 Collector는 메모리 구조 부터가 틀리다. New/Old 영역을 Physical하게 따로 나누지 ..

먹보 오라클이 썬을 인수한답니다.

얼마전에 IBM이 Sun 인수를 시도했다가 무산되었는데. 지금 온라인을 보니까는 Oracle이 Sun을 인수한다는 군요. 이제 오라클은 BEA를 인수함으로써 데이타 베이스 + 미들웨어 시장에 이어서 Sun 인수로 인해서 자바 기술의 종가 + 하드웨어 까지 갖추게 되었습니다. 이제 IT 시장은 IBM과 Oracle이 2강 구도가 되겠군요. 그나저나 엔터프라이즈 시장에서는 옮길 회사가 또 없어졌습니다. 아래는 Sun 인수에 대한 뉴스 링크입니다. http://www.bloomberg.com/apps/news?pid=20601082&sid=awfGnLxcC8bk

사는 이야기 2009.04.20

다음달에 REST 발표 합니다.

오라클 마케팅에서 다음달에 진행하는 개발자 행사에서 오픈 소스 관련해서 발표를 해달라는 요청을 받아서 REST에 대해서 발표하려고 합니다. 지난번 프로젝트에 진행한 REST 기반의 아키텍쳐에 대해서 설명하고 REST의 장단점, 구현 방법에 대해서 이야기 하고, 한국에서 잘못 알려진 REST에 대한 정의에 대해서 이야기 해보려고 합니다. 프로젝트 진행후 그동안 다른 프로젝트에 치여서 발표나 기고할 시간이 없었는데, 이 핑계로라도 정리를 해봐야 겠습니다. 그나저나 메니져가 발표할날 시간을 빼줄지 모르겠네요...

사는 이야기 2009.04.20

새로운 GC Collector G1.

재미있는 소식이 있어서 포스팅합니다. JDK 1.6 update 14에 G1이라는 형식의 Garbage collector가 추가됩니다. 기존에 CMS (Concurrent mark and sweep)과 는 다르게, Compaction을 사용하며, 특히 주목할만한 것은 Large Memory에서 latency time을 극소화 했다는 것입니다. 쉽게 풀어서 설명하자면, 이제 GC 시간 때문에 대용량 Heap을 사용하지 못하는 일이 없어진다는 것입니다. 애플리케이션이 메모리에서 많이 자유로워 지는 것이지요... 물론 뚜껑을 열어봐야 알겠지만, CMS옵션도 1.4에 release되어 1.5에는 꽤나 쓸만한 모습을 갖춘만큼. G1 Collector도 앞으로 많은 기대가 됩니다. 참고 http://www.info..

XML 변환 성능

SOA 프로젝트를 진행하면서 가장 골치거리 중의 하나가 XML 변환에 소요되는 CPU와 응답시간이다. 통상 SOA나 요즘의 많은 Remote call들이 XML을 기반으로 하다보니, 특히나 XML 메세지 변환에 대한 요건이 많다. 자료들을 찾아보니 몇가지 흥미로운 자료들이 있는데, XSLT가 전체적으로 변환에는 가장 많이 사용되는 듯 (OSB의 경우 XQuery가 편해서 XQuery를 많이 사용하긴 하지만.)한데 그중 흥미로운것인 XSLT를 compile time에 translet이라는 것으로 변환해서 사용할 수 있는 프레임웍 http://xml.apache.org/xalan-j/xsltc_usage.html 그리고 재미있는 것중의 하나가 Intel에서 만든 XML 변환 가속기인데, Native 코드로 ..

Soap Handler

SOA 아키텍쳐중에 요건중의 하나가 웹서비스로 들어오고 나가는 데이타에 대한 Transformation과 Filtering이 문제인데, 일반적으로 ESB에서 이를 구현하고 결과적으로 과도한 XQuery로 성능저하로 아주 많은 문제를 일으키는 경우가 있는데, 이에 대한 대응 아키텍쳐로 SoapHandler를 사용해 보는 방법을 고려해볼 수 있다. WebService는 일반적인 형태로 개발하고, Filtering이 필요할 경우 앞에 Filter의 기능에 따라서 SoapHandler를 붙이고 다른 endpoint를 부여 하는 방식을 사용할 수 있다. 자세한 내용은 여기에.. http://www.javaworld.com/javaworld/jw-02-2007/jw-02-handler.html?page=3 조만간 ..

Trac

이번 프로젝트에 6번째로 ALM을 사용해보기로 결정하였습니다. SVN,WIKI,Issue Tracking이 모두 필요하고 설치할 시간도 없어서 Trac (Trac On Windows - 압축만 풀면 사용 가능하게 한 패키징)을 설치하여 사용하고 있습니다. 올인원 패키지이고 플러그인을 지원해서 좋긴하지만 JIRA의 파워풀한 기능을 경험한 저로써는 불편한점이 많더군요. (예를 들어서 조회 조건 같은 것을 Query로 직접 코딩해야 하는 불편함등.) 이번 프로젝트도 상당히 긴 프로젝트가 될것 같습니다. Trac 기반의 ALM을 시험해볼 좋은 기회가 되겠지요. Trac에 설치한것은 다음과 같습니다. - TOW (Trac On Windows) - Timingandestimation plug in - ScrumBu..

ALM 2009.04.09

PT 자료를 왕창 업로드 했습니다.

예전 발표 자료가 필요해서 찾다 보니까는 생각보다 잊혀져 버리고 구석에 쳐박혀 있는 자료들이 많더군요. 오늘 대충 정리해서 Slideshare에 올렸습니다. http://www.slideshare.net/Byungwook 2003년에 만든 자료는 6년이 지난 지금 보니까는 참 어설프구나 하는 자료도 있고, 그때에 비해서 내 분야가 이렇게 바뀌었구나 하는 생각도 들고 잠깐이나마 예전을 돌아볼 수 있는 시간이 되었습니다. 자유롭게들 사용하시고 질문이나 토론은 언제나 환영 합니다.

사는 이야기 2009.04.09

Java File Writing 성능 비교

JAPM을 업그레이드 할까 싶어서 Log Writing 부분을 개선하고자 해서 File Writing을 어떻게 하는 것이 제일 빠를까 테스트를 해봤다. 크게 아래 케이스인데. 1. FileWriter fw = new FileWriter(LOG_HOME+"writer.log"); 2. BufferedWriter bw = new BufferedWriter(new FileWriter(LOG_HOME+"writer.log")); 3. FileOutputStream fos = new FileOutputStream(LOG_HOME+"outputstream.log"); 4. BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(LOG_HOM..

호주 IT 상황

한국 IT에서 희망이 없다고 생각해서, 오래전 부터 호주에서 일자리를 구하는 것을 알아 보고 있습니다. 쉽지는 않은일입니다만, 여러 방면으로 알아보고 있는데, 오늘 호주 친구가 흥미있는 링크를 보내줬습니다. http://www.australianit.news.com.au/story/0,24897,25265857-15306,00.html 전체적으로 457 취업비자로 취업을 하기에는 힘든 상황 같습니다. 비자 문제뿐만 아니라 경기 침체로 호주에 IT 관련 일자리가 많이 줄어든것 같습니다. 호주 Oracle에 있는 친구 말로는 그래도 SOA쪽은 일자리가 좀 있다고 하네요. 매일 야근에... 박봉에서 벗어나서.. 일한만큼 받고... 가족과 함께 많은 시간을 같이 하고 싶습니다.

사는 이야기 2009.03.31

Aspect J를 이용한 초간단 APM 만들기 (2)

JMX를 이용하여 Thread 별 CPU 시간을 측정하는 방법 == ThreadMXBean mbThread = (ThreadMXBean) ManagementFactory.getThreadMXBean(); long[] ids = mbThread.getAllThreadIds(); for (long id: ids) { System.out.println(mbThread.getThreadInfo(id).getThreadName()); System.out.println(" CPU Time(" + id+ ")" + mbThread.getThreadCpuTime(id)); System.out.println(" User Time(" + id+ ")" + mbThread.getThreadCpuTime(id)); } == ..

Aspect J를 이용한 간이 APM 만들기.

AOP를 이용하면 특정 클래스의 메서드 실행 전후에 Code를 삽입할 수 있다. 사용자 애플리케이션의 비지니스 메서드에 Code를 삽입하여 1. 시작 시간, 종료시간을 측정하면 비지니스 메서드의 응답 시간을 측정할 수 있고 2. JMX를 이용하여 CPU 사용시간을 측정하면 비지니스 메서드의 CPU 사용률을 측정할 수 있다. 3. Thread Local 변수를 이용하면, Transaction이 시작될때부터 끝날때 까지를 측정할 수 있다. (예를 들어 JSP는 JSPServlet : service 메서드에서부터 시작되기 때문에, AOP에서 before advice에 transaction id를 set하게 하고, after advice에서 Trace내용을 flush하게 하면 된다. 그 중간에는 Thread L..