노무현 대통령 배너

'Development/기술'에 해당되는 글 26건

  1. 2009/01/20 자바 바이트코드 활용하기 - 바이트코드 조회
  2. 2009/01/07 자바 바이트코드 이야기 - 디컴파일
  3. 2008/12/29 Apache Commons CLI로 명령줄 인터페이스 구현하기 (2)
  4. 2008/12/25 Apache Commons Configuration을 이용해 설정정보 저장하기 (2)
  5. 2008/06/16 정책 주입 응용 프로그램 블록을 WCF 서비스와 통합
  6. 2008/05/23 WCF를 이용한 HTTP 프로그래밍
  7. 2008/04/30 WCF 라우터 만들기
  8. 2008/03/23 Java Coding Convention
  9. 2008/01/17 Windows Vista에서 WCF 개발하기 6 - WCF Client (2)
  10. 2008/01/16 한 솔루션에서 여러 프로젝트 실행하기
  11. 2008/01/14 Windows Vista에서 WCF 개발하기 5 - WCF HTTP Activation
  12. 2008/01/13 svcutil을 이용하여 WCF 서비스 프록시 클래스 생성하기
  13. 2008/01/11 Windows Vista에서 WCF 개발하기 4 - IIS7 호스팅
  14. 2008/01/10 Windows Vista에서 WCF 개발하기 3 - Enterprise Library
  15. 2008/01/09 Windows Vista에서 WCF 개발하기 2 - Adventure Works DB Setup (2)
  16. 2008/01/07 Windows Vista에서 WCF 개발하기 - Vista와 WCF
  17. 2007/05/22 Spring Framework - SubProjects
  18. 2007/05/22 Spring Framework - Modules
  19. 2007/05/16 Spring Framework - Samples
  20. 2007/05/08 Spring Framework - Installation
  21. 2007/05/08 Spring Framework - Reference
  22. 2007/05/07 Spring Framework - Pilot
  23. 2007/05/06 Spring Framework - Session 0
  24. 2007/02/08 .NET Framework 3.0 개발환경 구성하기
  25. 2007/02/07 자바 스크립트로 자바객체를 실행한다. - DWR
바이트코드가 어떻게 이루어졌는지 직접 확인하고 싶다면 바이트 코드 뷰어를 사용해야 합니다. 일반 텍스트 에디터로 보기에는 아무래도 어렵습니다. 바이트코드 뷰어로 유명한게 jClassLib 입니다.
이름이 Lib로 끝나서 UI가 없는줄 알았는데 그건 아니더군요. ^^

간단하게 사용해 보도록 하겠습니다. 먼저 테스트를 위해 간단한 자바 코드 샘플을 만들었습니다.

jClassLib를 다운받아서 압축을 해제하면 jclasslib_home/bin/jclasslib.exe 파일을찾을 수 있습니다. 실행하면 GUI 인터페이스가 나타납니다. HelloJava.class를 선택합니다.

왼쪽의 트리에서 Methods 노드를 확장해 보면 두개 메소드가 나타납니다. <init>는 생성자를 나타내며 main 메소드가 있음을 바이트코드에서도 확인할 수 있습니다.





크리에이티브 커먼즈 라이선스
Creative Commons License
자바 소스를 컴파일하면 바이트 코드로 쓰여진 클래스파일이 만들어집니다. 이 클래스파일에는 유용한 정보가 많이 담겨 있기 때문에 이를 잘 활용하게 되면 소스코드로 불가능한 것도 가능합니다.

그 첫번째로 디컴파일(Decompile)입니다. 디컴파일은 클래스파일로 소스파일을 만드는 과정을 말하는것으로 가장 널리 사용되는 디컴파일러에는 JAD가 있습니다.
자바는 플랫폼 독립성을 위해 C/C++와 같이 바이너리 컴파일을 하는게 아니라 중간 바이트코드로(Intermediate Byte Code)로 컴파일 되기 때문에 이렇게 디컴파일이 가능한 것 입니다.

하지만 디컴파일된 코드를 다시 컴파일 하는것은 문제가 발생할 수 있습니다. 왜냐면 디컴파일 과정에 정적변수와 같은 것들이 실제값으로 치환되면서 발생하는 모호성(Obfuscation) 때문입니다. 이 모호성을 잘 이용하게 되면 자바 디컴파일을 막는 효과도 가져올 수 있습니다. Reflection이나 Serialization 과 같은 기술을 적절히 활용하는것이 좋으며 이를 위한 툴로는 Zelix KlassMaster가 널리 사용됩니다.



반면에 장점도 있습니다.
  • 코멘트가 없는 소스를 얻을 수 있기 때문에 정확한 LOC를 얻을 수 있습니다.
  • 바이트코드로 바뀌는 중에 최적화가 이루어져서 메소드에 대한 정리가 가능합니다. 예를 들어 단 한번만 호출되는 메소드인 경우에는 호출하는 코드에 포함되어져 버립니다.
  • JVM의 스펙이 요구하는 형태로 정형화 되기때문에 호출관계에 대한 분석이 용이합니다.


크리에이티브 커먼즈 라이선스
Creative Commons License
윈도우를 쓰다보니 명령줄은 잘 안쓰지만 시스템을 연동할때는 명령줄 인터페이스가 필요할때가 많습니다. Ant와 같은 명령줄 인터페이스를 쉽게 만들 수 있게 해주는 오픈소스가 Commons CLI 입니다.

Commons CLI를 이용해서 명령줄 인터페이스를 만드는 과정은 명령줄 옵션 정의, 옵션 값 파싱, 옵션에 따르는 처리를 정의하는것으로 이루어 집니다.

1.명령줄 옵션 정의
Options options = new Options();
options.addOption("t", false, "display current time");
options.addOption("d", true, "get directory");

