'2008/05'에 해당되는 글 18건

  1. 2008/05/27 우분투 8.04에서 톰캣을 설치해 보아요.
  2. 2008/05/26 아이바티스(iBatis)에서 자동 증가하는 필드를 사용해 보아요.
  3. 2008/05/26 오라클(Oracle)에서 삭제된 오브젝트들이 아직 남아있다면..
  4. 2008/05/26 스프링(Spring)으로 스태틱(static) 멤버 변수를 설정해 보아요.
  5. 2008/05/26 스프링(Spring)에서 프로퍼티 파일(.properties)을 사용해 보아요.
  6. 2008/05/26 스프링(Spring)에서 Log4j 설정 파일 위치를 바꿔 보아요.
  7. 2008/05/26 웹 어플리케이션에서 jsp 파일의 직접 호출을 막아보아요.
  8. 2008/05/25 톰캣(Tomcat)의 컨텍스트(Context) 파일로 웹 어플리케이션을 추가해 보아요.
  9. 2008/05/25 Axis WSDD 레퍼런스
  10. 2008/05/25 웹 페이지를 자동으로 리프레시하게 해보아요.
2008/05/27 00:41

우분투 8.04에서 톰캣을 설치해 보아요.

자바부터 설치해야죠.

오픈 소스 기반인 OpenJDK를 한번 써보아요.
JDK 6.0 버전이기는 한데.. 나중에 잘 안 되면 sun 자바로 바꾸면 되죠. ^^

sudo apt-get install openjdk-6-jdk

오오.. 앤트(ant)까지 깔리는군요. +_+

톰캣 5.5를 설치해 보아요.

JAVA_HOME 환경변수가 필요하네요.

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

다음 패키지들을 설치하면 돼요.

sudo apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps

만약 다음과 같은 메시지가 중간에 나오면서 에러가 나면..

* no JDK found - please set JAVA_HOME

이렇게 해야 해요.

sudo -E apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps

-E 옵션을 사용하면 현재 쉘의 환경변수를 넘겨주네요.

톰캣이 시작될 때에도 JAVA_HOME 환경변수가 필요하므로, 실행스크립트를 수정해야 해요.

vi /etc/init.d/tomcat5.5

앞부분에 다음 라인을 추가하면 돼요.

JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

아파치 2.2와 톰캣을 연동해 보자.

우선 아파치 2.2의 mod_jk 모듈부터 설치해야 해요.

sudo apt-get install libapache2-mod-jk

mod_jk의 설정 파일을 만들어 주어야 해요.

sudo vi /etc/apache2/mods-available/jk.conf

<ifmodule jk_module>
	JkWorkersFile /etc/apache2/jk/workers.properties
	JkShmFile /var/log/apache2/jk.shm
	JkLogFile /var/log/apache2/jk.log
	JkLogLevel info
	JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
	JkRequestLogFormat "%w %V %T"
</ifmodule>


mod_jk의 worker 설정 파일도 만들어 주어요.

sudo mkdir /etc/apache2/jk
sudo vi /etc/apache2/jk/workers.properties

다음 내용을 넣어 주어요.

worker.list=worker1

worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300

mod_jk 설정 파일과 worker의 이름이 같아야 해요.

mod_jk 모듈을 사용 가능하게 해 주어야 해요.

sudo a2enmod jk

혹시 이미 mod_jk 모듈이 사용 가능한 상태라면 다음과 같이 해줘야 해요.

sudo a2dismod jk
sudo a2enmod jk

아파치 설정도 수정해야겠죠.

sudo vi /etc/apache2/sites-available/ssl

/etc/apache2/sites-available/ssl은 기존에 존재하지 않는 파일이에요.
저는 모든 접속을 https://로 접근하게 하려고 ssl 사이트를 따로 만들어 주었어요.
아파치 설정에 의문점이 있다면 "우분투 8.04에서 아파치 2.2를 설치해 보아요."를 참고하세요.

다음 내용을 적당한 곳에 추가해 주어요.

