Stas_Telnov
@Stas_Telnov

Запуск tomcat под Windows 7 x64

Здравствуйте. Итак, проблема. Для лабораторной, простого сервлета, необходимо запустить и проверить это дело на tomcat.
Собственно, я попробовал несколько разных версий сервера:
Tomcat 5.5.x
Tomcat 6.0.29 64-bit Windows
Tomcat 6.0.29 64-bit Itanium Windows
Tomcat 6.0.29 32-bit/64-bit Windows Service Installer

В принципе, сам tomcat запускается и на 80 порту локалхоста висит его страница приветствия.
Но лабораторная не запускается по url — 500 ошибка.
Я подозреваю что что-то не так с моей системой, а именно томкату не хватает библиотеки APR.
Все запуски самых разных версий томката начинаются с такой примерно ошибки:
21.12.2010 10:52:57 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\ant\bin\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\windows\system32
21.12.2010 10:52:57 org.apache.coyote.http11.Http11Protocol init

Далее вроде никаких ошибок не видно.

Пояндексив этот вопрос, я понял что вроде нужно эту самую библиотеку APR.
Но к сожалению где её взять, как установить и куда подключать, в сам томкат, в системные папки или ещё куда то яндексить времени нет, сессия на носу.

Просьба подсказать решение этой проблемы. Заранее огромное спасибо.

UPD
Собственно, сам томкат запускается через соотвествующую кнопочку на панели eclipse.
Вот логи при старте (то что выходит в консоли eclipse)
21.12.2010 12:06:53 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\ant\bin\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\windows\system32
21.12.2010 12:06:53 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
21.12.2010 12:06:53 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 617 ms
21.12.2010 12:06:53 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
21.12.2010 12:06:53 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.29
21.12.2010 12:06:53 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor host-manager.xml
21.12.2010 12:06:53 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor manager.xml
21.12.2010 12:06:53 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor serverApp.xml
21.12.2010 12:06:53 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
21.12.2010 12:06:54 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory examples
21.12.2010 12:06:54 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
21.12.2010 12:06:54 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
21.12.2010 12:06:54 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
21.12.2010 12:06:54 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
21.12.2010 12:06:54 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
21.12.2010 12:06:54 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/42 config=null
21.12.2010 12:06:54 org.apache.catalina.startup.Catalina start
INFO: Server startup in 996 ms


Вот что дописывает при остановке:
21.12.2010 12:07:25 org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080
21.12.2010 12:07:26 org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina


Сам проект сервлета создавался как «Tomcat Project».
Вот код самого сервлета:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class servlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("\n");
out.println("
\n"+"Protocol: ");
out.println(request.getProtocol());
out.println("
\n"+"Request URI: ");
out.println(request.getRequestURI());
out.println("
\n"+"Request Method: ");
out.println(request.getMethod());
Enumeration headerNames = request.getHeaderNames();
out.println("
" +headerName);

out.println(" " + request.getHeader(headerName));
}
out.println("\n


При этом по адресу C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\Catalina\localhost находится файл serverApp.xml
со след содержанием:
/>

В папке с проектом по адресу D:\eclipse\labs\serverApp\WEB-INF лежит 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-name>serverApp</servlet-name>
<servlet-class>servlеt</servlet-class>

<servlet-mapping>
<servlet-name>serverApp</servlet-name>
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
</web-app>


При этом, при попытке открытия localhost:8080/serverApp/servlet
появляется 500 error:
description: The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Wrapper cannot find servlet class servlеt or a class it depends on
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)

root cause

java.lang.ClassNotFoundException: servlеt
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)


В общем он не может найти сам класс, хотя само приложение и проект вроде находит.
  • Вопрос задан
  • 10677 просмотров
Пригласить эксперта
Ответы на вопрос 3
@sandello
Простой сервлет в студию. И логи развертывания тоже.
Ответ написан
mambet
@mambet
Насколько я знаю, APR тут ни при чём. Логи все смотрели? Там несколько разных. Плюс, я сталкивался с тем, что tomcat не сбрасывает в лог иногда ошибку до закрытия (или заполнения буфера) — попробуйте сделайть tomcat stop, а потом уже смотрите в лог.
Ну и уровень логирования можно поподробнее поставить.
А вообще похоже на то, что вы неправильно сервлет выгрузили. Положите прямо в ROOT руками, например. Как добавляли? Через web-админку?
Ответ написан
Stas_Telnov
@Stas_Telnov Автор вопроса
sandello и mambet спасибо за участие и попытку помочь, но проблема каким-то образом решилась сама собой, после некоторого моего отсутствия дома, наверно перезагрузка компа помогла.
Хотя ничего с тех пор не менял, так что неизвестно в чём была проблема, всё осталось как и было.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы