'tomcat'에 해당되는 글 12건

  1. 2016.09.19 [Tomcat] Spring framework 사용 시 중복 실행 이슈
  2. 2016.03.24 [Intellij] Intellij + SpringMVC + Tomcat
  3. 2014.02.12 [eclipse] tomcat 실행 시 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 에러 (1)
  4. 2013.09.11 [Tomcat] Tomcat 전용 WAS 서버설정.(server.xml]
  5. 2012.11.14 solr + tomcat 연동 시 admin 에서 한글 검색 이슈
  6. 2012.10.24 Tomcat 에서 IP Restriction 하기.
  7. 2012.04.10 Tomcat 관련 Articles.
  8. 2012.03.21 apache, tomcat 링크모음.
  9. 2012.02.28 Tomcat lb 를 이용해서 Weighted 구현하기.
  10. 2012.02.28 Tomcat 6.0.35 Session Clustering

[Tomcat] Spring framework 사용 시 중복 실행 이슈

ITWeb/개발일반 2016.09.19 11:08

tomcat + spring 을 사용하면서 startup.sh 를 이용해서 실행 후 로그를 확인해 보면 두 번 실행(로딩) 되는 모습을 확인 할 때가 있습니다.


이렇게 두 번 실행이 될 경우 예상하지 못했던 문제를 가끔 경험 하게 되는데요.

아래와 같이 tomcat 의 server.xml 수정을 통해서 한 번만 실행 되도록 처리 할 수 있습니다.


기존 두 번 실행 되던 server.xml)

    <Engine name="Catalina" defaultHost="localhost">

      <Host name="localhost"  appBase="webapps"

            unpackWARs="false" autoDeploy="false">

        <Context docBase="web-service" path="/" reloadable="false" />

      </Host>

    </Engine>



수정된 server.xml)

    <Engine name="Catalina" defaultHost="localhost">

      <Host name="localhost"  appBase="webapps/web-service"

            unpackWARs="false" autoDeploy="false">

        <Context docBase="" path="/" reloadable="false" />

      </Host>

    </Engine>


그냥 별건 아니지만 scheduler 같은 컴포넌트를 사용하시는 경우 중복 실행이 될 수 있기 때문에 공유해 봅니다.

저작자 표시 비영리 변경 금지
신고
Trackback 0 : Comment 0

[Intellij] Intellij + SpringMVC + Tomcat

ITWeb/개발일반 2016.03.24 17:29

요즘 한참 web 개발을 안하다 보니 까먹고 산다고나 할까요.

그래서 기억을 돕기 위해 기록 합니다.


프로젝트 생성)

Intellij -> File -> New -> Project -> Maven -> maven-archetype-webapp


Spring MVC 추가)

Current Project -> Mouse Right Click -> Add Framework Support -> Spring MVC


Tomcat 연동)

연동 전에 다운로드를 먼저 받아 놓아야 합니다.

Run -> Edit Configures -> + -> Tomcat Server -> local -> Name 등록


실행은 그냥 Run 으로 등록한 Name 실행 하면 됩니다.


여기서 재밌는 사실 하나!

controller 만들고 jsp 만들어서 "Hello World" 변수 넘겨줘서 찍어 보면 동작 하지 않는 문제가 있습니다.

이것은 바로 servlet-api 의 version 문제 인데요.


위와 같이 spring mvc 프로젝트 생성 하시면 web.xml 에 아래와 같이 선언 됩니다.

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>


보이시죠 servlet-api 가 2.3 입니다.

근데 제가 선언한건 2.5 ㅡ.ㅡ;

이럴 경우 화면에 변수 출력이 정상적으로 되지 않고 그냥 ${message} 와 같이 출력이 됩니다.

그래서 아래와 같이 수정했습니다.


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

참 별거 아니지만 모르면 별거가 되는 것이고 알면 별거 아닌게 되고 그렇죠. ^^


저작자 표시 비영리 변경 금지
신고
Trackback 0 : Comment 0

[eclipse] tomcat 실행 시 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 에러

ITWeb/개발일반 2014.02.12 11:14

eclipse 에서 spring mvc 프로젝트 생성하고 tomcat 등록 후 바로 실행 하면 아래와 같은 에러가 발생 할 때가 있습니다.

뭐 다들 아시는 내용이겠지만 기억력을 돕기 위해 기록을 남겨 보도록 하겠습니다.


1. 생성한 프로젝트의 properties  창을엽니다. ( alt + f + enter )

2. Deployment Assembly 를 선택 합니다.

3. 오른쪽 위 Add 버튼을 클릭 합니다.

