달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

이 글은 하얀말님의 2009년 9월 21일의 미투데이 내용입니다.

:
Posted by 하얀 말

이 글은 하얀말님의 2009년 9월 19일의 미투데이 내용입니다.

:
Posted by 하얀 말

이 글은 하얀말님의 2009년 9월 16일의 미투데이 내용입니다.

:
Posted by 하얀 말

이 글은 하얀말님의 2009년 9월 15일의 미투데이 내용입니다.

:
Posted by 하얀 말

이 글은 하얀말님의 2009년 9월 10일의 미투데이 내용입니다.

:
Posted by 하얀 말
2009. 9. 9. 17:08

안녕, 볼랜드...! Computing에 관한 독백2009. 9. 9. 17:08

IT쪽 일을 하시거나 관심이 많으신 분들은, 90년대 말 ~ 21세기 초에 걸물 취급 받던 개발 도구인 델파이의 새 버전, 델파이 2010 출시 소식을 들으셨을 것이다. 윈도우 7 지원을 마이크로소프트의 비주얼스튜디오보다 더 잘 지원한다고 널리 홍보하고 있으며, 델파이라는 이름값이 꽤 크므로 많은 관심을 받고 있다 하겠다.

그런데 이 델파이 2010을 홍보하는 회사가 좀 이상하다. 볼랜드(Borland)도 아니고 코드기어(Code Gear)도 아니고 엠바카데로 테크놀로지스(Embarcadero Technologies)라는 약간 지명도가 떨어지는 회사이다. DBArtisan이라는 DB 관련 도구를 쓰고 있다면 모르겠지만.

볼랜드가 투게더소프트를 인수하여 투게더라는 UML 모델링 도구를 확보한 이후 캘리버RM(Caliber RM) 같은 요구 사항 관리 도구 등을 확충하며, 마치 IBM에 인수되기 전의 래셔널 소트트웨어와 비슷하게 애플리케이션 생명 주기(Application Life Cycle) 전반을 아우르는 제품 라인업을 가져가는 것을 추구하다, 한 때는 일세를 풍미했지만 이클립스, 넷빈즈, 비주얼스튜디오에 치여 돈이 안되는 델파이, 제이빌더 같은 개발 도구를 만드는 부문을 코드기어라는 별도 회사로 분사시키고 모델링/방법론 도구에 치중하기로 한 것은 알고 있었다. 그래서 '뭐, 코드 기어는 엠바카데로가 샀다고 치고, 그럼 요새 볼랜드는 뭐하나~'하고 http://www.borland.com 사이트를 간만에 들어보니 Micro Focus라는 처음 보는 회사의 웹 페이지가 나오는 것이 아닌가. 그리고 그 웹 페이지에는 다음과 같은 제목의 보도 자료 링크가 있었다.

Micro Focus announces the acquisition of Borland Software(마이크로포커스는 볼랜드를 인수했음을 공표합니다).

개발 도구를 제외한 볼랜드마저도 사라진 것이다.

볼랜드라는 일세를 풍미한 회사가 피인수되어 사라지는 것을 보니, 학창 시절 볼랜드의 터보 파스칼, 터보 C 2.0, 볼랜드 C++로 숙제하던 나로써는, 회사 다니면서 줄곧 써 온 프로그래밍 언어, 자바의 창시자 썬마이크로시스템즈가 오라클에 넘어간 것에 이어 또다른 묘한 감정을 느끼게 되었다. 하긴 개발 도구를 코드 기어라는 회사로 떼어 낸 이후의 볼랜드를 내가 알던 예전의 볼랜드와 동격으로 놓기에는 좀 켕기긴 했지만 말이다.

올해는 사람도 많이 죽더니(노무현/김대중 전 대통령, 여운계, 조오련, 장진영, 마이클 잭슨), 일세를 풍미한 컴퓨팅 대기업도 참 많이 사라진다(썬, 볼랜드, SGI, Id 소트트웨어). 기분 묘하다.

