'webapp'에 해당되는 글 4건

  1. 2008/06/08 앤트(Ant)에서 톰캣에 웹 애플리케이션을 디플로이하는 방법..
  2. 2008/05/26 스프링(Spring)에서 Log4j 설정 파일 위치를 바꿔 보아요.
  3. 2008/05/26 웹 어플리케이션에서 jsp 파일의 직접 호출을 막아보아요.
  4. 2008/05/25 톰캣(Tomcat)의 컨텍스트(Context) 파일로 웹 어플리케이션을 추가해 보아요.
2008/06/08 02:25

앤트(Ant)에서 톰캣에 웹 애플리케이션을 디플로이하는 방법..

톰캣에 웹 애플리케이션을 디플로이하는 방법에는 두 가지가 있어요.
  • ${톰캣_설치_경로}[각주:1]/webapps 디렉토리에 war 파일을 추가한다.
  • ${톰캣_설치_경로}/conf/Catalina/localhost 디렉토리에 context 파일을 추가한다.
war 파일은 일반적인 웹 애플리케이션 파일이구요.
context 파일 내용은 대략 다음과 같아요.

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/${웹애플리케이션_이름}" docBase="${웹애플리케이션_디렉토리}" reloadable="true">
</Context>

첫번째 방법이 보통 많이 쓰이는 방법이죠. 저는 두번째 방법을 더 선호합니다만..



그런데 사실 한 가지 방법이 더 있습니다.

톰캣의 manager 어플리케이션을 이용하는 것입니다. ^-^/

톰캣의 manager 어플리케이션을 사용하려면 다음을 확인합니다.

1.톰캣에 manager 어플리케이션이 설치되어 있는지 확인한다.
   (5.0, 5.5, 6.0 버전 모두 기본적으로 설치되어 있네요..)

2. manager 권한이 있는 사용자를 등록한다.
    ${톰캣_설치_경로}\conf\tomcat-users.xml 파일에 다음 내용을 추가합니다.

<role rolename="manager"/>
<user username="${사용자_아이디}" password="${사용자_암호}" roles="manager"/>

3. 서버를 띄우고 http://localhost:8080/manager/html 로 접속합니다.
    (등록한 사용자의 아이디/암호를 입력합니다.)

다음과 같은 화면에서 Deploy를 실행하면 됩니다.
Context 파일 내용을 설정하거나 war 파일을 업로드해서 디플로이할 수 있습니다.


그리고 매니저에서는 다른 웹 애플리케이션을 실행/중지/리로드/언디플로이할 수 있어요~



이제부터 본론으로 들어갑니다.

제가 말씀드릴 앤트로 톰캣에 웹 애플리케이션을 디플로이하는 방법은 내부적으로 톰캣의 manager 애플리케이션을 이용합니다. 그러므로 먼저 톰캣의 manager 애플리케이션이 설정이 되어있어야 해요~!

빌드 파일에서 사용할 프로퍼티 파일은 다음과 같습니다. (sample 어플리케이션을 배포한다고 가정합니다.)

# catalina home directory
catalina.home=C:\Tomcat[각주:2]
catalina.ant.jar=${catalina.home}/server/lib/catalina-ant.jar
catalina.tasks.file=catalina.tasks[각주:3]

# catalina manager configurations
catalina.manager.url=http://localhost:8080/manager
catalina.manager.user.name=test[각주:4]
catalina.manager.user.password=test

# application configurations
application.path=/sample[각주:5]
application.context=sample.xml[각주:6]

그리고 태스크 정의 파일이 필요합니다. 다음과 같은 내용으로 catalina.tasks 라는 파일을 만듭니다.

# catalina tasks properties
deploy=org.apache.catalina.ant.DeployTask
undeploy=org.apache.catalina.ant.UndeployTask
start=org.apache.catalina.ant.StartTask
reload=org.apache.catalina.ant.ReloadTask
stop=org.apache.catalina.ant.StopTask
sessions=org.apache.catalina.ant.SessionsTask
list=org.apache.catalina.ant.ListTask
serverinfo=org.apache.catalina.ant.ServerinfoTask
roles=org.apache.catalina.ant.RolesTask
resources=org.apache.catalina.ant.ResourcesTask

어플리케이션 컨텍스트 설정 파일이 필요합니다. 다음과 같은 내용으로 sample.xml 이라는 파일을 만듭니다.

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/sample" docBase="C:\Sample[각주:7]" debug="0" privileged="true" reloadable="true">
    <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost.sample." suffix=".txt" timestamp="true" />
</Context>

마지막으로 빌드 파일 내용은 다음과 같습니다.

먼저 태스크 정의 파일을 설정해야 합니다.

<taskdef file="catalina.tasks" classpath="${catalina.ant.jar}" />

그러면 다음과 같은 태스크들을 사용할 수 있어요.

<target name="catalina.deploy" description="Deploy web application">
    <deploy url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" config="${application.context}" update="true" />
</target>

