JCF TEAM BLOG

관리자 글쓰기
블로그 »
블로그 »
Though iBATIS is one of a very popular ORM framework, it has some irritatating problems that every developers have suffered for a long time. Whenever sqlMap file is modified, one should undergo the tedious process of restarting the application so that the modifications actually take effect.
So I made a little extension to Spring framework's SqlMapClientFactory class in order to monitor file modification and re-initialize sqlMapClient accordingly. Basic implementation ideas are :
1. don't change original classes of Spring Framework nor iBATIS library.
2. should run with iBATIS 2.3.0 for jdk 1.4 and iBATIS 2.3.2 or later for jdk 1.5 or higher.
 (with the nice feature of Spring 2.5.5+ SqlMapClientFactoryBean's wildcard matching while preserving compatibility with old libraries.)
3. assuming default singleton scoped beans, SqlMapClientFactoryBean creates new SqlMapClient instance only when Spring initializes the applicationContext. The object (sqlMapclient) injected to other beans cannot be replaced while the application is up. It should be replaced with a proxy. The proxy, sitting in as the product of the factory, deligates all the received messages to the real sqlMapClient object, which can be replaced whenever the mapping files are modified.
4. make list of files to monitor from SqlMapClientFactoryBean's properties and sqlMapConfig files.

Limitations
The list of files to monitor is determined on startup. It doesn't detect added files while running, and emits warning messages for removed files. For example, with a sqlMap file registered to a sqlMapConfig file, it is not monitored but those changes work when refreshed.

Requirements
iBATIS sqlmap 2.3.0, Java 1.4, Spring 2.5+
or
iBATIS sqlmap 2.3.2+, Java 1.5+, Spring 2.5.5+

Installation
1. replace SqlMapClientFactoryBean with newly created RefreshableSqlMapClientFactoryBean in applicationContext configuration file
2. specify modification detection check interval in milliseconds.
3. add backport-util-concurrent-3.1.jar to classpath.

configuration example
<bean id="sqlMapClient" class="jcf.dao.ibatis.sqlmap.RefreshableSqlMapClientFactoryBean"> 
   <property name="configLocation" value="classpath:jcf/dao/ibatis/sqlmap/sqlmap-config.xml" /> 
   <property name="dataSource" ref="dataSource" />
 
   <!-- Java 1.5 or higher and iBATIS 2.3.2 or higher REQUIRED --> 
   <property name="mappingLocations" value="jcf/dao/\*\*\/T\*.xml" /> 
   <!-- <property name="mappingLocations" value="file:///D:/Type.xml" />-->
  <property name="checkInterval" value="1000" /> 
</bean>

크리에이티브 커먼즈 라이센스
Creative Commons License
Writer profile
author image
setq
2009/06/22 18:38 2009/06/22 18:38

(go to top)

블로그 »
atlassian 툴을 사용한 흥미진진한 agile 적용기... 도움될만한 동영상이 여러게 있네요... http://www.atlassian.com/agile
크리에이티브 커먼즈 라이센스
Creative Commons License
Writer profile
author image
(by 고경철)
I`m slow-starter!
2009/06/08 16:00 2009/06/08 16:00

(go to top)

블로그 »
ALM에 대한 소개자료와 문구를 만드는데 어려움을 느끼고 있는데 아래 동영상은 핵심을 잘 집어낸것 같군요..
크리에이티브 커먼즈 라이센스
Creative Commons License
Writer profile
author image
(by 고경철)
I`m slow-starter!
2009/05/28 18:36 2009/05/28 18:36

(go to top)

블로그 »

정말 오래간만의 포스팅입니다. 오랜 동안의 공백기간 이후 이 사이트도 또 잠깐이나마 정상화할 수 있지 않을까 하는 기대를 해보면서 올려봅니다.

오랜 기간 숙원사업(?) 이었던 스프링과 iBATIS sqlMap을 이용해서 애플리케이션 개발/운영할 때 변경사항이 발생할 때마다 서버를 올렸다 내렸다하는 번거로움을 해소하기 위한 방법을 알려드리겠습니다.

일단 JCF 3.5 릴리즈에는 들어갈 것 같고요, 이미 여기저기서 아는 분들은 각자 만들어서 사용하고 계실만한 간단한 방법이긴 합니다만 그래도 정식 배포본에 들어가게 되었으니 언급은 하고 넘어가야겠지요?

- 착안
1. iBATIS 자체를 뜯어고치지는 않는다. 대신 스프링의 SqlMapFactoryBean을 교체 (IoC 컨테이너라 편리)
2. 실행 중 sqlMapClient를 교체하기 - 프록시 처리 및 수행 성능을 고려한 concurrency 처리
3. sqlMap 또는 sqlMapConfig의 xml이 변경되면 자동으로 리로드하도록 파일 감시.
4. Java 1.4, iBATIS 2.3.0, Spring 2.x 조합과 Java 1.5+, iBATIS 2.3.2+, Spring 2.5.5+ 조합간의 차이 처리


나머지는 Javadoc으로 대신합니다. (가만 보니 수동 리로딩에 대한 언급은 빠져있군요.)


 
RefreshableSqlMapClientFactoryBean
iBATIS sqlmap 클라이언트의 sqlMap 및 sqlMapConfig 파일의 변경을 감지, 실시간 적용하는 팩토리 빈.

개요
iBATIS + Spring 개발시 쿼리 매핑 파일이 변경되면 웹애플리케이션 서버를 재기동해야 적용이 됐었다. 이러한 불편을 없애기 위해 매핑 파일 변경을 실시간으로 감시, 적용하는 모듈을 제공한다.
감시 대상 이 모듈은 iBATIS sqlmap 클라이언트의 sqlMap 및 sqlMapConfig 파일의 변경을 감지, 실시간 적용해준다.

제약사항
감시 대상 파일들은 스타트업 당시에 결정된다. 그러므로 추가된 파일들에 대해서는 감지가 되지 않고, 삭제된 파일들에 대해서는 경고 메시지가 나온다. 예를 들어, sqlMapConfig에 sqlMap 파일이 추가되거나 하면 해당 맵이 적용되기는 하지만, 실시간 변경 감지 대상으로 추가되지는 않는다.

요구사항
iBATIS sqlmap 2.3.0, Java 1.4, Spring 2.5 이상 또는 iBATIS sqlmap 2.3.2 이상,
Java 1.5 이상, Spring 2.5.5 이상

적용 순서
1. Spring의 applicationContext 설정 파일 중 sqlMapClient를 얻기 위한 SqlMapClientFactory 빈을 신규 클래스로 교체한다.
2. 변경 감지 시간 간격 (1000분의 1초 단위)를 지정한다.

 <bean id="sqlMapClient" class="jcf.dao.ibatis.sqlmap.RefreshableSqlMapClientFactoryBean">
     <!-- <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">-->
     <property name="configLocation" value="classpath:jcf/dao/ibatis/sqlmap/sqlmap-config.xml" />
     <property name="dataSource" ref="dataSource" />
 
     <!-- Java 1.5 or higher and iBATIS 2.3.2 or higher REQUIRED -->
     <property name="mappingLocations" value="jcf/dao/\*\*\/T\*.xml" />
     <!-- <property name="mappingLocations" value="file:///D:/Type.xml" />-->
 
     <property name="checkInterval" value="1000" />
 </bean>
 
3. 라이브러리 추가
backport-util-concurrent-3.1.jar
테스트 기존의 applicationContext에 등록되어 있던 sqlMapClient에 해당하는 mappingFile들을 편집하거나, sqlMapConfig 파일 또는 그 파일에 등록된 mappingFile(sqlMap 파일)들을 편집하면 주어진 변경감지 시간 후 변경사항이 적용된다.


Author:
setq

크리에이티브 커먼즈 라이센스
Creative Commons License
Writer profile
author image
setq
2009/04/23 15:37 2009/04/23 15:37

(go to top)

블로그 »
JCF 3.5 릴리즈 관련해서 마인드맵을 작성해 보았습니다.
http://www.mindmeister.com/12023657
크리에이티브 커먼즈 라이센스
Creative Commons License
Writer profile
그래도 꿈이 있어서 행복하다^^
2008/11/12 15:35 2008/11/12 15:35

(go to top)

블로그 »
참조: Prototyping with XHTML

XHTML을 이용한 UI 프로토타입핑 기법을 소개한 글입니다.
Drupal은 이 기법을 이용하여 UI 프로토타입핑을 한다고 하네요.
UI 프로토타입핑을 위한 협업도구인 Protonotes도 참조해 보시면 재미있을 것 같습니다.
 

크리에이티브 커먼즈 라이센스
Creative Commons License
Writer profile
그래도 꿈이 있어서 행복하다^^
2008/11/12 09:55 2008/11/12 09:55

(go to top)

블로그 »
*참조 : http://ajaxian.com/archives/ext-js-30-r ··· per-tool

Ext JS 3.0이 내년 1분기에 릴리즈 될 예정이라고 합니다.
특히 Ext JS Designer도 함께 출시된다고 하니 기대가 됩니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
Writer profile
그래도 꿈이 있어서 행복하다^^
2008/11/12 09:44 2008/11/12 09:44

(go to top)

블로그 »

jsp파일에서 한글 데이터가  깨져서 이리저리  charset도  계속 확인해보고 했는데 원인은 form에 있었음.

<s:form  enctype="multipart/form-data" action="saveBBS" method="post"
 theme="simple" onsubmit="formCheck();" >

위에서 enctype부분이 꼭 들어가야함. 안그럼 한글이 깨져서 들어감,.

크리에이티브 커먼즈 라이센스
Creative Commons License
Writer profile
by 김민아
2008/09/24 14:39 2008/09/24 14:39

(go to top)

블로그 »
오라클 10g(?)부터 flash back 이라는 재미있는 기능을 제공합니다.
이 기능을 이용하면 이미 업데이트된 데이타를 쉽게 복구할 수 있습니다.

만약 USER_ROLE 테이블에 데이타를 잘못 업데이트하여 데이타를 복구하려고 할 경우에
아래와 같이 퀴리를 실행하여 undo_sql 을 조회한 다음,
undo_sql 을 이용하여 데이타를 복구하면 됩니다.

SELECT undo_sql from flashback_transaction_query
 WHERE commit_timestamp >= TO_TIMESTAMP('2008-08-01 11:30:00', 'YYYY-MM-DD HH24:MI:SS')
  and table_name = 'USER_ROLE';

 
자세한 내용은 아래 링크를 참조하세요.
http://www.oracle.com/technology/deploy ··· view.htm
http://dbataj.blogspot.com/2008/05/orac ··· ery.html
크리에이티브 커먼즈 라이센스
Creative Commons License
Writer profile
그래도 꿈이 있어서 행복하다^^
2008/08/01 11:46 2008/08/01 11:46

(go to top)

블로그 »

General Features

Feature

Axis 1.x

Axis2

CXF

Glue

JBossWS

XFire (1.2)

[WWW] Metro@GlassFish

OracleAS 10g

Basic Profile 1.1 Compliant

X

X

X

X

X

X

X

X

Easily Create Services from POJOs

X

X

X

X

X

X

X

X

Open Source

X

X

X


X

X

X


RPC-Encoding

X



X

X


X [6]

X

Spring Support

X

X

X



X

X


REST Support


X

X




X

X

IDEA Plugins


X



X

X

X

Ant

Eclipse Plugins


X

(STP)


X

X

X

Ant

NetBeans Plugins







X

Ant

JDeveloper








X

Hot Deployment


X

X


X

?

X

X

Soap 1.1

X

X

X

X

X

X

X

X

Soap 1.2

X

X

X

X

X

X

X

X

Streaming XML (StAX based)


X

X



X

X


WSDL 1.1 ->Code (Client)

X

X

X

X

X

X

X

X

WSDL 1.1 ->Code (Server)

X

X

X

X

X

X

X

X

WSDL 2.0 ->Code (Client)


X


?

?

?


?

WSDL2.0 ->Code (Server)


X


?

?

?


?

Client-side Asynchrony

X

X

X




X

With BPEL

Server-side Asynchrony

X

X

X




X

With BPEL

Policy-driven code generation


X

X






Web Services related JSR standards

Feature

Axis 1.x

Axis2

CXF

Glue

JBossWS

XFire (1.2)

Metro@GlassFish

OracleAS 10g

JAX-RPC

X



X?

X


X

X

JAX-WS


[Early Access/Nightly]

X



[Early Access]

X [5]


JSR 181

X

[Early Access/Nightly]

X


X

X

X

X

JSR 181 on Java 1.4





X

X



SAAJ (1.2/1.3)

X

X

X

X

X

X

X

X

JSR 109







X

X

JBI



X




X


Data Bindings

Feature

Axis 1.x

Axis2

CXF

Glue

JBossWS

XFire

Metro@GlassFish

OracleAS 10g

XMLBeans Support

X

X

X



X



Castor Support

X

X [9]




X



JiBX


X




X



JAXB

X

X

X


X

X

X [5]

JAX-RPC

WS-*

Feature

Axis 1.x

Axis2

CXF

Glue

JBossWS

XFire

Metro@GlassFish

OracleAS 10g

WS-Addressing

X

X

X

X

X

X

X

with BPEL

WS-Atomic Transaction

X

X





X


WS-Business Activity


X







WS-Coordination

X

X





X


WS-Eventing


X



X




WS-Metadata Exchange


X [10]





X


WS-Notification

X

X [12]


?


?



WS-ReliableMessaging

X

X

X




X


WS-Policy


X

X




X

X

WS-Secure Conversation


X





X


WS-Security Policy


X





X


WS-Security

X

X

X

X

X

X

X

X

WS-Trust


X





X


WS-Transfer


X







WSDL 1.1 Support

X

X

X

X

X

X

X

X

WSDL 2.0 Support


X







Transports

Feature

Axis 1.x

Axis2

CXF

Glue

JBossWS

XFire

Metro@GlassFish

OracleAS 10g

HTTP

X

X

X

X

X

X

X

X

JMS

X

X

X

X

X

X

X

X

Jabber

Experimental

Experimental




X



SMTP/POP3

X

X





X


TCP

X

X





X


In-VM

?

X

X

?

?

?

X

?

Attachments

Feature

Axis 1.x

Axis2

CXF

Glue

JBossWS

XFire

Metro@GlassFish

OracleAS 10g

Soap w/ Attachments

X

X

X

X

X


X

X

DIME

X



X




X

MTOM


X

X


X

X

X

X

Encoding Table

Feature

Axis 1.x

Axis2

CXF

Glue

JBossWS

XFire

Metro@GlassFish

OracleAS

XML Textual

X

X

X

X

X

X

X

X

MTOM


X

X


X

X

X

X

FastInfoset


X

X




X


JSON


X

X




X


WS-Addressing Versions

This section is incomplete. If a stack has no WS-A support listed next to it, it probably means that this section has not been filled in for it.

Feature

Axis 1.x

Axis2

CXF

Glue

JBossWS

XFire

Metro@GlassFish

OracleAS 10g

2003-03



?






2004-04



?






2004-08

X

X

?



X

X

X

2005-08

X

X

X



X

X

X

2006-05 [8]

X

X

X




X


위의 내용은 다양한 웹서비스 엔진의 스팩을 비교한 것이다. 이러한 특성은 구현하고자 하는 웹서비스의 특성에 따라 선택된 스팩을 가장 잘 지원하는 웹서비스 엔진을 선택하기 위한 기준이다. 웹서비스에 있어서는 이러한 스팩적 특성뿐만 아니라 성능과 같은 비기능적 요구사항을 만족해야 한다. 따라서 적절한 웹서비스 엔진을 선택하기 위해서는 충분한 테스트와 도입과정이 필요하다.


===== Notes =====
#1 Bootstrapped this page from [WWW] XFire Stack Comparion page on Oct 9, 2006.
#2 Removed forward looking statements like "Coming in ..."
#3 Removed JBI JSR as none of the soap stacks here are packaged out of the box with a JBI container.
#4 Replaced "Via..." with "?"
#5 JAX-RPC 1.1, JAX-WS 2.0 and JAX-WS 2.1 RI are combined together in Metro. Similarly JAXB 2.0 and JAXB 2.1 are combined together in Metro. JAX-WS 2.0 and JAXB 2.0 functionality is available in Java SE 6 as well.
#6 Only available through the JAX-RPC 1.1 APIs.
#7 Derived from [WWW] ws Addressing review
#8 WSA 1.0 final: shares the same xmlns as the 2005-08 release.
#9 samples\databinding illustrates how to use castor with "wsdl2java -d none" generated code.
#10 Mex Module for Axis2 is available [WWW] here
#11 Transfer Module for Axis2 is available [WWW] here
#12 Apache Muse project has support for WS-Notifications

원문보기
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/07/28 17:50 2008/07/28 17:50

(go to top)