:
Posted by 하얀 말
  • 아싸, USB 드라이브에 리눅스 설치해서 부팅 성공! 이제 USB 드라이브만 꽂으면 리눅스를 쓸 수 있다!!!(리눅스 USB드라이브)2009-09-03 10:26:50
  • 오늘 일과는 xmodmap으로 한/영키 키코드값 맞추다 다 갔구나…(xmodmap 한/영전환)2009-09-03 18:07:23

이 글은 하얀말님의 2009년 9월 3일의 미투데이 내용입니다.

:
Posted by 하얀 말

이 글은 하얀말님의 2009년 9월 2일의 미투데이 내용입니다.

:
Posted by 하얀 말
2009. 9. 1. 16:44

Jetty Computing에 관한 독백2009. 9. 1. 16:44

Apache Tomcat이 Servlet / JSP 참조 구현체이긴 하지만 요새 Jetty란 JSP/Servlet Engine이 Tomcat보다 더 작고 가벼워로 각광 받는 듯 하다. 특히 Google이 자사의 AppEngine을 Tomcat -> Jetty로 교체한 사실은 앞으로 Jetty에 많은 힘을 실어줄 듯 하다. 이 정도 되니 Jetty에 대한 궁금증이 생겨 Jetty를 알아보기로 했다.

 

Jetty 6? Jetty 7?

2009년 9월 1일 현재 Jetty의 안정 버전은 6.x이고 다. 상위 버전인 7.x가 출시 준비판(Release Candidate)으로 존재한다. 6.x는 codehaus가 관리하는데 7.x부터는 Eclipse 재단이 관리하는 것도 재미있는 점이다. 7.x 버전은 제품 자체 완성도는 좋을 지 모르나 문서화가 아직 진행 중이기 때문에 관련 정보 획득이 어렵다. 따라서 현재 안정 버전인 Jetty 6 획득을 권장한다.

 

Jetty 시작과 종료

간단한 Jetty 시작 / 종료

Jetty 기동은 다음과 같이 하면 된다.

$ java -jar start.jar

이후 웹 브라우저에서 http://localhost:8080 으로 접속해 보면 Jetty가 제대로 기동되었는지 여부를 알 수 있다.

 

종료는 Jetty를 기동하는 java process를 kill하면 된다.

 

Jetty 기동 Option

간단한 Jetty 시작에서는 아무 옵션도 주지 않고 기동했지만, Jetty 기동에는 여러 옵션을 줄 수 있다. Jetty 기동 command line은 아래와 같은 형태를 가진다.

 

java [<property_list>] -jar start [--help | --stop | --version] | [<jetty_config_file_urls>]

 

 

<property_list>에는 Jetty에 관련된 JVM property들이 나온다. 이들 property를 설정함으로써 Jetty 기동을 좀 더 세밀하게 제어할 수 있다. 다음은 Jetty 기동 시 부여할 수 있는 property 및 그 의미에 대한 목록이다.

 

  • jetty.home : Jetty Home Directory를 지정한다. OS의 JETTY_HOME 환경 변수를 지정하는 것으로 이 property 설정을 생략할 수 있다.
  • jetty.port : Jetty가 listening할 HTTP port를 지정한다. 이 port는 XML로 된 Jetty 설정 파일에서도 지정 가능하다.
  • jetty.host: Jetty가 기동하는 장비의 IP, 또는 hostname을 지정한다. 기본적으로 Jetty가 돌아가는 로컬 장비의 hostname으로 설정된다.
  • jetty.logs: Jetty가 남기는 log 디렉토리 지정. 기본은 ${jetty.home}/logs 디렉토리이다.
  • STOP.PORT : Jetty 정지 신호를 받아들이는 port. jetty.port로 설정하는 port와는 다른 port이다.
  • STOP.KEY : Jetty를 정지시킬 때 주어야 할 열쇠글(이 열쇠글을 제대로 주지 않으면 Jetty 정지가 안된다)

 

Jetty는 property 이외에도 --help, --stop, --version과 같은 option을 줄 수 있다.

 

  • --help : Jetty 기동 시 줄 수 있는 option을 표시한다(별로 자세하지는 않다)
  • --version : Jetty의 version을 표시한다.
  • --stop : Jetty를 중단시킨다.

 