Options 객체는 Option 객체를 갖으며 각 Option 객체는 옵션 플래그, 옵션이 값을 가지는지 여부를 나타내는 boolean 값, 옵션에 대한 설명으로 만들어 집니다.

위에서 정의한 옵션은 명령줄에서 --t  --d C:\download 와 같이 줄 수가 있습니다.

2.옵션값 파싱
CommandLineParser parser = new PosixParser();
CommandLine cmd = parser.parse( options, args);

옵션값을 String[]인 args로 받았다면 CommandLineParser를 이용해서 옵션값을 파싱하는게 가능합니다. 파싱 결과는 CommandLine 객체로 구해집니다.

3.옵션에 대한 처리
            if(cmd.hasOption("d")) {
                System.out.println("d option value: "+cmd.getOptionValue("d"));
            }

옵션이 주어졋는지 여부는 CommandLine 객체의 hasOption() 메소드로 알 수 있습니다. 옵션이 주어진 경우에는 getOptionValue로 실제 값을 구할 수 있습니다.

이 외에도 옵션에 대한 도움말도 처리해야 하는데 HelpFormatter를 이용하면 간단히 깔끔하게 도움말을 출력할 수 있습니다.
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp( "sampleCLI", options );

위 처리에 대한 결과는 다음과 같습니다.
usage: sampleCLI
 -cd,--directory <arg>   get current directory
 -d <arg>                get directory
 -p <package>            get package
 -t                      display current time






크리에이티브 커먼즈 라이선스
Creative Commons License
애플리케이션을 개발하다 보면 설정정보를 저장해야 하는 경우가 꼭 있습니다. 이런 경우 정보가 간단하면 *.properties 파일을 주로 사용하지만 복잡하다면 .xml 파일을 써야 하죠.
이런때 쓰면 딱 좋은 오픈소스가 아파치 프로젝트의 Commons Configuration 입니다.

Conmmons Configuration이 지원하는 파일 포맷이 다양하기 때문에 상황에 맞춰 사용가능하며 동시에 같이 사용하는것도 가능합니다.
  • Properties files
  • XML documents
  • Windows INI files
  • Property list files (plist)
  • JNDI
  • JDBC Datasource
  • System properties
  • Applet parameters
  • Servlet parameters
그럼 *.properties 파일을 이용해서 설정정보를 읽어들이고 저장할때 간단히 사용할 수 있는 유틸 클래스 ConfigUtil을 한번 만들어 보겠습니다.

1.ConfigUtil 클래스
싱글턴으로 만들어야 사용하기 편하니 static 변수 instance를 선언하고 Configuration 프레임웍에서 properties파일을 나타내는 PropertiesConfiguration 변수를 선언합니다.

    private static ConfigUtil instance = new ConfigUtil();
    private static PropertiesConfiguration propertyConfig;

파일을 읽어들이는 load 메소드를 정의합니다.

    public void load(String fileName)
            throws ConfigurationException {
        propertyConfig = null;
        propertyConfig = new PropertiesConfiguration();
        propertyConfig.load(new File(fileName));
    }

특정 키를 주고 키에 해당하는 값를 읽어들이는 getProperty 메소드를 정의합니다.

    public String getProperty(String key) {
        String value = propertyConfig.getProperty(key) == null ? ""
                : propertyConfig.getProperty(key).toString();
        return value;
    }

특정 키에 해당하는 값을 변경하기 위한 setProperty 메소드를 정의합니다.

    public void setProperty(String key, Object value) {
        propertyConfig.setProperty(key, value);
    }

프로퍼티 파일을 다시 저장할 save 메소드를 정의합니다.

    public void save(String fileName) throws ConfigurationException {
        propertyConfig.save(new File(fileName));
    }

2.ConfigKey 인터페이스
이번에는 프로퍼티의 키들을 저장해놓고 상수로 사용하기 위한 인터페이스 ConfigKey를 정의합니다.

public interface ConfigKey {
    String KEY1 = "key1";
    String KEY2 = "key2";

}

3.ConfigUtil 테스트
이제 테스트를 할 때가 되었습니다. ConfigUtilSample 클래스를 만들어서 간단히 테스트 해 보겠습니다.

    public static void main(String[] args) throws Exception{
        String fileName = "sample.properties";
        // #1
        ConfigUtil.getInstance().load(fileName);
       
        System.out.println("Key1 Value=" +  
                                ConfigUtil.getInstance().getProperty(ConfigKey.KEY1));

        System.out.println("Key2 Value=" + ConfigUtil.getInstance().getProperty(ConfigKey.KEY2));
       
        ConfigUtil.getInstance().setProperty(ConfigKey.KEY1, "zzz");
        System.out.println("Key1 Value=" + ConfigUtil.getInstance().getProperty(ConfigKey.KEY1));
        ConfigUtil.getInstance().save(fileName);
       
        // #2
        ConfigUtil.getInstance().load("sample2.properties");
        System.out.println("Key1 Value=" + ConfigUtil.getInstance().getProperty(ConfigKey.KEY1));
    }

sample.properties파일과 sample2.properties 파일의 내용은 다음과 같습니다.
sample.properties
key1 = aaa
key2 = bbb

sample2.properties
key1 = ccc
key2 = ddd

위 샘플의 실행결과를 먼저 보면 다음과 같습니다.
Key1 Value=aaa
Key2 Value=bbb
Key1 Value=zzz
Key1 Value=ccc
간단히 설명을 해보겠습니다. 먼저 sample.properties파일을 읽어들이고 나서 Key1, Key2에 해당하는 값을 읽어 들여서 출력합니다. 그리고 Key1에 해당하는 값을 변경하고 이를 저장합니다.
(폴더를 새로고침하면 파일이 실제로 변경되었음을 확인할 수 있습니다.)

두번째로 sample2.properties 파일을 읽어들이고 다시 Key1에 맞는 값을 읽어 들입니다. properties 파일이 다르기 때문에 값이 다름을 확인할 수 있습니다.