4. Java Build Path Entries  선택 후 Next 버튼 클릭 합니다.

5. Maven Dependencies  선택 후 Finish 버튼 클릭 합니다.

6. Properties 창 오른쪽 하단의 Apply 버튼 클릭 합니다.

7. Properties 창 오른쪽 하단의 OK 버튼 클릭 후 tomcat 재실행을 해봅니다.



이렇게 하시면 정상적으로 동작 하게 됩니다.

뭐 원인은 빤하죠.

tomcat 에 해당 spring mvc 실행을 위한 class 가 포함이 안되서 그런 것이니 이와 같이 설정만 해주면 끝....


신고
tags : eclipse, Spring, tomcat
Trackback 0 : Comment 1

[Tomcat] Tomcat 전용 WAS 서버설정.(server.xml]

ITWeb/개발일반 2013.09.11 16:03

일반적인 default 설정 입니다.

tomcat 만 가지고 web application 을 서비스 할때 사용하면 됩니다.

기타 설정 값들은 서비스 특징에 맞춰서 수정 하시면 되겠습니다. (리스너도 필요 없으면 빼도 되겠죠..)


<?xml version='1.0' encoding='utf-8'?>

<Server port="8005" shutdown="SHUTDOWN">

  <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>

  <Listener className="org.apache.catalina.core.JasperListener"/>

  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>

  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>

  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>


    <Service name="Catalina">

        <Connector port="8080"

                enableLookups="false"

                protocol="HTTP/1.1"

                URIEncoding="UTF-8"

                compression="on"

                connectionTimeout="5000"

                disableUploadTimeout="false"

                maxHttpHeaderSize="8192"

                maxSpareThreads="75"

                maxThreads="1024"

                minSpareThreads="25" />


    <Engine name="Catalina" defaultHost="localhost">

        <Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">

        <Context docBase="proxy" path="/" reloadable="true" />

      </Host>

    </Engine>

  </Service>

</Server>


간혹 tomcat 실행 시 manager, host-manager 어쩌구가 없다고 에러 던지면

- tomcat/conf/Catalina 디렉토리를 날려 주세요.


신고
tags : server.xml, tomcat
Trackback 0 : Comment 0

solr + tomcat 연동 시 admin 에서 한글 검색 이슈

Elastic/Elasticsearch 2012.11.14 15:50

solr + tomcat 연동은 이미 이전 글에 있습니다.
solr 로 검색해 보시면 되구요.

tomcat 기본설치 후 solr admin 에서 한글이 깨지지 않게 하려면 server.xml 에 아래 내용을 추가해 주셔야 합니다.

뭐 기본이니 다들 아시겠지만.. ^^;

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

            URIEncoding="UTF-8"

               redirectPort="8443" />

설정 후 재시작 하셔야 합니다. ㅎㅎ

신고
tags : solr, tomcat
Trackback 0 : Comment 0

Tomcat 에서 IP Restriction 하기.

ITWeb/서버관리 2012.10.24 18:12

뭐 그다지 어렵지 않게 적용이 가능 하내요.


<Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost" appBase="webapps"
       unpackWARs="true" autoDeploy="false"
       xmlValidation="false" xmlNamespaceAware="false">

       <!-- IP Restriction -->
       <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="10\.101\.254\.\d+, 10\.67\.21\..*"/>

bold 체 처럼 넣으시면 됩니다.

신고

'ITWeb > 서버관리' 카테고리의 다른 글

맥북 단축키 URL  (0) 2013.04.01
proxy server 구성 및 wget proxy 설정  (0) 2013.01.07
Tomcat 에서 IP Restriction 하기.  (0) 2012.10.24
메일발송 시 리턴 에러 코드.  (0) 2012.08.30
netstat, lsof 로 port 확인하기.  (0) 2012.08.02
로그 관련된 오픈소스들..  (0) 2012.07.20
tags : ACL, tomcat
Trackback 0 : Comment 0

Tomcat 관련 Articles.

ITWeb/서버관리 2012.04.10 16:39

사이트에 잘 정리가 되어 있내요.
도움이 될 것 같아 bookmarking 해봅니다..

[원본링크]

[원본글]

Apache Tomcat Resource Center

This page provides free Apache Tomcat resources that will help you identify, troubleshoot, and resolve common problems with Apache Tomcat.

Apache Tomcat is the world's most widely used web application server, with over one million downloads per month and over 70% penetration in the enterprise datacenter. Tomcat is used to power everything from simple one server sites to large enterprise networks.

Tomcat Installation And Configuration