--stop, STOP.PORT, STOP.KEY에 대해 좀 더 자세히 언급하기로 한다. 예를 들어 Jetty 기동을 다음과 같이 했다고 하자.

 

$ java -DSTOP.PORT=8037 -DSTOP.KEY=fuhaha -jar start.jar &

$

 

위에서 기동한 Jetty를 정지시키려면, 위 process를 kill하는 방법도 있겠으나 다음과 같은 명령을 내리면 안전하게 위에서 기동한 Jetty를 정지시킬 수 있다.

 

$ java -DSTOP.PORT=8037 -DSTOP.KEY=fuhaha -jar start.jar --stop

 

Jetty에 Java EE Web Application 배포

Jetty를 설치/설정하는 이유는 결국 Jetty에 Web Application을 올리기 위함이다. Jetty에 Web Application을 올리는 방법은 두 가지가 있는데 하나는 Web Application Deployer를 쓰는 방법이고, 다른 하나는 Context Deployer를 쓰는 방법이다.

 

Web Application Deployer

Web Application Deployer는 정적 배포기이다. 여기에서 정적 배포란 hot deploy가 아닌, 변경한 내용을 반영하기 위해서는 Jetty 재기동이 필요한 배포를 말하며, Jetty를 이루는 class 중 org.mortbay.jetty.deployer.WebAppDeployer라는 클래스가 담당한다. 방법이 매우 간단한데, Jetty 기본 설정 상태에서는 $JETTY_HOME/webapps 밑에 JavaEE Web Application을 놓고 재기동하면 바로 그 새로운 Web Application을 인식한다.

 

문제는 default 상태의 Jetty 6.1.20은 Tomcat과 달리 WAR 형태로 묶은 Web Application은 자동으로 인식하지는 않았다는 점이다. 따라서 WAR로 묶은 Java EE Web Application은 압축을 풀어 $JETTY_HOME/webapps 디렉토리에 놓아두고 재기동해야 Jetty가 인식하였다. 이 점은 좀 이상한 점으로 정말 이런 것인지는 좀 더 사용을 해 봐야할 것으로 보인다.

 

Context Deployer

Context Deployer는 hot deploy를 지원하며, Jetty 설정 파일(default는 $JETTY_HOME/etc/jetty.xml)을 보면 org.mortbay.jetty.deployer.ContextDeployer라는 클래스가 Context Deployer임을 알 수 있다. Jetty 기본 설정 상태에서 Hot Deploy는 $JETTY_HOME/contexts 라는 디렉토리에 각 Java EE Web Application에 대한 XML로 된 설정 파일을 가져다 놓아야 한다.

Jetty 설정 파일의 Context Deployer 설정 부분 예시는 다음과 같다.

<Call name="addLifeCycle">
     <!-- Context Deployer class 설정 -->
     <New class="org.mortbay.jetty.deployer.ContextDeployer">
        <Set name="contexts"><Ref id="Contexts"/></Set>
        <!-- Context XML 설정 파일 놓는 위치 지정. 여기서는 $JETTY_HOME/contexts 디렉토리로 설정 -->
        <Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts</Set>
        <Set name="scanInterval">1</Set>
    </New>
  </Arg>
</Call>

각 Java EE Web Application마다 만들어야 할, $JETTY_HOME/contexts에 가져다 놓는 XML 파일 예는 다음과 같다.

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
    "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
      <!-- Web Application에 부여할 context path. 여기서는 /test 로 설정 -->
      <Set name="contextPath">/test</Set>
      <!-- Web Application이 있는 directory. 여기서는 $JETTY_HOME/webapps/test 디렉토리로 설정 -->
      <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/test</Set>    
</Configure>

 

이 글은 스프링노트에서 작성되었습니다.

:
Posted by 하얀 말

이 글은 하얀말님의 2009년 8월 26일의 미투데이 내용입니다.

:
Posted by 하얀 말