properties 파일에 대한 처리는 간단하지만 꼭 필요한 기능입니다. 위 프레임워크를 이용하게 되면 아래처럼 프로퍼티에 주석을 단다거나 변수를 사용하는것도 간단하게 구현할 수 있습니다.
# properties can reference other properties

base.prop = /base

first.prop = ${base.prop}/first


크리에이티브 커먼즈 라이선스
Creative Commons License
오랜만에 닷넷 관련한 기사하나 올립니다.

정책 주입 응용 프로그램 블록을 WCF 서비스와 통합

크리에이티브 커먼즈 라이선스
Creative Commons License

WCF를 이용한 HTTP 프로그래밍

Development/기술 2008/05/23 08:34 posted by k16wire
MSDN에 WCF와 .NET Framework 3.5를 이용한 HTTP 프로그래밍에 대한 기사가 올라왔습니다. RSS와 ATOM으로 Feeding 하는 부분이 재미있어 보이네요.
WCF와 .NET Framework 3.5를 사용한 HTTP 프로그래밍


크리에이티브 커먼즈 라이선스
Creative Commons License

WCF 라우터 만들기

Development/기술 2008/04/30 09:46 posted by k16wire
MSDN에 "WCF 라우터 만들기"라는 기사가 올라왔네요. 읽어보심 참고가 되실듯합니다.
WCF 라우터 만들기


크리에이티브 커먼즈 라이선스
Creative Commons License
TAG WCF

Java Coding Convention

Development/기술 2008/03/23 03:16 posted by k16wire
개발할때 코딩 컨벤션 참 중요합니다. 그런데 너무 많으면 오히려 개발자들이 잘 안봐서 문제가 됩니다.
일반적인 자바 코딩 컨벤션은 SUN의 컨벤션입니다.
Code Conventions for the Java Programming Language
하지만 양이 좀 많죠. 한 페이지로 정리한 컨벤션도 있더군요.
Java Coding Conventions on One Page
사용자 삽입 이미지






크리에이티브 커먼즈 라이선스
Creative Commons License
이번에는 IIS7에 호스팅된 WCF 서비스를 사용하는 클라이언트에 대해 이야기 해 보려고 합니다. WCF 서비스를 사용하는 클라이언트는 콘솔, WPF, 웹 페이지등 다양한 기술이 사용 가능합니다.

여기서는 콘솔로 만들어진 예제를 살펴 보겠습니다. 먼저 Visual Studio 2008에서 새로운 프로젝트를 생성합니다.
사용자 삽입 이미지

클라이언트 프로젝트를 만들고 처음 해야 하는 작업은 사용할 서비스 참조를 추가하는 것 입니다. 서비스 참조를 추가하게 되면 서비스를 사용하는데 필요한 프록시 클래스가 자동으로 생깁니다.
사용자 삽입 이미지

클라이언트를 구현해서 실행하면 다음처럼 콘솔창이 나타나고 [Enter]를 누르면 서비스에 접속해서 데이터를 읽어와 콘솔창에 보여줍니다.
사용자 삽입 이미지

간단하게 나마 WCF 서비스를 만들어서 IIS7에 호스팅 하고 윈도우 콘솔로 클라이언트를 만들어서 서비스를 호출하는 걸 테스트해 봤습니다. 자세한 코드 설명같을걸 생략했는데 별도로 정리를 할 생각입니다.

SOA에 대한 말은 많이 나오는데 SOA 시스템 구축에 대한 실체를 보기가 어렵습니다. 전체적으로 WCF 서비스 개발이라는게 뭔지 감을 잡을수 있음 좋겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
알고나면 별거 아닌데 모르면 시간을 낭비하는 것들이 있습니다.
서비스 클라이언트를 테스트 하려면 서비스와 클라이언트를 동시에 실행해야 테스트가 가능합니다. Visual Studio에서 여러 프로젝트를 동시에 실행하는 설정은 솔루션 속성에 있습니다.
사용자 삽입 이미지
오랜만에 Visual Studio를 썼더니 별걸 다 까먹네요. ^^

크리에이티브 커먼즈 라이선스
Creative Commons License
지난번에 성공적으로 배포해서 브라우저를 이용해 서비스를 테스트 해봤습니다. 에러가 났죠. 에러가 발생한 이유는 권한 때문입니다. IIS7이 사용하는 계정의 사용자가 실제로 애플리케이션이 있는 위치에 접근이 안되기 때문에 에러가 발생했습니다.
이를 해결하기 위해서 IIS7이 사용하는 IIS_IUSRS 사용자를 해당 애플리케이션이 있는 위치에 대한 공유설정에 추가해 줍니다.
사용자 삽입 이미지

다시 한번 브라우저로 테스트 해 보시기 바랍니다. 또 에러가 날겁니다. 하지만 이번에는 이전과 다른 에러입니다. 이 에러가 발생하는 이유는 바로 처리기 맵핑에 있습니다. 저희가 배포한  확장자가 .svc인 WCF서비스를 처리할 수 있는 기능이 IIS에 맵핑되어 있지 않습니다.

그럼 적당한 맵핑기를 설치해 보겠습니다.  다시 프로그램 제거 또는 변경 > Windows 기능 사용/사용 안함으로 가서 Microsoft .NET Framework 3.0의 WCF HTTP Activation이 설치되어 있는지 확인해 보시기 바랍니다.
사용자 삽입 이미지

위 기능이 설치가 되면 IIS의 처리기 매핑기에서 아래처럼 .svc에 대한 처리기가 연결되어 있는것을 확인할 수가 있습니다.
사용자 삽입 이미지

이제 모든 준비가 끝난것 같습니다. 다시 브라우저를 이용해서 테스트해 보겠습니다. 이전에 배포한 ProductsService를 구현한 ProductsServiceImpl 서비스에 대한 정보가 나타납니다.
사용자 삽입 이미지