<target name="catalina.undeploy" description="Undeploy web application">
    <undeploy url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>

<target name="catalina.start" description="Start web application">
    <start url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>

<target name="catalina.reload" description="Reload web application">
    <reload url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>

<target name="catalina.stop" description="Stop web application">
    <stop url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>

<target name="catalina.sessions" description="View server information">
    <sessions url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>

<target name="catalina.list" description="List web applications">
    <list url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>

<target name="catalina.serverinfo" description="View server information">
    <serverinfo url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>

<target name="catalina.roles" description="View server information">
    <roles url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>

<target name="catalina.resources" description="View server information">
    <resources url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>

디플로이 태스크를 자세히 살펴보죠.

<deploy url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" config="${application.context}" update="true" />

config 속성에 애플리케이션의 컨텍스트 설정 파일의 위치를 입력하는데요..
config 속성 대신에 war 속성을 써서 애플리케이션 war 파일의 위치를 입력할 수도 있어요.
두 속성은 반드시 어느 하나만 써야해요. 안 그러면 에러날 걸~?

톰캣의 앤트태스크를 이용하면 애플리케이션을 디플로이하는 것 뿐만 아니라 웹 어플리케이션의 목록을 보는 것, 애플리케이션을 실행하거나 중지하는 것 등등의 작업을 앤트로 할 수가 있어요. 이게 다 톰캣 개발자들이 앤트 태스크를 쓰기 좋게 만들어둔 덕분이죠. 감사감사 ^^*

보면 볼수록 앤트는 멋진 것 같아요.

환경:
Tomcat 5.0 or 5.5
Ant 1.7.0

  1. ${무언가} 는 변수를 뜻해요! [본문으로]
  2. 톰캣의 설치 경로에요. [본문으로]
  3. 태스크 정의 파일 이름 [본문으로]
  4. manager 권한이 있는 사용자 이름과 암호 [본문으로]
  5. 샘플 어플리케이션 경로 [본문으로]
  6. sample 어플리케이션 컨텍스트 파일 이름 [본문으로]
  7. 샘플 어플리케이션 디플로이 경로 [본문으로]
Trackback 0 Comment 0
2008/05/26 09:26

스프링(Spring)에서 Log4j 설정 파일 위치를 바꿔 보아요.

스프링(Spring)에서는 Log4j 설정 파일(log4j.properties)을 임의의 파일로 지정할 수 있어요.
웹 어플리케이션이라면 다음과 같이 하면 돼요.

web.xml <web-app> 의 적당한 부분(DTD 혹은 스키마에 의거하여)에 다음 내용을 넣어주면 돼요.

<context-param>
	<param-name>log4jConfigLocation</param-name>
	<param-value>/WEB-INF/config/log4j.properties</param-value>
</context-param>

<listener>
	<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>


환경:
    Servlet 2.3, 2.4
    Spring 1.x, 2.0, 2.5

Trackback 0 Comment 0
2008/05/26 09:10

웹 어플리케이션에서 jsp 파일의 직접 호출을 막아보아요.

한  가지 방법으로는 WEB-INF 밑에 jsp 파일을 두는 것인데요..

그 방법이 여의치 않을 때 사용할 수 있는 방법이 있어요.

web.xml <web-app>
의 적당한 부분(DTD 혹은 스키마에 의거하여)에 다음 내용을 넣어주면 돼요.

<security-constraint> 
	<web-resource-collection> 
		<web-resource-name>no_access</web-resource-name> 
		<url-pattern>*.jsp</url-pattern> 
	</web-resource-collection> 
</security-constraint>


환경:
    Servlet 2.3 혹은 Servlet 2.4

Trackback 0 Comment 0
2008/05/25 18:32

톰캣(Tomcat)의 컨텍스트(Context) 파일로 웹 어플리케이션을 추가해 보아요.

${CATALINA_HOME}/conf/Catalina/localhost 에 다음과 같은 내용의 XML 파일을 추가하면 웹 어플리케이션이 설치가 돼요.

<context path="/WEB_APP_PATH" docbase="WEB_APP_DIRECTORY" debug="0" privileged="true" reloadable="true" workdir="WORK_DIRECTORY">
	<logger classname="org.apache.catalina.logger.FileLogger" prefix="LOG_FILE_PREFIX" suffix="LOG_FILE_SUFFIX" timestamp="true" />
</context>


realodable : WEB-INF 내용이 바뀌었을 때 자동으로 reload 하는 옵션
workDir : jsp 등의 파일이 컴파일되는 작업 디렉토리 지정

예를 들면, 다음과 같이 할 수 있어요.

<context path="/test" docbase="D:\Project\Test\Deploy" debug="0" privileged="true" reloadable="true" workdir="D:\Project\Test\Work">
	<logger classname="org.apache.catalina.logger.FileLogger" prefix="localhost.test." suffix=".log" timestamp="true" />
</context>


환경:
    Apache Tomcat 5.0

Trackback 0 Comment 0