전체 글 1334

Oracle BPEL PM에서 Service 호출 Client 소스 (JSP)

@ page import="java.util.*" %> @ page import="javax.naming.*" %> @ page import="com.oracle.bpel.client.Locator" %> @ page import="com.oracle.bpel.client.NormalizedMessage" %> @ page import="com.oracle.bpel.client.dispatch.IDeliveryService" %> try{ String title="CALLING FROM JSP"; String xml = "" + ""+title+"" +""; Hashtable jndi = new Hashtable(); // assign RMI port which can be found in OAS con..

무료 ETL 솔루션

Enterprise Architecture 에서 중요한것중의 하나가 ETL (Extract Transformation Loading)이다. 쉽게 이야기 하면, 비동기적으로 파일이나 DB간에 데이타를 동기화 해주는 솔루션인데 기업 아키텍쳐에서 흔히 Near Real Time이라는 형태의 Async로 구현되거나 또는 Batch성 작업으로 분류되는데. 사실 이 ETL 솔루션이 만만한것이 그리 많지 않다. 대부분 EAI에서 ETL 기능을 구현해서 사용하는데, 데이타 양이 많다 보니 성능이나 구현의 생산성에서 애로점이 있는 것이 사실이다. 그래서 EAI 솔루션 위에서 Custom Module로 개발을 하거나 Spring Batch와 같은 오픈소스 프레임웍을 이용해서 구현하는 경우가 많은데 오늘 아주 어이없는 툴을..

아키텍쳐 2009.06.09

REST 아키텍쳐에 대한 연재를 시작합니다.

그간 Technical한 내용에 대한 Post가 뜨음 했습니다. 작년과 금년에 걸쳐서 REST 기반의 시스템을 설계와 구현을 하였습니다. 그때 참 REST에 대한 이해가 잘못되어 가고 있구나, 그리고 REST에도 생각할것이 참 많구나 하는 생각을 하고 꼭 정리해야지 정리해야지 했는데... 몇달이 지난 지금에야 시작합니다. 총 4회의 연재로 구성됩니다. 1회-REST 아키텍쳐에 대한 소개 REST가 무엇인지에 대해 간단한 소개와 REST 기술에 대한 경향을 알아봅니다. 2회-고도화된 REST 아키텍쳐 Roy Fielding이 소개한 진짜 고도화된 REST에 대한 아키텍쳐를 좀더 깊게 알아봅니다. 3회-REST 구현 REST 구현 스펙인 JAX-RS (JSR-311) 기반의 Jersey 프레임웍을 통한 RE..

REST 연재-1회 REST 아키텍쳐의 기본

1회 – REST 아키텍쳐에 대한 기본(DRAFT) 자바스터디 조대협 http://bcho.tistory.com REST 아키텍쳐 REST는 웹의 창시자(HTTP) 중의 한 사람인 Roy Fielding의 2000년 논문에 의해서 소개되었다. 현재의 아키텍쳐가 웹의 본래 설계의 우수성을 많이 사용하지 못하고 있다고 판단했기 때문에, 웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍쳐를 소개했는데 그것이 바로 Representational safe transfer (REST)이다. Basic of REST 한마디로 REST를 정리하면 HTTP URI + HTTP Method 이다. URI로 대상 자원을 명시하고 Method로 해당 자원에 대한 행위를 정의한다. Resource REST의 가장 큰..

성공적인 프로젝트를 위한 Prototyping

지금까지 delivery한 프로젝트를 생각해보니, 문제가 없이 잘 되었던 프로젝트는 어떤 이유에건간에 (자의든 타의든) 1~2개월정도의 프로토타입핑 시간을 가졌던 것으로 기억된다. 물론 지금 하고 있는 프로젝트 역시 Prototyping을 진행하고 있다. 이 과정에서는 1.고객의 요건을 분석한후 2.요건을 패턴화 하여 분리한후 3.패턴별로 프로토 타입을 구현한다. 4.그리고 기능/비기능 테스트를 통해서 프로토 타입을 검증한다. 이 과정이 끝나면 아키텍쳐나 시스템에 대한 디자인은 어느정도 이상의 완성도를 가지게 되고, 그 다음부터는 패턴에 따라서 찍어내기만 하고, Task 에 대한 스케쥴 관리만 원할하게 하면 된다. 결국 프로젝트의 성공 여부는 얼마나 검증되고 안정된 아키텍쳐를 초기에 잘 뽑아내는가인거 같..

Trac을 이용한 이슈기반의 팀 관리의 문제점

현재 진행하고 있는 프로젝트에서 Trac을 도입해서 사용하고 있습니다. Trac 뿐만 아니라 사실상 거의 모든 이슈 트랙킹 시스템을 이용하여 팀 일정 관리를 할때 공통적으로 생기는 문제 같은데, 팀관리에서 가장 중요한것은 어떤 TASK를 누가, 언제 하느냐 입니다. 이슈 트랙킹 시스템은, 어떤과 누가를 잘 추적할 수 있게 해줄뿐만 아니라 Comment등을 통한 History 기능으로 어떻게 하느냐까지 잘 관리할 수 있습니다. 그런데 문제는 "언제" 즉 시간에 대한 부분입니다. 이슈 트랙킹 시스템들은 대부분 Time Frame,Mile stone, Due date 식으로 대략 Task 단위의 시간을 제공합니다만, 프로젝트 관리에 있어서 간트 챠트만한것이 없습니다. 문제는 이 이슈 트랙킹 시스템들이 간트 챠..

ALM/Task Management 2009.05.19

아침부터 삽질 (Query String에서 특수 문자 처리)

아침부터 한시간은 이걸로 삽질은 한듯. HTTP/GET QueryString에서 특수문자를 넘길때, 예를 들어 ?param=% 를 넘기고 싶은데, %는 URL 인코딩 캐릭터로 인식하기 때문에 안넘어간다. 이럴 경우에는 URL 인코딩을 해서 보내여 하는데. 간단하게 package sample.bcho; import java.net.URLEncoder; public class Encoding { public static void main(String args[]){ System.out.println(URLEncoder.encode("%")); } } 로 테스트하면 URL Encoding된값을 알 수 있다. %는 %25로 나오네. 즉 ?param=%25 로하면 % 캐릭터를 넘길 수 있다.

프로그래밍/MVC 2009.05.15

ALM의 괴리.

요즘 매일 대전으로 출퇴근을 하고 있습니다. 계약 관계가 복잡하게 얽혀서 근 3달정도 지연이 되어 버린 프로젝트입니다. 원래는 Project Manager와 Cheif Architect 역할로 계약이 되었지만, 구현일정 관계로 한 모듈의 설계와 구현을 모두 맏고 있습니다. 그러다 보니, 처음에는 ALM을 도입하여 SVN을 이용한 형상관리, WAS Configuration Management, Trac을 이용한 이슈 관리와 Wiki를 이용한 문서화를 진행하려고 계획을 했었습니다. 이번달이 아니라 3월경에 SOW(Scope Of Work )작업으로 일주일정도 진행한 적이 있었는데, 그때는 코딩할당량이 없어서 그나마 프로젝트 관리를 할 수 있었습니다만, 지금은 구현에 치여서 ALM적용을 하지 못하고 있습니다...

ALM 2009.05.14

Windows XP에 Tuxedo 컴파일 환경 설정하기.

1. 턱시도를 oracle 사이트에서 다운 받는다. 2. 턱시도 라이센스를 다운 받는다. http://licensecodes.oracle.com/bea.html 3. 턱시도를 설치한다. 4. MS 사이트에서 Visual Studio 9.0 Express 버전을 다운 받는다. 5. c:\Program files\Microsoft Visual Studio 9\VC\vcvarsall.cmd 를 실행한다. (CL 컴파일러용 환경 변수 설정) 6. 턱시도 환경 변수를 설정한다. 예) SET APPDIR=d:\tux\lab4 SET TUXDIR=d:\dev\bea\tux10 SET PATH=%TUXDIR%\bin;%PATH% SET TUXCONFIG=%APPDIR%\tuxconfig SET BDMCONFIG=%AP..

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