IIS에 서비스를 호스팅 했으니 이제는 클라이언트를 구현해서 서비스를 테스트해봐야 겠네요. :-)

크리에이티브 커먼즈 라이선스
Creative Commons License
TAG IIS7, WCF
.NET Framework 3.0 WCF에서 서비스의 프록시 클래스를 만드는데 사용하는 유틸리에 svcutil.exe 가 있습니다. 이 유틸리티를 처음 실행하면 다음과 같은 에러가 발생합니다.
svcutil ProductsService.dll
사용자 삽입 이미지
그래서 구글링으로 찾아보니 다음과 같은 처리를 해줘야 하더군요.
  • 명령어 창을 연다.
  • C:\Program Files\Microsoft SDKs\Windows\V6.0A\Bin 폴더로 이동한다.
  • sn -Vr svcutil.exe 를 실행한다.
사용자 삽입 이미지

이 에러는 svcutil이 Strong Name으로 검증이 안되서 발생한다고 하는데 이게 정확히 뭘 의미하는지는 잘 모르겠습니다. 더 찾아봐야 겠습니다. 제가 해결책을 찾은 곳은 여기 입니다. 이렇게 하고 나서 다시 svcutil로 서비스의 프록시 클래스를 생성해 봤습니다.
사용자 삽입 이미지

wsdl과 xsd 파일들이 잘 생성된것을 확인할수 있었습니다. 이제 이 파일들을 가지고 실제로 사용할 프록시 클래스를 만들어 보겠습니다.
svcutil /namespace:*,ProductsClient.ProductsService tempuri.org.wsdl *.xsd
사용자 삽입 이미지

프록시 클래스인 Products.cs 파일이 잘 만들어 진게 보이네요. 알고나면 간단한데 왜 처음 봤을때는 이리 어려운지..간단하게 svcutil로 WCF 서비스의 프록시 클래스 만드는걸 정리해 봤습니다.
위에서 사용한 샘플코드는 일전에 올린 예제에 같이 들어있습니다. 혹시 없으면 다음 포스트인 클라이언트 만들기에서 올려드리겠습니다. 열공하세요. ^^

크리에이티브 커먼즈 라이선스
Creative Commons License
이제는 II7에 WCF 서비스를 배포해 보도록 하겠습니다. 중간에 WCF 서비스를 개발하는 부분을 건너 뛰었는데 그건 일단 샘플로 대체하고, 일단 배포할 수 있는 환경을 꾸면서 테스트해 볼려고 합니다.

먼저 IIS7이 설치되어 있는지 확인해 봐야 합니다.
제어판 > 프로그램 및 기능에서 Windows 기능 사용/사용안함
사용자 삽입 이미지

설치가 완료되면 아래처럼 제어판 > 관리도구에서 IIS Manager가 생긴것을 확인할 수 있습니다.
사용자 삽입 이미지

애플리케이션을 추가하기 전에 IIS가 제대로 설치되었는지 Default Site를 이용해서 테스트해 볼 수 있습니다. 오른쪽 아래에 한국어도 보이네요. :-)
사용자 삽입 이미지

IIS Manager를 실행하고 왼쪽창에서 Default Web Site를 선택합니다. 마우스 오른쪽 버튼을 눌러서 컨텍스트 메뉴에서 새로운 애플리케이션을 추가합니다.
사용자 삽입 이미지

별칭에는 ProductsService를 입력하고 실제 경로에는 추가할 애플리케이션이 있는 실제 물리적 위치를 선택해 줍니다.
사용자 삽입 이미지

확인을 누르면 아래처럼 Default Web Site에 새로운 애플리케이션이 추가된 것을 확인할 수 있습니다.
사용자 삽입 이미지

추가한 애플리케이션이 제대로 실행되는지 브라우저를 이용해서 테스트를 해보겠습니다.
사용자 삽입 이미지

위와 같은 에러가 나는 이유는 뭘까요 ? :-) 다음 포스트에서 성공적으로 서비스가 나타나는 것을 보여드리죠. 배포할때 테스트 하실수 있도록 샘플 애플리케이션을 첨부합니다.



크리에이티브 커먼즈 라이선스
Creative Commons License
이제 본격적으로 책의 예제를 실행하기 위한 환경구성에 들어가려 합니다. 책이 없어도 개발환경을 꾸미는 연습으로 따라 하셔도 됩니다.

Microsoft Enterprise Library 설치
MS Enterprise Library는 .NET을 가지고 엔터프라이즈 시스템을 개발할 때 사용할 수 있는 여러가지 유용한 기능을 가지고 있는 일종의 비즈니스 프레임워크라고 부를수 있습니다. 제가 사용한건 2006년 1월 버전(책의 CD버전)입니다만 최신버전은 2007년 5월에 릴리즈된 Enterprise Library 3.1 입니다.

setup을 실행해 보면 다음과 같이 캐싱, 로깅, 예외처리, 보안과 같은 여러 모듈이 들어있습니다. 그중에서 예제에서 사용하는 부분은 데이터에 대한 부분입니다.
사용자 삽입 이미지

다음을 누르면 설치가 진행되고 중간에 컴맨드 창이 열리면서 필요한 파일들이 설치가 됩니다.
사용자 삽입 이미지

Microsoft Enterprise Library 설정
설치가 완료되었으면 샘플 DB를 설정하기 위한 작업을 진행합니다. 메뉴에서 Enterprise Library Configuration 을 실행합니다. 왼쪽 트리에서 마우스 컨텍스트 메뉴를 이용해 새로운 Data Access Application Block을 생성합니다.
사용자 삽입 이미지

이때 Name과 ProviderName은 다음과 같습니다. 참고하세요.
사용자 삽입 이미지

이번에는 Database 부분을 수정합니다. 주의할건 수정할 부분이 Name이 아니라 Value 라는것.
사용자 삽입 이미지

