[Tomcat] HTTP Status 500 - Error instanting servlet class

Tomcat 2014. 5. 28. 18:50

Tomcat실행후 아래와 같은 에러 발생

    HTTP Status 500 - Error instanting servlet class





01. 톰캣의 conf 폴더 안에있는 web.xml을 텍스트 편집기로 실행한다.





02. web.xml의 <servlet> 설정이 잘못되어 있어 발생한 에러로 경로를 맞게 수정해 주면 해결되는것을 확인 할 수 있다.









[Tomcat] 이클립스 Project를 톰캣 Project로 변환하기

Tomcat 2013. 5. 10. 11:45

※ 이 포스팅은 Tomcat-6.0.36 버전을 기준으로 작성하였기에 다른 버전과 차이가 있을 수 있다.

※ 설정을 맞추는 것만 찾다보니 원리는 잘 파악하지 못하였다.

※ 포스팅 하는 필자가 개발할때 사용하는 환경 세팅방법이기 때문에 다른 환경과 차이가 있을 수 있다.

※ 아래 포스팅 내용대로 작업을 원한다면 필자의 블로그에서 포스팅한

   [Tomcat] Tomcat 6.0 무설치 버전 세팅의 내용부터 현재 포스팅 까지 진행된

   Tomcat관련된 포스팅 내용을 숙지하고  현재 포스팅을 따라 수행할 것을 권한다.



01. 무설치 버전 Tomcat 파일의 압축을 해제한다.





02. 압축을 해제한 무설치 버전 톰캣 폴더의 이름을 원하는 값으로 변경한다.





03. 이클립에서 생성했던 원본 프로젝트의 WebContent 파일을

    방금 압축을 해제한 Tomcat 폴더로 복사하고.

    그 이름을 프로젝트 명으로 변경한다.





04. 복사한 WebContent 파일 안에 위치한 META-INF 파일을 삭제한다.





05. 복사한 WebContent 파일안에 위치한 WEB-INF 파일속으로

    이클립스 프로젝트의 src 폴더를 복사한다.






06. 마찬가지로 복사한 WebContent 파일안에 위치한 WEB-INF 파일속으로

    이클립스 프로젝트의 build 폴더 안에 위치한 classe 폴더를 복사한다.






07. 마찬가지로 이클립스 프로젝트의  .classpath, .project 파일도

    톰캣 프로젝트안에 복사하여 붙여 넣는다.






08. 복사한 .classpath 파일을 텍스트 편집기를 통하여 수정한다.






09. 아래 그림과 같이 src와 classes 폴더의 경로를 위 작업에서 수정한 경로로 바꾸어 준다.






10. 톰캣 프로젝트의 webapps 폴더를 삭제한다.






11. 톰캣 프로젝트의 bin 폴더에 위치한 startup.bat 파일을 텍스트 편집기로 수정한다.






12. 아래 그림과 같이 JDK의 설정 경로를 잡아준다.






13. 톰캣 프로젝트의 conf 폴더에 위치한 server.xml 파일을 텍스트 편집기로 수정한다.






14. 가장 먼저 포트를 원하는 숫자 4자리로 변경하고 UTF-8 설정을 추가한다.






15. appBase에서 webapps를 삭제하고 아래 내용을 추가한다.

    ※ 커넥션 풀의 내용이 존재하는 경우에는 servlet.xml에 기입한다.






16. 톰캣 프로젝트의 conf 폴더에 위치한 web.xml 파일을 텍스트 편집기로 수정한다.






17. 서블릿 invoker 관련 주석을 아래 그림과 같이 모두 제거합니다.







18. 톰캣 프로젝트의 conf 폴더에 위치한 context.xml 파일을 텍스트 편집기로 수정한다.







19. Context 부분에 reloadable, privileged 속성을 true로 부여한다.







20. servlet-api 파일을 JDK 설치경로에 위치한 lib 폴더로 이동시킨다.







21. 이클립스를 실행한다.







22. Project Explorer에서 마우스 오른 쪽 버튼을 클릭하고 톰캣 프로젝트를 Import 한다.







23. Import 팝업창이 뜨면 Browse 버튼을 클릭한다.






