'JSP/JspServlet'에 해당되는 글 22건

  1. 2013.07.25 getParameterValues 처리
  2. 2013.07.25 아파치 톰캣 연동 & 이유
2013. 7. 25. 17:11


<%
    String hobby = "";
    String[] h = request.getParameterValues("hobby");
 
    if(h!=null)
    {
        for(String s:h){
            hobby+=s+", ";
        }
 
        hobby = hobby.substring(0, hobby.lastIndexOf(", ")); //마지막 쉼표 제거
    }
    String bigo = request.getParameter("bigo"); //취미1, 취미2, 취미3
 
    //
으로 입력받은 문자열의 공백과 개행을 태그로 변환 bigo = bigo.replaceAll("\n", "
"); //엔터 -> 태그 bigo = bigo.replaceAll(" ", " "); //공백 -> 태그 %>


'JSP > JspServlet' 카테고리의 다른 글

JSP 개요  (0) 2013.07.29
연산자 검색  (0) 2013.07.29
달력  (0) 2013.07.29
MVC2 구현예제  (0) 2013.07.29
아파치 톰캣 연동 & 이유  (0) 2013.07.25
Posted by 1+1은?
2013. 7. 25. 17:10

아파치와 톰캣 연동 이유

 

 성능상의 이유

 

JSP/Servlet Engine 상에서 동작하는 Servlet이나 JSP라는, (동일한 HTTP Request를 보내도 매 번 그 결과가 다를 수 있는) 동적인 HTTP Response를 생성해 보내는 것들입니다. 

그에 비해 단순한 HTML 문서, image, CSS(Cascading Style Sheet), Javascript file은 거의 변할일이 없는 (동일한 HTTP Request를 보내면 그 결과가 늘 같은)정적 contents입니다.

 이런 정적 contents는 통상적으로 Web Server가 JSP/Servlet Engine보다 더 빠르게 service합니다.

결국 정적 content는 정적 contents 처리에 강한 Web Server가 처리하고, 동적 contents는 JSP/Servlet Engine이 맡는 것입니다. 일단 HTTP Request를 Web Server가 먼저 받아보고 정적 contents를 요구하면 자신이 처리하고, 동적 contents request라면 이 request를 JSP/Servlet Engine에게 넘기죠. 

아니면 특정 URL pattern이 들어오면 JSP/Servlet Engine으로 넘기는 방법도 있습니다.

 결국 이렇게 하면 부수적으로 동적 contents 생성하느라 바쁜 JSP/Servlet Engine에 부하를 덜 줄 수 있고 정적 contents service하느라 귀중한 JVM Heap을 아낄 수 있는 이점도 누릴 수 있습니다.

 

보안상의 이유

 

보통 JSP/Servlet Engine은 중요한 업무 절차에 대한 구현을 가지고 있게 마련입니다.

단순한 image, CSS 같은 정적 contents를 담은 Web Server보다 더 안전하게 보호해야 한다는 뜻이 됩니다.

보통 어떤 기업 같은 조직의 network를 구성할 경우 외부 network와 조직의 network를 방화벽(firewall)으로 단절시키고 방화벽에 규칙(rule)을 등록, IP packet이 제한적으로만 그 방화벽을 넘다들 수 있도록 합니다.

 안전성이 더 높아야 하는 server들이 있는 network zone은 여기에 한 번 더 방화벽을 칩니다.

 그리고 이 두 방화벽 사이의 network zone을 DMZ라고 합니다.

이렇게 Web Server와 JSP/Servlet Engine을 따로따로 쓰면 DMZ에 덜 중요한 data를 가진 web server를 놓고 이중 방화벽 뒤에 있는 network zone에 JSP/Servlet Engine을 놓음으로써 높은 보안성을 획득하면서도 외부에 동적 contents를 제공할 수 있게 됩니다.

 

가용성 상의 이유

 

web server도 하나, JSP/Servlet Engine도 하나라면 둘 중 하나만 죽으면 정상적인 service가 불가능합니다. 

따라서 절대 멈추면 안되는 service(세계화가 되면서 이런 요구 사항은 더 늘었습니다. 지구 상 어딘가는 늘 업무 시간이니까요)를 담당하는 web server, JSP/Servlet Engine은 두 개 이상을 가동하는 이중화를 적용합니다.

web server가 어떤 HTTP Request를 받아 이를 JSP/Servlet Engine으로 넘기려 할 때 그 JSP/Servlet Engine이 이중화가 되어 있다면 web server는 이 request를 좀 한가한 JSP/Servlet Engine에 넘긴다던지 할 수 있습니다(물론 실제로는 간단하게는 round robin부터 시작해서 이에 대한 여러가지 방법이 있습니다).

 내지는 JSP/Servlet Engine 중 하나가 비정상적으로 종료한 상태이면 현재 살아 있는 JSP/Servlet Engine에게 이 request 처리를 위임, 전반적인 service 중단을 막을 수 있습니다.

 

 

시작전 준비

 
1.  http://www.apache.org/ 에 접속한뒤 Download를 클릭.

 

2. 미러사이트로 접속합니다.

 

 

3. /httpd/binaries/win32 폴더로 들어가 httpd-2.2.22-win32-x86-no_ssl.msi를 다운로드하고, 설치합니다.

 

 

4. http://tomcat.apache.org/ 에 접속한뒤, Download에 있는 Tomcat 7.0을 클릭합니다.

 

 

5. 32-bit/64-bit Windows Service Installer를 클릭하여 다운로드하고 설치합니다.

tomcat-connectors-1.2.37-windows-i386-httpd-2.2.x.zip


apache-tomcat-7.0.41.exe


httpd-2.2.21-win32-x86-no_ssl.msi


time.jsp


server.xml


workers.properties


mod_jk.conf


 

 

 

Apache2.2와 Tomcat 7.0 연동하기

 

 1. Apache와 Tomcat을 연동하려면 Tomcat Connectors(mod_jk)가 필요.

http://tomcat.apache.org/download-connectors.cgi 에서 다운로드 하거나, 첨부파일에 있는것을 사용. 

 

위의 첨부파일의 압축을 풀고 mod_jk.so 를 Apache가 설치된 곳에 있는 modules에 복사.

(Windows x64 : C:\Program Files (x86)\Apache Software Foundation\Apache2.2\modules)

 

2. Apache2.2\conf\httpd.conf를 수정.

DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs" 부분을 DocumentRoot "C:/Server" 로 변경.

(C:\Server 폴더를 생성)

<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"> 부분을 <Directory "C:/Server">로 변경.

※ 이제 C:\Server가 작업 폴더.

 

LoadModule jk_module modules/mod_jk.so

# mod_jk.conf

Include conf/mod_jk.conf

 

도 추가하고 저장.

(만약 접속한 경로에 있는 index.jsp를 자동으로 실행하게 하고 싶다면 <IfModule dir_module>의 DirectoryIndex 부분에 index.jsp를 추가)

 

3. Apache2.2\conf에 mod_jk.conf 를 생성하고 아래와 같이 입력.

 


JkWorkersFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/workers.properties"
JkLogFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/mod_jk.log"
JkLogLevel error
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkRequestLogFormat "%w %V %T"
JkMount /* ajp13
JkMount /*.jsp ajp13
JkMount /*.do ajp13
JkMount /servlet/* ajp13
JkMount /url ajp13
JkMount /dita/j_spring_security* ajp13
JkMount /ppspwc/j_spring_security* ajp13
JkMount /mmea/j_spring_security* ajp13
JkMount /irtv/j_spring_security* ajp13


 

4. Apache2.2\conf에 workers.properties를 생성하고 아래와 같이 입력.

 



# workers.tomcat_home에는 Tomcat이 설치된 경로를 입력.
workers.tomcat_home=C:/Program Files/Apache Software Foundation/Tomcat 7.0
# workers.java_home에는 JDK가 설치된 경로를 입력.
workers.java_home=C:/Program Files/Java/jdk1.6.0_45
ps=/ 
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
worker.inprocess.cmd_line=start
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stder


 

5. 이제 Tomcat이 설치된 폴더에 있는 conf 폴더로 이동. 

(C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf)

conf 폴더에 있는 server.xml 파일을 수정.

 

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

<Host name="localhost"  appBase="C:/Server" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">로 변경하고, </Host> 앞에

<Context path="/" docBase="C:/Server" unpackWARs="true" debug="g" reloadble="true" xmlValidation="false" xmlNamespaceAware="false" crossContext="true"></Context>를 추가합니다.

 

6. Apache와 Tomcat을 리셋.

C:\Server 폴더안에 time.jsp 파일을 만들고 아래와 같이 작성.

 time.jsp


<%@ page contentType="text/html; charset=utf-8" %>

<%@ page import="java.util.Date" %>

<%Date now = new Date();%>

 

<html>

<body>

<%= now %>

</body>

</html>

 

7. http://localhost/time.jsp 에 접속.

 



'JSP > JspServlet' 카테고리의 다른 글

JSP 개요  (0) 2013.07.29
연산자 검색  (0) 2013.07.29
달력  (0) 2013.07.29
MVC2 구현예제  (0) 2013.07.29
getParameterValues 처리  (0) 2013.07.25
Posted by 1+1은?