그 밑에 있는 Server와 Integrated Security 부분은 기본 설정을 그대로 사용합니다. Server의 경우 SQL Server Expression을 사용하는게 기본설정이고 Integrated Security는 SSPI가 기본입니다.
사용자 삽입 이미지

사용자 삽입 이미지

간단하게 Enterprise Library  설치와 설정을 정리해봤습니다. 책이 마무리 되면 좀 더 많은 기능을 써보고 정리해 보려합니다. 공부할것 참 많네요. ^^


크리에이티브 커먼즈 라이선스
Creative Commons License
이번에는 샘플로 사용할 데이터 베이스를 설치하려고 합니다. Microsoft SQL Server를 위한 샘플 데이터 베이스로 Adventure Works가 있습니다. 전체 구성을 보고 싶으신 분은 AdventureWorks OLTP Databse Diagram을 받아서 보세요.
사용자 삽입 이미지

AdventureWorks에 대한 설치나 설정에 대한 상세한 부분은 Running Setup to Install AdventureWorks Sample Databases and Samples에 잘 나와 있습니다.

WCF Step by Step에서는 이중에서 2개의 테이블만을 사용합니다. 설치파일을 제공하기 때문에 설치는 간단하지만 설치하고 나서 DB 사용자 계정을 추가해 줘야 합니다. 스크립트를 제공하기 때문에 아래와 같이 컴맨드 창에서 실행해 주면 됩니다.
사용자 삽입 이미지

유의할 사항은 컴맨드 창을 관리자로 실행해 줘야 합니다. 그렇지 않으면 다음과 같이 "액세스가 거부되었습니다." 라고 나오면서 실행이 안됩니다.
사용자 삽입 이미지

DB 설치를 위한 실행파일은 용량이 커서 안올라가네요. 직접 위 링크에서 다운받으세요. 스크립트 파일을 첨부합니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
어제 "WCF 책 번역 마무리 작업이 한창 진행중이다"라고 포스팅을 했습니다. 오늘은 그에 이어서 Windows Vista에서 WCF 예제를 실행하기 위한 개발환경 꾸미기에 대해 써보려고 합니다.

책에서 가이드 하고 있는 WCF 개발환경은 책이 쓰여진 시점을 기준으로 하기 때문에 지금하고 많이 다릅니다.
  • .NET Framework 3.0 설치
  • Visual Studio 2005 Extentions for .NET Framework 3.0 설치
  • Microsoft Enterprise Library 설치
  • AdventureWorks Database 설치
하지만 지금은 Visual Studio 2008 베타버전이 이미 나와있기 때문에 귀찮게 Visual Studio Extention을 따로 설치할 필요가 없어졌습니다. 이미 2008에 .NET 3.0을 위한 프로젝트 템플릿이 모두 들어있습니다. .NET Framrwork 3.0도 Vista에는 이미 설치되어 있죠. 그러니 이렇게 줄어 듭니다.
  • Microsoft Enterprise Library 설치
  • AdventureWorks Database 설치
Windows Vista + Visual Studio 2008을 사용하면 WCF를 개발에 빌요한 환경을 즉시 갖출수가 있습니다. 이후 WCF를 공부하실 분들은 저 궁합으로 사용하시길 권장합니다.
크리에이티브 커먼즈 라이선스
Creative Commons License

Spring Framework - SubProjects

Development/기술 2007/05/22 01:05 posted by k16wire
스프링 프레임워크를 단순한 프레임워크으로 보기 보다는 제품을 개발하기 위한 에코시스템으로 보는게 더 맞을거 같다. 현재 스프링을 기반으로 하여 공식적으로 진행되고 있는 서브프로젝트는 12개다.
  • Spring Web Flow
    • 웹화면간의 플로우를 동적으로 정의하여 어떤 웹 어플리케이션에서도 재활용 할수 있게 해주는 웹 어플리케이션을 위한 프레임워크
  • Spring Web Services
    • 문서기반의 웹서비스를 만들수 있게 지원해주는 프레임워크로 궁금적인 목적은 계약을 기반으로 한 SOAp서비스를 만드는것이다.
  • Spring Rich Client
    • 리치 클라이언트 프레임워크, 스윙 어플리케이션을 빨리 만들수 있게 해준다.
  • Spring OSGi
    • OSGI 프레임워크에서 스프링 어플리케이션을 빨리 만들수 있게 지원하는 프로젝트
  • Spring JavaConfig
    • 컨피그 프레임워크
  • Spring .NET
    • .NET 기반의 스프링 프레임워크
  • Spring Batch
    • 배치성 어플리케이션 개발을 위한 프레임워크
스프링은 다양한 부분에서 스프링을 활용할수 있도록 서브프로젝트가 활발하게 진행되고 있으며, 이 서브프로젝트들도 완성도 역시 높기때문에 J2EE 어플리케이션에서 스프링의 중요성은 더 높아질것으로 예상된다.


크리에이티브 커먼즈 라이선스
Creative Commons License

Spring Framework - Modules

Development/기술 2007/05/22 00:59 posted by k16wire
사용자 삽입 이미지
스프링은 그 기능에 따라 모듈을 단위로 구분할 수가 있는데 총 7개의 모듈로 이루어져 있다 -  Core, Context, DAO, ORM, AOP, Web, MVC
모든 모듈은 Core를 기반으로 하며, 이 외의 모듈은 반드시 사용해야 하는것은 아니다. 필요에 따라 사용하면 된다.


  • Core
프레임웍의 근간이 되는 부분으로 Ioc와 Dependency Injection과 같은 스프링의 핵심이 되는 특징을 제공한다. BeanFactory를 통해 실제 로직의 구현과 설정을 분리할수 있게 해준다.
  • Context
JNDI, i18N, 서블릿 컨테이너, 리소스 로딩등과 같은 프레임워크로 제공해야 하는 여러 특징들을 제공한다.
  • DAO