24 . General → Existing Projects into Workspace를 선택하고, Next를 클릭한다.







25. 톰캣프로젝트를 선택하고 확인 버튼을 클릭한다.







26. 위 순서대로 진행하면 다시 Import 팝업창에서 Finish를 클릭한다.







27. 그럼 톰캣 프로젝트가 이클립스 창에 바로 반영되는 것을 확인할 수 있다.






28. 이제 터미널을 열고 지정한 톰캣 프로젝트를 실행한다.






29. 웹브라우저를 열고 해당 프로젝트의 URL을 입력하면 정상작동됨을 확인 할 수 있다.








wickedbooks.zip


  • Chan 2013.05.11 21:44 ADDR 수정/삭제 답글

    잘보고 갑니다~ ^^ 좋은 자료가 참 많네요 정리가 너무 잘되있어서 보는게 너무 편해요 ㅋ

    • 사악미소 2013.05.13 10:02 신고 수정/삭제

      저도 공부를 하고 있는 입장이라.
      제가 일할때 쓸 프로젝트 설정법을 잘 기억하기위해 만든 자료일 뿐인데.
      그렇게 말씀해 주시니 감사합니다. ㅋㅋ

  • 무공 2013.11.06 18:15 ADDR 수정/삭제 답글

    아주 친절하게 정리해서 올려 놓으셨네요~ ^^
    덕분에 묵혀있던 숙제가 해결되겠네요~
    수고하셨어요~

[Tomcat] Tomcat 버전 변경시 이클립스 프로젝트 Error 해결 방법

Tomcat 2013. 5. 9. 18:24

※ Tomcat을 6.0에서 7.0으로 버전업을 한경우 Tomcat 6.0을 사용하는 프로젝트에서 에러가 발생한다.




01. Tomcat 버전업을 한경우 아래와 같이 프로젝트에서 해당 라이브러리(library)를 찾을 수 없어 Error가 발생한다.





02. 해당 프로젝트에서 마우스 오른쪽 버튼을 클릭한 후

     Build Path → Configure Build Path를 클릭한다.





03. Properties 창이 팝업되면 아래 순서대로 진행한다.

 ① Java Build Path를 선택한다.

 ② Libraries를 선택한다.

 ③ Add Library를 클릭한다.





04. Add Library 창이 팝업되면 아래 순서대로 진행한다.

 ① Server Runtime을 선택한다.

 ② Next를 클릭한다.





05. 아래 순서대로 진행한다.

 ① 변경할 버전을 선택한다.

 ② Finish를 클릭한다.





06. 이전화면으로 돌아오면 아래 순서대로 진행한다.

 ① 선택한 버전이 추가되어 있는지 확인한다.

 ② 추가되어 있다면 OK를 클릭한다.





07. 최종적으로 Error가 해결된 것을 확인할 수 있다.


[Tomcat] org.apache.catalina.LifecycleException 에러 대처방법

Tomcat 2013. 5. 9. 16:19

※ Tomcat을 6.0에서 7.0으로 버전업을 한경우 Tomcat 6.0을 사용중 해당 에러가 발생하였다.


 Error 내용

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
    at java.util.concurrent.FutureTask.get(FutureTask.java:83)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    ... 7 more
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig;
    at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1373)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1353)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5269)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 7 more
2013. 5. 9 오후 4:14:09 org.apache.catalina.core.ContainerBase startInternal
심각: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/test071]]
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
    at java.util.concurrent.FutureTask.get(FutureTask.java:83)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/test071]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    ... 7 more
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig;
    at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1373)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1353)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5269)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 7 more
2013. 5. 9 오후 4:14:09 org.apache.catalina.core.ContainerBase startInternal
심각: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
    at java.util.concurrent.FutureTask.get(FutureTask.java:83)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:684)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 7 more
2013. 5. 9 오후 4:14:09 org.apache.catalina.startup.Catalina start
심각: Catalina.start:
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:684)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 11 more
2013. 5. 9 오후 4:14:09 org.apache.catalina.startup.Catalina start
정보: Server startup in 774 ms





위와 비슷한 에러가 나는이유는 JDK의 lib 폴더에 위치한

servlet-api.jar 파일이 6.0버전에 맞는 구 버전이기 때문에

