'tomcat'에 해당되는 글 13건

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

[Spring Framework] SpringMVC + Gradle 템플릿 + Tomcat 연동

ITWeb/개발일반 2018.05.02 18:33

매니저 역할을 오래 하다 보면 개발 감각이 떨어 지는건 어쩔수 없는 일인 것 같습니다.

SpringMVC 를 이용한 기본 웹 개발도 이제는 거북이 수준이 되어 가고 있는 것 같아 잊지 않기 위해 기록해 봅니다.


요즘 워낙 좋은 Tool, IDE 들이 많이 나와 있고. Git 검색만 해봐도 찾던 소스가 너무나도 많이 나옵니다.

아래는 Intellij community 버전을 이용해서 웹프로젝트 템플릿을 생성하는 예제 입니다.


각 단계별 코드별 설명은 작성 하지 않았습니다.

이유는 여긴 제가 그냥 혼자 기록하고 공부하는 공간이고, 누구를 가르치기에 너무 많은 무림고수 들이 계셔서 어쭙잖은 설명은 그냥 아래 레퍼런스로 대신 합니다.


References)

https://github.com/HowookJeong/springmvc-gradle-template

https://tomcat.apache.org/tomcat-9.0-doc/config/context.html

https://docs.spring.io/spring/docs/4.3.16.RELEASE/spring-framework-reference/htmlsingle/#spring-web


Step 1)

Intellij 를 실행 하고 매뉴에서 아래와 같이 선택을 합니다.


File -> New -> Project -> Gradle -> Java -> Next


GroupId -> org.project.web

ArtifactId -> springmvc-gradle-template

Next


Step 2)

SpringMVC Framework 틀을 만들기 위해 필요한 폴더와 파일들을 아래와 같이 생성을 합니다.


2-1) Community 버전으로는 gradle webapp 추가가 안되기 때문에 별도로 생성 합니다.

Make webapp directory

src/main/webapp


2-2) Make WEB-INF directory

src/main/webapps/WEB-INF

web.xml

dispatcher-servlet.xml


2-3) jsp template 사용을 위해서 WEB-INF 아래 jsp 폴더를 생성 합니다.

Make jsp directory

src/main/webapps/WEB-INF/jsp


2-4) Resource 구성을 합니다.

Make resources directory

src/main/resources/beans

bo-bean.xml

dao-bean.xml

src/main/resources/context

applicationContext.xml

applicationContext-mybatis.xml

src/main/resources/mybatis

config.xml

jdbc.properties

src/main/resources/sql

example.xml

log4j.xml


2-5) Package 구성을 합니다.

Make packages

org.project.web.bo

org.project.web.controllor

org.project.web.dao

org.project.web.model


여기까지 하셨으면 기본 empty project 생성은 끝났습니다.

이제 필요한 코드와 설정을 해보도록 하겠습니다.


Step 3)

이제 필요한 코드들을 생성해 보도록 하겠습니다.


3-1) web.xml 설정하기

더보기



3-2) dispatcher-servlet.xml 설정하기

더보기



3-3) log4j.xml 설정하기

더보기



3-4) mybatis/config.xml 설정하기

더보기



3-5) mybatis/jdbc.properties 설정하기

더보기



3-6) build.gradle 설정하기

더보기



이제 application 구현을 위한 코드 생성을 해보겠습니다.


3-7) controller/ExampleController

더보기


3-8) bo/ExampleBO

더보기


3-9) bo/ExampleBOImpl

더보기


3-10) dao/ExampleDAO

더보기


3-11dao/ExampleDAOImpl

더보기


3-12) model/ExampleModel

더보기



코드 구현을 했으니 이제 resources 설정을 하도록 하겠습니다.


3-13) beans/bo-bean.xml

더보기


3-14) beans/dao-bean.xml

더보기


3-15) context/applicationContext.xml

더보기


3-16) context/applicationContext-mybatis.xml

더보기


3-17) sql/example.xml

더보기


화면 구성을 위한 데코레이션으로 jsp 코드를 작성해 보겠습니다.


3-18) WEB-INF/jsp/exampleView.jsp

더보기


Trackback 0 : Comment 0

[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 체 처럼 넣으시면 됩니다.

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!

tags : tomcat
Trackback 0 : Comment 0

apache, tomcat 링크모음.

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

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.

 
Trackback 0 : Comment 0