Apache Tomcat Performance

Tomcat How-To Guides

Apache Tomcat Components

Apache Tomcat In Development

More Tomcat Resources

Tomcat Monitoring and Administration

Apache Tomcat On Your OS

Tomcat Versions

Troubleshooting Tomcat

Improving Tomcat Security

Still haven't found what you are looking for? Visit our free email-based Tomcat support line!

신고

'ITWeb > 서버관리' 카테고리의 다른 글

SVN branching & merging by Eclipse.  (0) 2012.04.16
우분투에 SVN 설치하기.  (0) 2012.04.16
Tomcat 관련 Articles.  (0) 2012.04.10
How Email Works, MX Record  (0) 2012.04.10
nslookup 으로 MX Record 확인하기.  (0) 2012.04.10
Finding and testing your MX (mail) records  (0) 2012.04.10
tags : tomcat
Trackback 0 : Comment 0

apache, tomcat 링크모음.

ITWeb/서버관리 2012.03.21 16:11
자료 만들게 있어서 일단 링크만 쭈욱 모아 봅니다.. ㅎㅎ

신고

'ITWeb > 서버관리' 카테고리의 다른 글

Finding and testing your MX (mail) records  (0) 2012.04.10
[IBM] Overview mail server architecture ....  (0) 2012.04.05
apache, tomcat 링크모음.  (0) 2012.03.21
cygwin 패키지 설치/재설치 & SSH 설정  (0) 2012.03.07
cygwin 설치  (0) 2012.03.06
visudo nopasswd 설정하기.  (0) 2012.02.29
tags : httpd, tomcat
Trackback 0 : Comment 0

Tomcat lb 를 이용해서 Weighted 구현하기.

ITWeb/서버관리 2012.02.28 17:36
[Tomcat Load Balancer 로 Weighted 구현]

ps=/

#worker.list=tomcat1, tomcat2, loadBalancer

worker.list=loadBalancer


worker.tomcat1.port=8009

worker.tomcat1.host=10.67.8.113

worker.tomcat1.type=ajp13

worker.tomcat1.lbfactor=2   # tomcat1 이 2번


worker.tomcat2.port=8109

worker.tomcat2.host=10.67.8.113

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1   # tomcat2 가 1번 씩 번갈아 가면서 호출 됩니다.


worker.loadBalancer.type=lb

worker.loadBalancer.method=T

worker.loadBalancer.balance_workers=tomcat1,tomcat2

worker.loadBalancer.sticky_session=0



※ 이전에 작성한 글들 참고하세요.
http://jjeong.tistory.com/581 : httpd mod_proxy 를 이용한 load balancing
http://jjeong.tistory.com/580 : Tomcat Session Clustering

[참고정보]
http://tomcat.apache.org/connectors-doc/generic_howto/workers.html 
http://tomcat.apache.org/connectors-doc/reference/workers.html 

DirectiveDefaultDescription
balance_workers - A comma separated list of workers that the load balancer need to manage.

This directive can be used multiple times for the same load balancer.

This directive replaces old balanced_workers directive and can be used only with mod_jk versions 1.2.7 and up.

As long as these workers should only be used via the load balancer worker, there is no need to also put them into the worker.list property.

sticky_session True Specifies whether requests with SESSION ID's should be routed back to the same Tomcat worker. If sticky_session is set to True or 1sessions are sticky, otherwise sticky_session is set to False. Set sticky_session to False when Tomcat is using a Session Manager which can persist session data across multiple instances of Tomcat.
sticky_session_force False Specifies whether requests with SESSION ID's for workers that are in error state should be rejected. If sticky_session_force is set to True or1 and the worker that matches that SESSION ID is in error state, client will receive 500 (Server Error). If set to False or 0 failover on another worker will be issued with loosing client session. This directive is used only when you set sticky_session=True.

This feature has been added in jk 1.2.9.

method Request Specifies what method load balancer is using for electing the best worker. Please note, that session stickiness and perfect load balancing are conflicting targets, especially when the number of sessions is small, or the usage of sessions is extremely varying For huge numbers of sessions this usually is not a problem.

Some methods note, that they aggregate in a sliding time window. They add up accesses, and on each run of the global maintain method, the load counters get divided by 2. Usually this happens once a minute, depending on the setting of worker.maintain. The value of the load counters can be inspected using the status worker.

If method is set to R[equest] the balancer will use number of requests to find the best worker. Accesses will be distributed according to the lbfactor in a sliding time window. This is the default value and should be working well for most applications.