<ifmodule jk_module>
	DocumentRoot /usr/share/tomcat5.5-webapps/ROOT/
	
	<directory /usr/share/tomcat5.5-webapps/root>
		AllowOverride None
		Order allow,deny
		allow from all
	</directory>
	
	JkMount / worker1
	JkMount /index.jsp worker1
	JkMount /manager/* worker1
	JkUnMount /*.gif worker1
	JkUnMount /*.jpg worker1
	JkUnMount /*.png worker1
	JkUnMount /*.xml worker1
	JkUnMount /*.xsd worker1
	JkUnMount /*.xsl worker1
	
	Alias /manager "/usr/share/tomcat5.5/server/webapps/manager"
	Alias /tomcat-docs "/usr/share/tomcat5.5-webapps/tomcat-docs"
	
	<directory /usr/share/tomcat5.5/server/webapps/manager>
		AllowOverride None
		Order allow,deny
		Allow from all
	</directory>
	
	<directory /usr/share/tomcat5.5-webapps/tomcat-docs>
		AllowOverride None
		Order allow,deny
		Allow from all
	</directory>
</ifmodule>


DocumentRoot가 이미 선언되어 있으면 그 뒤에 붙여넣어야 제대로 동작하겠죠?

그리고 ROOT 웹 어플리케이션을 연결해 주기위해 "/""/index.jsp" 에 대해서도 설정해 주었는데요.. ROOT 웹 어플리케이션의 내용이 바뀌게 되면 바꿔주어야 할 것 같아요. 임시방편일 뿐이죠.

결국 왠만하면 / 디렉토리는 톰캣으로 넘기지 않는 것이 상책인 것 같아요.

톰캣과 아파치를 재시작해 주면 끝이에요. ^^

sudo /etc/init.d/tomcat5.5 restart
sudo apache2ctl restart

아직 아파치와 mod_jk에 대하여 자세하게 알지 못해서 미흡하네요.
앞으로 천천히 내용을 보강해 나가야 겠어요.

환경:
    Ubuntu 8.04 Hardy Heron Server Edition - x86


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

아이바티스(iBatis)에서 자동 증가하는 필드를 사용해 보아요.

iBatis에서 숫자로 된 ID와 같이 1씩 증가하는 필드를 사용하는 방법이에요.

MySQL - AUTO_INCREMENT 필드를 사용합니다.

<insert id="insertEvent" parameterclass="event">
	<![CDATA[
		insert into event ( type, extension ) values ( #type#, #extension# )
	]]> 
	<selectkey resultclass="long" keyproperty="id">
		<![CDATA[
			select last_insert_id() as id
		]]>
	</selectkey>
</insert>


Oracle - Sequence 오브젝트를 사용합니다.

<insert id="capture" parameterclass="event">
	<selectkey resultclass="long" keyproperty="id">
		<![CDATA[
			select event_seq.nextval from dual
		]]>
	</selectkey>
	<![CDATA[
		insert into event ( type, id, extension ) values ( #type#, #id#, #extension# )
	]]>
</insert>


이전에 작성해 놓고 새로 테스트를 안 해봐서 잘 될지 잘 모르겠네요.

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

오라클(Oracle)에서 삭제된 오브젝트들이 아직 남아있다면..

오라클(Oracle)에서 테이블  삭제 후 쓰레기 값이 남는다면..

purge recyclebin;

으로 없앨 수 있다.

환경:
    Oracle 8i 이상 (maybe..)

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

스프링(Spring)으로 스태틱(static) 멤버 변수를 설정해 보아요.

다음과 같은 자바 클래스가 있어요.

생성자가 private을 잘 봐주세요.

package net.kjunine.blog.common.util ;

import net.kjunine.blog.biz.BlogIF ;

public class ServiceLocator {

	private static BlogIF blog ;

	private ServiceLocator() {
	}

	public static BlogIF service() {
		return blog ;
	}

	public BlogIF getBlog() {
		return blog ;
	}

	public void setBlog(BlogIF blog) {
		ServiceLocator.blog = blog ;
	}

}


스프링 설정 파일에는 다음과 같이 작성해요.

<bean id="serviceLocator" class="net.kjunine.blog.common.util.ServiceLocator">
	<property name="blog" ref="blog" />
</bean>


신기하게도 스프링은 생성자가 private 이더라도 Bean을 생성할 수 있어요.

어떻게? ㅋ (자바 리플렉션으로 이렇게까지 할 수 있는 걸까요?)

...

아무튼 이런 곳에서 스프링의 위력이 드러나는군요..

환경:
    Spring 1.x, 2.0, 2.5 (사실 2.5에서는 테스트해보지 않았음.)

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

스프링(Spring)에서 프로퍼티 파일(.properties)을 사용해 보아요.

스프링(Spring)에서 하나의 properties 파일을 읽어오는 방법

스프링 설정 파일(applicationContext.xml)에 다음 내용을 추가하면 돼요.

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	<property name="location" value="/WEB-INF/config/jdbc.properties" />
</bean>


스프링(Spring)에서 여러 properties 파일을 읽어오는 방법

스프링 설정 파일(applicationContext.xml)에 다음 내용을 추가하면 돼요.

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	<property name="locations">
		<list>
			<value>/WEB-INF/config/jdbc.properties</value>
			<value>/WEB-INF/config/settings.properties</value>
		</list>
	</property>
</bean>


환경:
    Spring 1.x, 2.0, 2.5

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
2008/05/25 18:19

Axis WSDD 레퍼런스

Axis WSDD Referenz

http://www.oio.de/axis-wsdd/

Axis 홈페이지보다도 더 자세한 WSDD 레퍼런스 +_+
근데 어느나라껄까요? ㅎㅎ

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

웹 페이지를 자동으로 리프레시하게 해보아요.

간단한 것이지만 종종 찾게 되는 것이라서 정리해 두어요..

다음과 같은 메타 태그를 HTML의 <head></head> 안에 추가시키면 돼요.

<meta http-equiv="refresh" content="시간지정; url=경로/파일명" />


예를 들면..
다음 내용을 index.jsp나 index.html에 저장해 두면..
index.do를 명시하지 않더라도 바로 가도록 할 수 있어요.

<metal http-equiv="refresh" content="0; url=index.do" />


Trackback 0 Comment 0