벤더별로 JDBC코딩을 하지 않아도 되도록 JDBC 추상화 기능과 POJO에서 트랜젝션 관리를 할수있는 기능을 제공한다.
  • ORM
J2EE에서 즐겨 사용되는 Hibernate, iBatis, JDO, JPA와 같은 OR 멥핑 API와 연계할수 있는 통합 레이어를 제공한다. 이러한 API들과 연계할수 있는 트랜젝션 서비스도 제공한다.
  • AOP
스프링은 AOP Alliance를 따른 AOP를 제공하며 소스 수준의 메타데이터 프로그래밍을 지원한다.
  • Web
Multipart 파일업로드, 서블릿 리스너를 이용한 IoC 컨테이너등 웹 어플리케이션을 위한 기능을 제공한다. WebWork이나 Struts같은 웹 프레임워크와 통합도 지원한다.
  • MVC
웹 어플리케이션의 MVC 모델을 지원한다.

크리에이티브 커먼즈 라이선스
Creative Commons License

'Development > 기술' 카테고리의 다른 글

Windows Vista에서 WCF 개발하기 - Vista와 WCF  (0) 2008/01/07
Spring Framework - SubProjects  (0) 2007/05/22
Spring Framework - Modules  (0) 2007/05/22
Spring Framework - Samples  (0) 2007/05/16
Spring Framework - Installation  (0) 2007/05/08
Spring Framework - Reference  (0) 2007/05/08

Spring Framework - Samples

Development/기술 2007/05/16 00:55 posted by k16wire
  • 스프링 프레임워크 샘플
스프링 프레임워크로 무엇을 할수있는지 알아보는 가장 좋은 방법은 실제로 스프링으로 작성된 어플리케이션을 실행해 보는것이다. 스프링은 6개의 샘플 어플리케이션을 제공한다. 각 샘플이 보여주는 스프링의 특징을 간략히 알아보자.

countries
    페이지 리스트 네비게이션
    로케일
    뷰를 이용한 페이지 구성
    PDF와 엑셀파일 생성
imagedb
    BLOB/CLOB 처리
    네이티브 연결
    파일업로드
    벨로시티(Velocity)와 통합
jpetstore
    iBATIS 연동
    스프링 웹 MVC
    스프링기반의 원격처리
petclinic
    Hibernate 연동
    JMX
    JTA
petportal
    포틀릿
showcases
    dynamic : 그루비(groovy) 연동
    formtags : MVC 폼 태그
    java5-dao :
    mvc-connvention

각 샘플을 돌려보기 위해서는 JBoss나 Tomcat과 같은 컨테이너, MySQL이나 HSQL과 같은 데이터베이스가 필요하다.
  • JPetStore 설치 및 실행
JPetstore는 J2EE의 대표적인 샘플 애플리케이션 PetStore를 스프링과 iBATIS 기반으로 커스터마이징한 버전이다. 간단하게 HSQL 데이터베이스와 톰캣을 이용하여 JPetstore를 실행해 보자. 실행단계를 스텝바이 스텝으로 적어보면 다음과 같다.

    - JDK 1.4.x 이상 설치
    - JAVA_HOME 변수를 환경변수에 추가
    - ANT 1.5 이상 설치
    - ANT의 실행파일을 Path에 추가
    - %SPRING_HOME%/samples/jpetstore/ant warfile 로 war 파일 생성
    - %SPRING_HOME%/samples/jpetstore/dist/jpetstore.war 파일을 Tomcat의
        webapp로 복사하고 톰캣을 실행한다.
    - %SPRING_HOME%/samples/jpetstore/db/hsqldb/server.bat 로 HSQL DB실행
    - 웹브라우저에서 http://localhost:8080/jpetstore URL 입력

모든 단계가 제대로 수행되고 나면 아래와 같은 결과 화면을 볼수있다. 다른 샘플도 비슷한 단계를 통해서 실행이 가능하니 직접 실행해 보기 바란다.
사용자 삽입 이미지



크리에이티브 커먼즈 라이선스
Creative Commons License

'Development > 기술' 카테고리의 다른 글

Spring Framework - SubProjects  (0) 2007/05/22
Spring Framework - Modules  (0) 2007/05/22
Spring Framework - Samples  (0) 2007/05/16
Spring Framework - Installation  (0) 2007/05/08
Spring Framework - Reference  (0) 2007/05/08
Spring Framework - Pilot  (0) 2007/05/07

Spring Framework - Installation

Development/기술 2007/05/08 01:37 posted by k16wire
  • 스프링 프레임워크 다운로드
스프링을 설치하기 위해서는 먼저 프레임워크 파일을 다운로드 해야 한다. 스프링 사이트에서Downloads 메뉴로 들어가면 SourceForge.net의 Spring Framework으로 연결된다. 다운로드가 가능한 파일은 2가지다.

spring-framework-2.0.8.zip
약 10메가 정도되는 스프링 프레임워크의 기본릴리즈 파일이다.

+ dist  Spring 배포 jar 파일과 소스파일
+ docs 레퍼런스 문서

spring-framework-2.0.8-with-dependencies.zip
스프링 프레임워크의 기본적인 릴리즈 파일이외에 스프링을 직접 컴파일 하고, 샘플 어플리케이션을 실행할수 있도록 관련 라이브러리와 샘플소스, 프레임웍 소스가 모두 포함되어 있는 약 60메가정도의 풀버전 파일이다.

+ dist Spring 배포 jar파일과 소스파일
+ docs 레퍼런스 문서
+ lib 스프링 프레임워크를 빌드하고 샘플을 실행하는데 필요한 jar파일
+ src 스프링 프레임워크 소스파일
+ mock 목(mock)과 테스트파일
+ test 스프링 프레임워크 테스트파일
+ tiger/src JDK1.5관련 프레임워크 소스파일
+ tiger/test JDK1.5관련 프레임워크 테스트 파일
+ aspectj/src AspectJ관련 프레임워크 소스파일
+ aspectj/test AspectJ관련 프레임워크 테스트 파일
+ samples 데모 샘플어플리케이션과 showcaes

