[kenu@82s ~]$ ls /web/kenu/okjsp.80port.net/
DSC022.JPG    count.jsp  f.jsp        javaone2004/  lecture/  rss/
WEB-INF/      css/       family/      javaone2006/  letter/   slf/
agent.html    cvs/       favicon.ico  ...
[kenu@82s ~]$ cd okjsp2007/
[kenu@82s okjsp2007]$ pwd
/home/kenu/okjsp2007
[kenu@82s okjsp2007]$ ls
CHANGE.txt  README.txt        build.properties.default  docs/  test/
CVS/        build.properties  build.xml                 src/   web/
[kenu@82s okjsp2007]$ cvs update; ant

cvs 서버에서 서비스되는 서버 폴더에 소스를 보내기 전에 cvs와 sync하는 장소가 필요합니다. 이곳을 sandbox 라고 합니다. 여기에서는 /home/kenu/okjsp2007 경로가 sandbox입니다. cvs update 명령을 통해서 새로운 소스들 가져옵니다. ant 명령으로 build.xml 내용을 실행합니다. 이렇게 하면 sandbox의 내용이 서비스되는 경로( /web/kenu/okjsp.80port.net/ )로 보내지게(publish) 됩니다.

어제 세미나에서 미처 보여드리지 못한 내용이라 추가합니다.
지난 밤 긴 시간을 http://neturo.dacom.net 을 통해서 원격지원을 했었습니다. JSP를 처음 하시는 분을 도와드리면서 irc로 채팅을 했는데, 몇 가지 건질 것이 있었습니다.

채팅 로그가 길지만 JSP 입문하시는 분들께 도움이 되리라 생각되어서 okjsp와 블로그에 같이 올립니다.

두 개의 프로젝트의 차이점은 일반 자바 애플리케이션이냐 웹 애플리케이션이냐 입니다. 그에 따라서 개발하는 소스의 디렉토리 구조가 달라집니다. 이클립스에서 프로젝트 아이콘의 모양도 차이가 있습니다. J 글자는 Java라는 의미이고, 웹프로젝트는 동그란 지구 이미지가 하나 더 붙어있습니다.
Java Project and Dynamic Web Project

Java Project and Dynamic Web Project


일단 eclipse 3.3 wtp에서 옵션 조정없이 Java 프로젝트와 Dynamic Web Project를 만들어서 설정파일을 비교해 보았습니다. 퍼스펙티브는 모든 파일이 다 보이는 Resource Perspective로 정했습니다.
compare with each other

compare with each other


만들어진 두 개의 프로젝트를 선택하고 Compare With > each other를 선택합니다. 두 프로젝트의 디렉토리, 파일이 비교됩니다.

directory, file diff

directory, file diff

.classpath 파일은 프로젝트의 클래스패스가 지정되는 파일입니다. 이 파일 덕분에 환경변수에 클래스패스를 지정하는 고전적인 자바 개발법에서 벗어날 수 있죠. 하단의 파일 비교를 보면 웹 프로젝트 쪽에 2줄이 더 추가된 것을 알 수 있습니다.
일반 자바 프로젝트에서 자바 웹 프로젝트로 변하면서 추가된 디렉토리는 .settings , build, WebContent 디렉토리 셋입니다. build/classes 디렉토리는 bin 디렉토리의 대체입니다.
.project를 더블클릭해서 비교해 보시면 프로젝트 속성이 어떻게 변경이 되었는지 확인할 수 있습니다.

오늘 확인한 바로는 eclipse 3.2 WTP1.5 조합에서 나오는 이슈가 하나 없어졌습니다.
바로 JSP 에디터의 가로스크롤 발생시 성능 저하 현상입니다.
eclipse 3.3 WTP 2.0에서 해결된 것 같습니다. 같은 소스를 두 가지 버전에서 열어서 확인한 결과 상당히 개선된 것 같습니다.

성능 향상된 가로스크롤 처리

성능이 개선된 것은 좋은 일이지만 코딩할 때 가로스크롤이 생기지 않도록 줄끊어주는 센스가 있어야할 것 같습니다.