If method is set to S[ession] the balancer will use number of sessions to find the best worker. Accesses will be distributed according to the lbfactor in a sliding time window. Because the balancer does not keep any state, it actually does not know the number of sessions. Instead it counts each request without a session cookie or URL encoding as a new session. This method will neither know, when a session is being invalidated, nor will it correct its load numbers according to session timeouts or worker failover. This method should be used, if sessions are your limiting resource, e.g. when you only have limited memory and your sessions need a lot of memory.

If set to T[raffic] the balancer will use the network traffic between JK and Tomcat to find the best worker. Accesses will be distributed according to the lbfactor in a sliding time window. This method should be used, if network to and from the backends is your limiting resource.

If set to B[usyness] the balancer will pick the worker with the lowest current load, based on how many requests the worker is currently serving. This number is divided by the workers lbfactor, and the lowest value (least busy) worker is picked. This method is especially interesting, if your request take a long time to process, like for a download application.

This feature has been added in jk 1.2.9. The Session method has been added in jk 1.2.20.

lock Optimistic Specifies what lock method the load balancer will use for synchronising shared memory runtime data. If lock is set to O[ptimistic] balancer will not use shared memory lock to find the best worker. If set toP[essimistic] balancer will use shared memory lock. The balancer will work more accurately in case of Pessimistic locking, but can slow down the average response time.

This feature has been added in jk 1.2.13.

retries 2

This directive also exists for normal workers. For those it has adifferent meaning.

If the load balancer can not get a valid member worker or in case of failover, it will try again a number of times given by retries. Before each retry, it will make a pause define by retry_interval directive.

Until version 1.2.16 the default value was 3.

 
신고

'ITWeb > 서버관리' 카테고리의 다른 글

cygwin 설치  (0) 2012.03.06
visudo nopasswd 설정하기.  (0) 2012.02.29
Tomcat lb 를 이용해서 Weighted 구현하기.  (0) 2012.02.28
Tomcat 6.0.35 Session Clustering  (0) 2012.02.28
PHP 설치 on Windows.  (0) 2012.02.13
ldd - shared library 확인 command.  (0) 2011.11.02
Trackback 0 : Comment 0

Tomcat 6.0.35 Session Clustering

ITWeb/서버관리 2012.02.28 11:09
Tomcat 6.0.35 Session Clustering 


[준비사항]

- Apache 2.4.1 다운로드 받기 : http://httpd.apache.org/download.cgi#apache24

- Tomcat 6.0.35 다운로드 받기 : http://mirror.khlug.org/apache/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.zip

- Tomcat Connecter 다운로드 받기 : http://ftp.daum.net/apache//tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.32-src.zip

- 다운로드 링크가 깨졌다면 해당 사이트에 직접 다운로드 받으시면 됩니다.


[설치]

- Windows 에 설치 하는 것이기 때문에 대부분 압축만 푸시고 적당한 위치에 가져다 놓으시면 됩니다.
- 편의상 D:\Application\ 아래 놓도록 하겠습니다.
- 그 이외 자세한 설치 방법은 제 블로그 이전 글 참고 하시면 됩니다. (linux 버전이지만 참고 정도는 됩니다. ^^;)
- httpd 설치 : http://jjeong.tistory.com/421
- tomcat 설치 : http://jjeong.tistory.com/435
- tomcat connector 설치 : http://jjeong.tistory.com/433
- httpd+tomcat+jdk 연동 : http://jjeong.tistory.com/230

 
[설정]

- httpd 설정하기
httpd 가 설치된 경로에서 conf 폴더에 있는 httpd.conf 파일을 에디터창에서 수정.

# 이 설정에 주석을 제거해 줍니다.
# 이유는 httpd 의 proxy balancer 기능을 이용하기 위해서 입니다.
# tomcat 의 경우 기본 worker 설정에서 type 을 lb 로 지정해 주면 httpd 관계 없이 loadbalancer 기능을 이용 할 수 있습니다. 
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so

# 이 설정에 주석을 제거해 줍니다.
Include conf/extra/httpd-vhosts.conf

# 아래 파일을 include 해 줍니다.
Include D:/Application/httpd/conf/session-cluster/tomcat.conf

 
[httpd-vhost.conf 설정하기]

<VirtualHost dev.session-cluster.com:80>
    ServerAdmin jjeong@tistory.com
    DocumentRoot "D:\Application\httpd\htdocs\session_cluster\web"
    ServerName dev.session-cluster.com
    ServerAlias dev.session-cluster.com
    ErrorLog "D:\Application\httpd\logs\dev.session-cluster.com-error.log"
    CustomLog "D:\Application\httpd\logs\dev.session-cluster.com-access.log" common