당근 두번째 풀버전 파일을 다운받는다.
  • 스프링 프레임워크 설치
J2EE 프레임워크에는 이미 알고있듯이 설치라고 부를만한 작업이 많지았다. jar파일을 복사하고 환경변수정도를 설정하면 된다.
하지만 앞으로 개발을 쉽게 하기 위해 두가지 환경이 필요하다.
  1. Eclipse기반의 개발환경
  2. Ant 빌드환경
이외에도 샘플어플리케이션을 실행하기 위해서 다음 어플리케이션이 필요하다.
  1. MySQL
  2. Tomcat
  3. Ant
  4. J2SE
  5. JUnit
어플리케이션 설치에 대한 자세한 설명은 생략한다. 하지만 실제로 샘플 어플리케이션을 실행하고 랩을 진행하기 위한 설정은 추후 추가하도록 하겠다.

크리에이티브 커먼즈 라이선스
Creative Commons License

'Development > 기술' 카테고리의 다른 글

Spring Framework - Modules  (0) 2007/05/22
Spring Framework - Samples  (0) 2007/05/16
Spring Framework - Installation  (0) 2007/05/08
Spring Framework - Reference  (0) 2007/05/08
Spring Framework - Pilot  (0) 2007/05/07
Spring Framework - Session 0  (0) 2007/05/06

Spring Framework - Reference

Development/기술 2007/05/08 00:45 posted by k16wire
  • 스프링 프레임워크 관련서적
스프링 프레임워크를 제대로 이해하기 위해서는 많은 공부가 필요하다. 관련 서적들이 시중에 많이 나와있어서 이를 소개한다.

사용자 삽입 이미지
첫번째 소개할 책은 Manning사의 유명한 in Action 시리즈의 스프링 버전인 스프링 인 액션이다.
원서를 번역한 책으로 에이콘에서 출판되었다. in Action 시리즈 답게 실용적으로 잘 쓰여진 책이다. 다만 스프링의 버전이 1.2.7을 기준으로 하는게 아쉽다. 반드시 2.0을 써야 하는 분이 아니라면 무리 없을거 같다.




사용자 삽입 이미지
두번째 소개할 책은 자바지기로 유명한 박재성님이 직접 쓰신 Spring 프레임워크 워크북이다.
워크북이라는 말에 번역서인줄 알았는데 저서라서 조금은 놀라기도 했다.
내가 알기로는 스프링관련한 저서는 유일하다. 국내서가 드문 현실을 미루어 봤을때 내용을 떠나서 참 반가운 책이다.




사용자 삽입 이미지
세번째는 지난번에도 언급했던 로드존슨(Road Johnson)의 J2EE Design and Development 이다.
말이 필요없는 책이다. 이미 번역되서 expert one-on-one J2EE 설계와 개발이라고 나와있지만 원서를 보라고 권하고 싶다.
(번역의 어려움을 알기에 더 언급은 안하겠음)




스프링 프레임워크 관련한 더 많은 정보는 스프링 사이트의 Book review를 참고하길 바라며 책소개는 여기서 그만 하도록 하겠다. 국내에 더 많은 책이 있을줄 알았는데 생각보다 스프링 관련서가 적어서 실망했다.

  • 스프링 프레임워크 온라인 자료
스프링 프레임워크 만큼 문서화가 잘되어 있는 프레임워크는 드물다. 아니 없는거 같다. 스프링 프레임워크 사이트의 Documentation에 들어가 보면 관련 자료에 대한 링크가 잘 정리되 있다. 책사기 싫으신분, 책살돈 없으신분을 위해 소개한다. ^^

Introducing the Spring Framework
2005년도에 스프링프레임워크를 소개하기위해 TSS에 로드존슨이 작성한 기사. 스프링 관련 TSS기사들도 정리되어 있으니 반드시 읽어보길 권한다.

Spring 2.0: What's New and Why it Matters
스프링 2.0에 대한 특징만 로드존슨이 정리한 글이다. 이미 1.x대 버전을 사용하신 분이라면 2.0에서 변경된 부분을 이해하기에 좋을것 같다.

Reference Manual
HTML과 pdf버전으로 제공한다. 500페이지짜리 책 한권이 통째로 제공된다. 말이 필요없는 레퍼런스다. 한꺼번에 다 보기보다는 옆에놓고 있으면 뿌듯하다.

Turorial - Step by Step
스프링의 튜토리얼은 총 6개 파트로 나누어서 제공하고 있다.

1. Basic Application and Environment Setup
2. Developing and Configuring the Views and the Controller
3. Developing the Business Logic
4. Developing the Web Interface
5. Implementing Database Persistence
6. Integrating the Web Application with the Persistence Layer

장황하게 적었지만 사실 스프링 사이트에 다 들어있는 내용들이다. 이 외에도 수많은 글과 포럼이 스프링 사이트에 링크되어 있다. 이 정도면 책 안사도 될거 같은데요 ^^

크리에이티브 커먼즈 라이선스
Creative Commons License

'Development > 기술' 카테고리의 다른 글

Spring Framework - Samples  (0) 2007/05/16
Spring Framework - Installation  (0) 2007/05/08
Spring Framework - Reference  (0) 2007/05/08
Spring Framework - Pilot  (0) 2007/05/07
Spring Framework - Session 0  (0) 2007/05/06
.NET Framework 3.0 개발환경 구성하기  (0) 2007/02/08

Spring Framework - Pilot

Development/기술 2007/05/07 23:59 posted by k16wire
  • 스프링 프레임워크이란 ?
