블로그 이미지
윤영식
Full Stacker, Application Architecter, KnowHow Dispenser and Bike Rider

Publication

Category

Recent Post

2012. 10. 25. 20:34 Testing, TDD/Test First

1) JUnit을 통하여 단위테스트 하는 방법에 대한 참조 사이트들

  - JUnit 기본 사용하기 : http://blog.daum.net/aqua0405/5558279

  - JUnit 단축키 : alt + shift + x 그런후 t 클린하면 JUnit Test가 진행

  - Spring에서 JUnit :  http://blog.sangpire.pe.kr/125

  - Mock 객체 사용하기 :  http://javacan.tistory.com/148

  - DBUnit 사용하기 :  http://www.java2go.net/blog/tag/Testing


2) JUnit 테스트 순서

  - @Test 안에 계약에 의한  설계에 따른 테스트를 만든다

  - ctrl + 1 로 실제 업무 클래스를 생성하여 로직 실패를 만든다

  - 실패한 코드를 확인후 기능이 돌아가는 코드를 짠다

  - 다시 테스트를 돌려본다

  - 추상화가 필요할 경우 추상클래스를 테스트 코드에 넣고, 하위 클래스의 메소드를 pull up하는 리팩토링을 수행한다

  - 테스트 코드안에서 계약에 의한 설계와 OOP와 Refactoring을 계속 하면서 결과값을 검증한다.

  - 이를 계속 반복한다 


3) JUnit에 대한 개념 잡기 슬라이드 


posted by 윤영식
2012. 10. 25. 17:48 Git, GitHub/GitHub

GitHub의 Wiki는 단순 페이지만을 생성하는데, 일반 위키들 처럼 오른쪽에 목차가(Sidebar) 나오고 하단에는 footer등을 넣고 싶을 경우 다음을 참조하자 



내 프로젝트에서도 한번 써봐야 겠다. 그동안 wiki 페이지 기능이 단순해서 사용하지 않았는데, 확장을 할 수 있게 되어 있었다. 

  • OSS인 골룸(gollum)을 통해서 GitHub의 wiki를 확장할 수 있다
  • Sidebar 넣기 
    • _Sidebar.ext 파일을 만든다. 물론 내용은 wiki 형식을 따르면 된다 : .md파일이 없는 모든 sub directory에 영향을 미친다 (요건 체크해 볼일이다)
    • wiki git을 checkout 한다 (wiki의 Git Access 탭에서 git url을 얻으면 됨)
    • wiki repository를 local로 다 가져온후 _Sidebar.md 파일을 만든다
    • .md 파일안에 markdown syntax로 link를 [[link]] 형식으로 넣는다 
    • _Sidebar.md 파일을 commint한후 origin master에 push 한다 
  • Header 넣기
    • _Header.ext 파일 만든다 (wiki 포멧)
    • _Header.md 파일 만든다 (markdown syntax)
  • Footer 넣기
    • _Footer.ext 파일 만든다 (wiki 포멧)
    • _Footer.md 파일 만든다 (markdown syntax)  


요점만 정리했는데, 실제로 해볼일~~에구구

posted by 윤영식
2012. 10. 25. 16:31 Middleware, Cloud/WAS

하이퍼소닉은 애플리케이션 테스트용으로 사용하는 것으로 실 운영시에는 적은 메모리라도 아끼기 위하여 삭제하는 것이 좋다. 하이퍼소닉은 외부 접근이 안되므로 보안에 대한  설정은 없지만 운영들어 가기전에 삭제한다


  • deploy> 밑에서 ls *ds.xml 검색하면 hsqldb-ds.xml 파일이 나온다 
  • hsqldb-ds.xml 파일을 삭제한다 

하이퍼소닉을 제거한후 oracle을 사용한다면 다음과 같은 서비스에 설정을 변경하여 준다. 

  • deploy 밑에 oracle-ds.xml 파일을 만든다 
  • DefaultDS를 사용하고 있는 ejb2-timer-service.xml의 설정을 oracle로 변경한다
  • JMS를 사용하면 deploy/messaging/hsqldb-persistence-service.xml 파일을 지우고 동일한 oracle-persistence-service.xml 파일을 만든다
  • uuid-key-generator.sar에서 UUID 키 생성을 한다면 META-INF/jboss-service.xml 에서 DefaultDS를 변경한다 
만일 새로운 데이터베이스로 서비스를 전환했다면 

show tables in jbossdb; 로 사용하는 테이블들을 점검 한다 


posted by 윤영식
2012. 10. 25. 16:12 Middleware, Cloud/WAS

Java Messaging Service를 사용하지 않는 다면 다음의 파일 또는 내용을 제거 하여 자원(메모리, CPU) 소모를 예방한다


  • deploy/messaging 디렉토리 삭제
  • deploy/jms-ra.rar 파일 삭제
  • deployers/messaging-definitions-jboss-beans.xml 파일 삭제
  • conf/standardjboss.xml 파일에서 jms 관련 내용 제거 

메시징을 이용한다면 

  • deploy/messaging/destinations-service.xml 안에 <security>를 설정한다
  • conf/login-config.xml 파일에 <application-policy name="JMSRealm"> 이라는 새로운 application 정책을 만든다 
  • 마지막으로 deploy/messaging/messaging-jboss-beans.xml 안에 <bean name="SecurityStore">를 설정한다 


posted by 윤영식
2012. 10. 25. 16:02 Middleware, Cloud/WAS

▶ shutdown이나 twiddle이 JBoss의 내부 마이크로 커널과 통신하려면 JMX invoker를 사용한다.


  • deploy/jmx-invoker-service.xml 구성에서 org.jboss.invocation.Invocation 에 대한 인증 인터셉터를 추가한다
         <operation>
            <description>The detached invoker entry point</description>
            <name>invoke</name>
            <parameter>
               <description>The method invocation context</description>
               <name>invocation</name>
               <type>org.jboss.invocation.Invocation</type>
            </parameter>
            <return-type>java.lang.Object</return-type>
            <descriptors>
               <interceptors>
                  <!-- Interceptor to require authenticated users -->
                  <interceptor code="org.jboss.jmx.connector.invoker.AuthenticationInterceptor"
                     securityDomain="java:/jaas/jmx-console"/>
                  <!-- Interceptor that deals with non-serializable results -->
                  <interceptor code="org.jboss.jmx.connector.invoker.SerializableInterceptor"
                     policyClass="StripModelMBeanInfoPolicy"/>
               </interceptors>
            </descriptors>
         </operation>

해당 조건을 적용하면 단순 shutdown 명령이 내리지 않고 하기와 같이 한다

 bin> shutdown -S -s jnp://<IP> -u admin -p <admin 패스워드>

  • jnp 프로토콜 접속하는 JBoss 설치 IP (옵션)
  • -u 인증 admin 아이디 
  • -p admin 계정의 패스워드 



▶ HTTP Invoker 는 80 포트를 통해서 외부세계에서 JBoss의 JNDI, JMX invocation, EJB invocation등의 원격 접속을 허용한다. 


  • 80 포트는 애플리케이션을 요청하는 포트 이므로 HTTP Invoker는 아예 삭제를 한다
  • deploy/http-invoker.sar라는 단일 서비스를 디렉토리 몽땅 제거하면 서비스가 삭제된다





posted by 윤영식