jkMount /* loadBalancer
DirectoryIndex index.html index.jsp

<Directory "D:\Application\httpd\htdocs\session_cluster\web">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from All
</Directory>
</VirtualHost>

 
[tomcat.conf 설정하기]

LoadModule jk_module modules/mod_jk.so

JkWorkersFile            D:/Application/httpd/conf/session-cluster/workers.properties
JkShmFile               D:/Application/httpd/logs/mod_jk.shm
JkLogFile                D:/Application/httpd/logs/mod_jk.log
JkLogLevel               debug
JkLogStampFormat      "[%a %b %d %H:%M:%S %Y] "
JkRequestLogFormat   "%w %V %T"

 
[workers.properties 설정하기]

ps=/
worker.list=tomcat1, tomcat2, loadBalancer

worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1

worker.tomcat2.port=8109
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1

worker.loadBalancer.type=lb
worker.loadBalancer.balanced_workers=tomcat1,tomcat2
worker.loadBalancer.sticky_session=1

 
[Tomcat1 server.xml 설정하기]

- 파일을 열어 보시면 <Cluster /> 섹션이 있습니다.
- 주석 처리 되어 있는 부분을 해제 합니다.
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
- <Engine /> 섹션에 jvmRoute 코드 추가 합니다.
<Engine defaultHost="localhost" jvmRoute="tomcat1" name="Catalina">

이전 버전과 다른 점은 
previous : org.apache.catalina.cluster.tcp.SimpleTcpCluster
current : org.apache.catalina.ha.tcp.SimpleTcpCluster
해당 패키지의 경로 입니다.

 
[Tomcat2 server.xml 설정하기]

- Tomcat1 설정과 동일하게 주석을 제거 합니다.
- <Engine /> 섹션에 jvmRoute 코드 추가 합니다.
<Engine defaultHost="localhost" jvmRoute="tomcat2" name="Catalina">

 
[Tomcat1, Tomcat2 서버의 web.xml 설정하기]

- 설정 파일 제일 하단에 아래 코드 추가 합니다.
<distributable />

 
[Tomcat 설정 시 주의사항]

- 위 설정들은 PC 한 대에서 설정하는 내용으로 기술을 하였습니다.
- 각 port 충돌이 발생 하지 않도록 주의 하시기 바랍니다.

 
[Tomcat1 서버의 index.jsp]

<%
  session.setAttribute("a","a");
%>
<html>
<head>
<title>Test JSP</title>
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="#CCCCCC">
    <td width="13%">Tomcat1 Machine</td>
    <td width="87%">&nbsp;</td>
  </tr>
  <tr>
    <td>Session ID :</td>
    <td><%=session.getId()%></td>
  </tr>
</table>
</body>
</html>


 
 
[Tomcat2 서버의 index.jsp]

<%
  session.setAttribute("a","a");
%>
<html>
<head>
<title>Test JSP</title>
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="#CCCCCC">
    <td width="13%">Tomcat2 Machine</td>
    <td width="87%">&nbsp;</td>
  </tr>
  <tr>
    <td>Session ID :</td>
    <td><%=session.getId()%></td>
  </tr>
</table>
</body>
</html>




Eclipse 에서 Tomcat1, 2 를 번갈아 가면서 start, stop 해 보시면 lb 동작 하는걸 확인 하실 수 있습니다.
그리고 session 유지 되는 것도 확인 가능 합니다.
 
[Eclipse 에서 Tomcat 서버 등록 및 실행하기]

- Server 창에서 New -> Server -> Apache -> Tomcat v6.0 Server 선택
- Server name 에 Tomcat Session Cluster 1 이라고 작성
- Next 버튼 클릭 또는 Server runtime environment 에서 Add 클릭
- Browse 버튼 클릭 후 설치된 Tomcat1 서버의 경로를 지정 합니다.
- 이런 방식으로 Tomcat2 서버도 등록을 합니다.


 

[참고사이트]
http://www.easywayserver.com/implementation-tomcat-clustering.htm
http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html


※ 위 내용은 성능 튜닝을 고려하지 않은 내용입니다.
실제 서비스에 적용하시기 전에 충분한 튜닝 과정을 거치시기 바랍니다.

※ 서버 한대를 기준으로 설정한 내용입니다.
서버 여러대를 묶기 위해서는 <Cluster /> 섹션에 추가 설정을 해줘야 합니다.
이 부분은 추후 작성 업데이트 하겠습니다.  

 
신고
Trackback 0 : Comment 0