7.0을 설치하고 위한한 servlet-api.jar로 대치해 주어야 한다.




  • 2014.01.27 17:33 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 이젠 끝이다 2014.09.18 16:44 ADDR 수정/삭제 답글

    비슷한 문제 때문에 몇시간 동안 헤매고 있었는데 이제야 실마리를 좀 찾은 것 같네요... 결국 라이브러리 파일의 버젼 문제였군요...

    감사합니다.

  • Chu 2017.03.29 12:48 ADDR 수정/삭제 답글

    비슷한 에러로 tomcat의 servlet.api.jar을 jre설치 경로로 복붙했는데 같은 오류가 생기면 어떻게 해야하나요?

  • 우왕 2018.09.09 22:42 ADDR 수정/삭제 답글

    감사합니다 해결했습니다..

[Tomcat] Tomcat의 webapps폴더 이외의 경로에서 JSP&SERVLET 실행

Tomcat 2013. 5. 8. 20:49


※ 이 포스팅은 Tomcat-6.0.36 버전을 기준으로 작성하였기에 다른 버전과 차이가 있을 수 있다.

※ 설정을 맞추는 것만 찾다보니 원리는 잘 파악하지 못하였다.

        -. tomcat 실행시 java tools.jar 연결 및 docBase 설정 내용 참조

※ Context.xml은 이클립스에 탑재된 Tomcat에서 정상적으로 DB에 접근하는 파일을 사용해야 한다.

※ 이 포스팅 내용을 따라하에 앞서

        -. [Tomcat] Tomcat의 webapps폴더에서 JSP&SERVLET 실행 ①

        -. [Tomcat] Tomcat의 webapps폴더에서 JSP&SERVLET 실행 ②

        -. [Tomcat] Tomcat에서 커넥션풀 설정하기

    위 세개의 포스팅의 내용을 충분히 숙지하기를 바란다.



01.  webapps에 존재하는 프로젝트 하나를 Tomcat 설치폴더로 이동시킨다.




02. webapps 폴더는 삭제한다.




03. Tomcat 설치 폴더의 conf 폴더에 위치한 server.xml을 수정한다.




04. 위 내용을 아래와 같이 수정한다.

 server.xml(변경전)

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

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


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


        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->


      </Host>
    </Engine>
  </Service>
</Server>

 server.xml(변경후)

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

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       

        <!-- ① appBase 수정 -->

      <Host name="localhost"  appBase=""
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

     
        <!-- ② docBase 추가 -->

      <Context path="" docBase="bookshelf" reloadable="true" crossContext="false">


      <!-- 커넥션 풀 추가 -->
      <Resource name="jdbc/OracleDB"
         auth="Container"
         type="javax.sql.DataSource"
         factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
         maxActive="500"
         maxIdle="100"
         maxWait="10000"
         driverClassName="oracle.jdbc.driver.OracleDriver"
         defaultAutoCommit="false"
         username="scott"
         password="tiger"
         url="jdbc:oracle:thin:@localhost:1521:orcl" />
      </Context>


      </Host>
    </Engine>
  </Service>
</Server>

 설명

 ① appBase가 가리키던 webapps의 내용을 수정한다.

 ② 위 작업중 webapps 폴더에서 옮겨둔 프로젝트 폴더 명을 docBase에 지정한다.

 ③ 커넥션풀 설정이 있다면 위와같이 커넥션 설정을 입력한다.

 ※ 위주석의 한글내용은 *.xml 에 작성할 경우 Error가 발생함으로 실제 소스에서는 반드시 한글 주석을 제거한다.




※ 커넥션풀 설정

 -. [Tomcat] Tomcat에서 커넥션풀 설정하기 에서 설명한것과 마찬가지로 위에 지정한 커넥션 내용은

    Tomcat설치 폴더에서 conf → Catalina → localhost경로의 프로젝트명.xml 파일에 반영된다.

 -. [Tomcat] Tomcat에서 커넥션풀 설정하기 에서의 설명과 마찬가지로 server.xml의 커넥션풀 설정을 수정해도

     아래 위치한 프로젝트명.xml 파일을 직정 수정해야 한다.