사용자 삽입 이미지
스프링 프레임워크는 Java/J2EE 애플리케이션을 개발하기 위한 프레임워크이다. 이 프레임워크은  로드존슨(Road Jonhnson)이 Expert One-on-One J2EE Design and Development라는 책을 2002년도에 처음 출간하면서 부터 시작되었다. 이 책에는 스프링이 가져가고자 하는 철학이 모두 담겨있으니 꼭 한번씩 읽어보기를 권한다.

스프링 프레임워크의 공식 사이트에 가보면 "우리의 미션(Mission Statement)"이 자랑스럽게 쓰여있다. ^^
이를 읽어보면 스프링의 특징을 파악하는데 많은 도움이 된다.

  1. J2EE는 사용하기 쉬어야 한다.
  2. 클래스보다는 인터페이스를 사용해야 한다.
  3. JavaBean이 어플리케이션을 설정하는데 가장 좋다.
  4. OO 디자인이 중요하다.
  5. Java는 Exception을 처리가 너무 많다.
  6. Testability가 중요하다.
  • 스프링 프레임워크의 특징
스프링에 대해 본격적으로 들어가기에 앞서 간단하게 스프링이 갖고 있는 특징을 한번 정리해 보자.
  1. The most complete lightweight container
  2. A common abstraction layer for transaction management
  3. A JDBC abstraction layer
  4. Integration with Toplink, Hibernate,JDO,and iBATIS SQL Maps
  5. AOP functionality
  6. A flexible MVC web application framework
각 특징이 뭐라고 구구절절 설명하지 않고 키워드만 뽑아봐도 스프링이 J2EE의 주요 프레임워크나 개념들과 깊은 관련이 있다는걸 알수있다.
  • 스프링 프레임워크를 사용하면 뭐가 좋은가 ?
스프링을 사용하는데는 여러가지 이유가 있겠지만 아무래도 가장 큰 부분은 개발이 쉬어진다는 사실일 것이다. 코딩-테스트로 이루어지는 작업에 EJB를 사용하면서 코딩-배포-테스트로 복잡해지고 이 과정에서 작업시간이 많이 걸린다. 이과정을 단순화함으로서 다양한 장점들을 얻을수가 있게된다.
  • 스프링 프레임워크 구성
스프링이 갖고있는 많은 특징들을 아래 그림과 같이 크게 구분해서 볼수있다.
사용자 삽입 이미지

  • 스프링 프레임워크 버전
사용자 삽입 이미지
2007년5월7일 현재 스프링 프레임워크의 최신 버전은 2.04이다.
2007년 5월 14일 Spring Framework 2.1 M4가 공식버전으로 릴리즈 됐다.
2008년 12월 현재 최신버전은 2.0.8이다.


  • 스프링 프레임워크 라이센스
스프링 프레임워크는 아파치 라이센스 버전 2.0을 따른다.



크리에이티브 커먼즈 라이선스
Creative Commons License

Spring Framework - Session 0

Development/기술 2007/05/06 02:00 posted by k16wire

내가 좋아하는 사람들 중에는 썬에서 자바 에반겔리스트로 활동하는 신상철님이 있다. 이분 인터뷰 기사를 마소에서 보고난후 결심한게 한가지 있다.

"언젠가는 멋진 강좌를 한번 써보리라."

블로그를 쓰기 시작한지 1년만에 꼭 한번 해보고 싶었던 강좌를 시작해 보려고 한다. 그 첫번째 주제로 잡은것이 "스프링 프레임워크(Spring Framework)" 이다.
사용자 삽입 이미지

2007년5월7일 현재 목차는 다음과 같다.(계속 업데이트 예정)
  1. Pilot
  2. Reference
  3. Installation
  4. Samples
  5. Modules
  6. SubProjects
  7. Start-up
나처럼 스프링에 대해 많이 들어봤지만 제대로 공부를 시작하려는 사람에게 도움이 되길 빌면서 한가지 당부하고 싶은것이 있다면 이 강좌를 읽은 분들은 어떤 형태로든 좋으니 피드백을 남겨주길 부탁드린다.
크리에이티브 커먼즈 라이선스
Creative Commons License
.NET Framework 3.0기반으로 개발을 하기위해서는 OS를 다음 두가지중 하나로 하는것이 좋다.
  • Windows XP Professional
  • Windows 2003 Server
개발툴은 당연히 Visual Studio 2005를 설치해야 한다. 여기까지는 .NET Framework 2.0과 동일하며 여기에 .NET Framewok 3.0을 위해서 다음 몇가지를 더 설치해야 한다.

  1. .NET Framework 3.0
  2. Windows SDK
  3. Visual Studio Extension for WCF, WPF
  4. Visual Studio Extension for WWF
위 4가지를 다 설치하고 나면 Visual Studio의 프로젝트 템플릿에 WCF, WPF, WWF에 대한 것들이 추가된다.
Windows 2003Server를 기준으로 위와 같은 환경을 구성하기 위해서는 최소 20기가 이상의 디스크 용량이 필요하다. 만약 DB와 연동하기 위해서 SQL Server를 설치한다면 이는 별도로 더 고려해야 한다.



크리에이티브 커먼즈 라이선스
Creative Commons License

사용자 삽입 이미지
DWR은 Direct Web Remoting의 약자로서 브라우저에서 동작하는 자바스크립트가 서버에 있는 서버 컴포넌트를 호출하여 그 결과를 보여주는것을 가능하게 해준다. 이 DWR을 설명하는 사이트로 Getahead가 있다.

그럼 Ajax와 DWR은 어떻게 다른걸까 ? DWR은 Ajax를 적용하고자 하는 경우 쉽게 적용할수 있도록 정리한 프레임워크 이다. 클라이언트쪽 자바 스크립트에서 서버쪽 자바 코드까지를 모두 포함하고 있다. 자바지기의 AJAX와 DWR을 참고하라.

Gethead의 StartwithDWR을 한글로 번역해 놓은이 있다.


크리에이티브 커먼즈 라이선스
Creative Commons License