본문 바로가기

넥스트리소프트

프로젝트 추정과 계획의 실패는 누구의 몫인가? 최근 프로젝트(SI, 연구성과제, 회사내부 등)의 대부분을 애자일 방법(스크럼)으로 진행해 왔다. 요구사항에 해당하는 제품백로그를 수집하고 스프린트백로그를 도출하여 스프린트를 계획하고 일일회의와 스프린트 종료회고 등을 통해 좀더 나은 방향으로 프로젝트를 이끌고자 했다. 언젠가 강의 중에 수강생이 이런 질문을 했다. "애자일을 기간과 비용, 개발범위가 정해져 있는 SI 프로젝트에도 적용할 수 있나요?" 나의 대답은 당당하게 "네! 부분적으로 고객의 이해를 전제하지 않더라도 적용이 가능합니다." 라고 대답을 했다. 그런데 지금은... 지금 진행하고 있는 프로젝트는 "시장적시성(Time to Market)"이 가장 중요하였으며, 그렇기 때문에 구현하고자 하는 기능의 정의와 더불어 추정과 계획이 정말 중요했다... 더보기
Spring + JPA + Hibernate + Multiple DataSource 설정 개발환경: - Spring 3.0.5.RELEASE - JPA 2.0 - Hibernate 3.6.2.Final - DBMS: MSSQL 2008 R2(10.50.1600.1) JPA환경에서 두개이상의 DataSource를 사용하기 위해서 EntityManagerFactory를 두개이상 생성하려고 하면 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [javax.persistence.EntityManagerFactory] is defined: expected single bean but found 2 ... 와 같은 에러가 발생한다. 구글링을 해보면 이 문제에 대한 문의와 토론.. 더보기
Eclipse + GAE class hot deploy 개발환경: JDK1.6.0_24 + Eclipse Helios SR2 + appengine-java-sdk-1.5.0 + Googel App Engine for Eclipe 서블릿 클래스를 아무리 변경해도 반영이 안되고 서버를 재시작해야 반영이 되었다. 분명 클래스의 변경은 서버 재시작과 상관이 없다고 했거늘.... 그런데 서버를 시작하는 방법이 이상했다. 많은 곳에서 서버를 시작할 때 [Debug As]로 실행하는 것이 아닌가? 나는 Debug는 안할 거니 [Run As]로 실행했다. 이런! 바로 이 차이가 서블릿 클래스의 변화를 감지하지 못하는 원인이 었다. 즉, Debug As로 서버를 시작해야 서블릿 클래스 등 클래스의 변화를 감지하여 서버 재시작과 무관하게 되는 것이 었다. 결론: GAE는 De.. 더보기
어느날 잘보이던 로그가 안보일때... 정말 황당한 현상이 발생했다. 바로 직전까지 잘 보이던 로그(commons-logging-1.1.1, log4j-1.2.16)가 갑자기 안보인다. 그래서 구글링도 해보고 Apache Commons Logging(JCL), Log4j 의 문서도 찾아 봤지만 내가 설정한 것과 별반 다를것이 없었다. 무려 2시간을 이것 저것 해보다가 아래와 같은 글을 볼 수 있었다. WebSphere v7.0 에서 commons logging 이용 log4j 사용하기 commons logging을 통하여 log4j를 사용할때 클래스 로더 순서(모드)를 Parent Last로 놓아야 한다. 클래스 로더 순서에 대한 내용은 http://cafe.naver.com/devmaster/279 를 참고하세요. Parent Last로 놓.. 더보기
Eclipse Helios WTP + Maven2 Dependencies 웹 애플리케이션(war) 개발 개발환경: - Windows 7 + jdk1.6.0_24(32bit) + Tomcat 7.0.11 - Eclipse Helios SR2 WTP 3.0 + maven-3.0.3 WTP로 Dynamic Web Project를 생성하고 Maven2로 빌드 체계를 만든 목적은 변경한 내용을 즉시 확인하기 위함일 것이다. Eclipse 3.2 부터 maven 및 WTP를 통합해왔던 터라 이 기능을 활용한 개발 생산성은 아주 높았다. 그런데 Eclipse 3.6 helios 부터 이 기능에 버그가 있는 듯 하다. WTP는 워크스페이스내에 열려있는 프로젝트를 웹 애플리케이션(war)의 WEB-INF/lib 에 배포하기 위해 Deployment Assembly 라는 기능을 추가했다. 그런데 이 기능이 maven과 통합.. 더보기
SQL Server Identity Column 초기화 하기 1. DBCC CHECKIDENT 가장 쉬운방법. 하지만 테이블내에 있는 값들보다 작은 값을 설정하지 않도록 주의한다. 만약 작은 값이 설정되면 primary key violation(주키 위반)이 발생하기 때문이다. 구문: DBCC CHECKIDENT (,RESEED,) 예) DBCC CHECKIDENT ('TB_MB_MEMBER',RESEED,0) Tip. 만약 DB 소유자가 아니고 권한만 있는 경우 USE GO 명령을 사용하여 해당 DB Context로 이동한다. 2. Drop and Add the column 이 방법은 첫번째보다 조금 더 안정적인데 이유는 새로운 시드(seed)값을 자동으로 할당해 주기 때문이다. 그러나 많은 작업을 해야하고 컬럼의 순서가 변경된다. 당연한 얘기이겠지만 만약 코드.. 더보기
Artifactory 2.2.1 "Allow Anonymous Access"에 대한 고찰 메이븐을 이용하면서 레파지토리로 Nexus나 Artifactory를 이용할 수 있다. 필자의 경우 최근엔 Nexus를 이용하고 있지만 아직도 Artifactory를 사용하는 프로젝트가 많이 있어서 종종 사용하게 된다. 오늘은 다음과 같은 목적으로 Artifactory의 설정을 바꿔보았다. 1. 새로운 레파지토리가 필요하여 아이디를 지정하고 생성함. 2. 보안을 위해서 기존 사용자는 모든 레파지토리를 이용할 수 있지만 신규 사용자는 새로 만들어진 레파지토리만 이용하게하려고 함. 3. 사용자와 그룹 및 퍼미션을 생성하고 관계를 설정. 4. 생성된 레파지토리에 퍼미션을 할당함. 5. Admin -> Security -> General 메뉴에서 "Allow Anonymous Access"를 Unchecked 함.. 더보기
Adding multiple last resources is disallowed. 환경: JDK1.6.0_21 + JBoss EAP 4.3.2 + Spring 2.5.6 + iBatis 2.3.4 위의 환경에서 2개이상의 DataSource를 설정하고 JTA 트랜잭션을 설정했을 때 아래와 같은 에러가 발생했다. [com.arjuna.ats.internal.jta.transaction.arjunacore.lastResource.disallow] Adding multiple last resources is disallowed. Current resource is org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@473fc2 09:29:19,759[ERROR] (JakartaCommonsLoggingImpl.j.. 더보기
Closing a statement you left open, please do your own housekeeping 환경: JDK1.6.0_21 + JBoss EAP 4.3.2 + Spring 2.5.6 + iBATIS 2.3.4 19:50:53,405 WARN [WrappedConnection] Closing a statement you left open, please do your own housekeeping java.lang.Throwable: STACKTRACE at org.jboss.resource.adapter.jdbc.WrappedConnection.registerStatement(WrappedConnection.java:872) at org.jboss.resource.adapter.jdbc.WrappedStatement.(WrappedStatement.java:62) at org.jboss.resour.. 더보기
No JTA TransactionManager found at fallback JNDI location Jetty 6.1.11 + Spring 2.5.6에서 트랜잭션관리자를 와 같이 선언하고 로그레벨을 DEBUG 모드로 실행하면 다음과 같은 에러들을 볼 수 있다. [DEBUG] (JtaTransactionManager.java:717) - No JTA TransactionManager found at fallback JNDI location [java:comp/TransactionManager] javax.naming.NameNotFoundException; remaining name 'TransactionManager' ... [DEBUG] (JtaTransactionManager.java:717) - No JTA TransactionManager found at fallback JNDI location.. 더보기