포트가 네 개 있는데,
8080 은 http 서비스 포트,
8443은 SSL이니 사용안하면 주석처리하시고,
8009는 apache httpd와 같은 웹서버와 내부 연결 포트니까 웹서버 유무에 따라 처리하시고,
8005는 shutdown 포트입니다.

두 달 전 감수를 했던 책이 드디어 나왔습니다.
http://www.hanb.co.kr/look.php?isbn=978-89-7914-498-7

사용자 삽입 이미지

가천길대학 황희정 교수님이 저자이시고 대학교재용으로 만든 책입니다.
출판사는 한빛미디어 출판사입니다.
초판의 내용에 JSP 스펙이 업그레이드 되어서 설명이 되고, IDE로 이클립스와 Web Framework로 Struts를 추가했습니다.
감수자는 1판과 같이 개정판에서도 저를 써주셨습니다.
http://www.hanb.co.kr/look.php?isbn=978-89-7914-498-7 
에서 구입하실 수 있습니다.
context path 변경하는 곳입니다.
Dynamic Web Project 프로퍼티에서 Web Content Settings 를 보면 Context Path를 변경할 수 있습니다.
context path

context path


항목에 아무 것도 없으면 / 를 입력하면 default context 입니다. okjsp 라고 넣으면 주소줄에 자동으로 /okjsp 가 들어갑니다.
단 eclipse 3.3 , WTP2.0 만 됩니다. eclipse 3.2 에서 wtp1.5는 defaultContext가 안 됩니다.

인트로
Introduction

배치자는, 이름이 의미하듯이, 톰캣 서버에 웹 애플리케이션을, 정적으로(서버가 기동하기 전에 설치된 애플리케이션) 또는 동적으로 (톰캣 매니저 웹 애플리케이션이나 이미 배치된 애플리케이션들과 연계하여), 배치하거나 제거하는 역할을 합니다.
The deployer, which as its name imply, allows deploying and undeploying web applications to the Tomcat server, either statically (the application is setup before the server is started), or dynamically (in conjunction with the Tomcat Manager web application or manipulating already deployed applications).

컨텍스트 기술서
Context descriptors

컨텍스트 XML 기술서는 XML 데이터 조각입니다. 메인서버 설정 파일(conf/server.xml)에서 정상적으로 보여질 수 있는 유효한 컨텍스트 엘리먼트를 포함합니다. 그리고 이것은 톰캣에서 다양한 관리 도구를 통해서 쉽게 자동화된 조작이 가능합니다. 호스트에서 컨텍스트 기술서의 위치는 $CATALINA_HOME/conf/[enginename]/[hostname]/foo.xml 입니다. 주의할 것은 파일의 이름은 웹 애플리케이션 이름에 맞지 않아도 되지만, 톰캣이 컨텍스트 기술서를 생성하게 되면 컨텍스트 기술서의 이름은 웹 애플리케이션과 동일하게 맞춰집니다.
A Context XML descriptor is a fragment of XML data which contains a valid Context element which would normally be found in the main server configuration file (conf/server.xml), and allows easy and automated manipulation of web applications by the various management tools available in Tomcat. For a given host, the Context descriptors are located in $CATALINA_HOME/conf/[enginename]/[hostname]/foo.xml. Note that while the name of the file is not tied to the webapp name, Tomcat will create Context descriptors which match the webapp name whenever it will generate a Context descriptor.

컨텍스트 기술서는 컨텍스트의 모든 환경설정 파라미터의 정의가 가능합니다. 예를 들면 네이밍 자원과 세션 매니저 설정같은 것이죠. 또 한 가지 말하자면, 컨텍스트 엘리먼트에 있는 docBase 값은 .WAR 파일을 참조하거나 .WAR파일의 압축이 풀려진 디렉토리를 지정할 수 있습니다.
Context descriptors allow defining all aspects and configuration parameters of a Context, such as namign resources and session manager configuration. It should be noted that the docBase specified in the Context element can refer to either the .WAR or the directory which will be created when the .WAR is expanded or the .WAR itself.

from: http://tomcat.apache.org/tomcat-5.0-doc/deployer-howto.html

톰캣 시작할 때 디플로이
Deploying on Tomcat startup

host의 "deployOnStartup" 프로퍼티 값이 true이면 host appBase 폴더에 있는 웹 애플리케이션들은 디플로이 됩니다. 디플로이 프로세스는 다음과 같습니다:
  • 컨텍스트 XML 선언은 제일 처음 디플로이 됩니다.
  • 컨텍스트 XML 선언으로 참조되지 않은 펼쳐진 웹 애플리케이션들이 그 다음으로 디플로이 됩니다; 만일 .WAR파일과 연관이 되어있고, 그 .WAR파일이 새 것이라면, 펼쳐진 디렉토리는 제거되고, 웹 애플리케이션은 .WAR 파일 압축이 풀리면서 재 디플로이 될 것입니다.
  • .WAR 파일들이 디플로이 됩니다.
만약 매칭되는 컨텍스트 XML 파일이 없다면, 디플로이되는 웹 애플리케이션마다 해당 컨텍스트 XML이 생성될 것입니다.
 
The webapps which are present in the host appBase will be deployed if the host "deployOnStartup" property is true. The deployment process is the following:

The Context XML declarations will be deployed first

Expanded web applications not referenced by Context XML declarations will then be deployed; if they have an associated .WAR file and it is newer than the expanded web application, the expanded directory will be removed and the webapp will be redeployed from the .WAR

.WAR files will be deployed

For each deployed web application, a matching Context XML descriptor will be created unless one exists already.

from: http://tomcat.apache.org/tomcat-5.0-doc/deployer-howto.html

운영중인 톰캣에 배치
Deploying on a running Tomcat server

만약 host의 "autoDeploy" 프로퍼티가 true이면, 호스트는 필요할 때마다 동적으로 웹 애플리케이션을 배치 또는 업데이트하려고 시도합니다. host는 자동 리로딩 작업에 필요한 백그라운드 처리가 필요할 것인데, 기본적으로 설정되어 있습니다.
If the host "autoDeploy" property is true, the host will attempt to deploy and update web applications dynamically, as needed. The host will need to have background processing enabled for automatic reloading to work, which is the default.

다음을 포함합니다:

  • host appBase 폴더에 복사된 WAR파일의 배치
  • host appBase 폴더에 복사된 펼쳐진 웹 애플리케이션의 배치
  • WAR파일이 갱신되었을 경우 WAR파일로부터 배치된 웹 애플리케이션의 재배치:
    펼쳐있는 웹 애플리케이션이 제거되고, WAR파일이 다시 압축이 풀립니다. 만약 host의 옵션이 WAR파일은 압축해제되지 않도록 설정되었다면 그렇게 되지 않고, 그런 경우에는 웹 애플리케이션은 단순이 재배치 됩니다.
  • /WEB-INF/web.xml 파일이 갱신된 경우 웹 애플리케이션의 재배치
  • 배치된 웹 애플리케이션의 컨텍스트 XML 파일이 갱신된 경우 웹 애플리케이션의 재배치
  • $CATALINA_HOME/conf/[enginename]/[hostname]/ 폴더에 컨텍스트 XML 파일(이전에 배치된 애플리케이션의 컨텍스트 경로와 일치하는 이름을 가진)이 추가된 경우 웹 애플리케이션의 재배치

주의: 웹 애플리케이션 리로딩은 로더에서 설정될 수 있고, 그런 경우 로드된 클래스는 변경에 대해서 추적됩니다.

This includes:
Deployment of WARs which are copied to the host appBase.
Deployment of expanded web applications which are copied to the host appBase.
Redeployment of a web application which has been deployed from a WAR when the WAR is updated: the expanded web application is removed, and the WAR is expanded again. This will not happen if the host is configured so that WARs are not expanded, in which case the webapp will be simply redeployed.
Redeployment of the web application if the /WEB-INF/web.xml file is updated.
Redeployment of the web application if the context XML file from which the web application has been deployed is updated.
Redeployment of the web application if a context XML file (with a name corresponding to the context path of the previously deployed application) is added in the $CATALINA_HOME/conf/[enginename]/[hostname]/ folder.
Note: Web application reloading can also be configured in the loader, in which case loaded classes will be tracked for changes.
from: http://tomcat.apache.org/tomcat-5.0-doc/deployer-howto.html

+ Recent posts