Запуск сервлетов в Apache Tomcat - PullRequest
2 голосов
/ 17 мая 2011

Я работаю над онлайн-учебниками по Java Ranch Cattle Drive и приступил к проектам Servlets.Я хотел установить и запустить Apache вместо Orion, потому что я хотел изучить более массовый HTTP-сервер.

Я установил Apache и запустил его на своем компьютере (это среда Windows XP / Cygwin, поэтому я использую пакет Apache, который поставляется с последней версией cygwin, в настоящее время httpd версия 1.3.33)

Я почти направил браузер на http://localhost, и сервер правильно выбирает страницу приветствия (index.html) по адресу C: \ cygwin \ var \ www \ htdocs.

Я установил Java EE и смог скомпилировать следующий сервлет:

import java.io.* ;
import javax.servlet.http.* ;

public class BeeServlet extends HttpServlet
{

    public void doGet( HttpServletRequest request , HttpServletResponse response )
    {
        response.setContentType("text/html");
        try
        {
            PrintWriter out = response.getWriter();
            out.println( "a-buzz-buzz ..." );
            out.close();
        }
        catch( Exception e )
        {
            System.out.println( "cannot get writer: " + e );
        }
    }

}

Он без ошибок компилируется в файл .class.У меня вопрос, где я могу установить этот файл на сервере?

Файл называется BeeServlet.class, и в руководстве говорится, что браузер должен направить браузер на http://localhost/servlet/BeeServlet после установки BeeServlet.class в соответствующий каталог на веб-сервере.

(РЕДАКТИРОВАТЬ: я успешно установил Tomcat и у меня отображается основная страница приветствия, как описано в следующих шагах. Я все еще не уверен, куда поместить файл .class или как получить к нему доступ):

Вот шаги установки Tomcat и запуска его через Cygwin:

  1. Перейдите на http://tomcat.apache.org/ и загрузите последнюю версию Tomcat (для приведенной выше конфигурации системы выберите 3264-разрядный метод установки службы Windows, который создаст установку размером 9 МБ в C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0).

  2. Добавьте этот путь кСистемная переменная среды Windows 'Path'

  3. Запустить оболочку Cygwin bash

  4. типа 'tomcat7' (с установленным Path она найдет это.Отлично в вышеуказанном пути).Это запустит сервер Tomcat.

  5. Запустите браузер и направьте его на http://localhost:8080. Это откроет экран приветствия Tomcat (на самом деле Tomcat читает файл: C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ webapps \ ROOT \ index.jsp).

  6. Создание новых каталогов в C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \.веб-приложения с именем examples \ WEB-INF \ classes.

  7. Добавить аннотацию @WebServlet в файл исходного кода (он будет расположен после любого импорта): @WebServlet (urlPatterns = {"/ servlet / BeeServlet"}).Скомпилируйте файл BeeServlet.java и поместите файл .class в C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ webapps \ examples \ WEB-INF \ classes \ BeeServlet.class

  8. Направьте ваш браузер на http://localhost:8080/examples/servlet/BeeServlet

Ответы [ 2 ]

3 голосов
/ 17 мая 2011

Вы должны сообщить сервеконтейнеру, что у вас есть сервлет, который он должен выполнить.Так как вы уже используете Tomcat 7.0, подойдет аннотация @WebServlet.

@WebServlet(urlPatterns={"/servlet/BeeServlet"})
public class BeeServlet extends HttpServlet {
    // ...
}

Или по-старому (вероятно, как упоминалось в руководстве по JavaRanch), объявив в web.xml.

<servlet>
    <servlet-name>beeServlet</servlet-name>
    <servlet-class>BeeServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>beeServlet</servlet-name>
    <url-pattern>/servlet/BeeServlet</url-pattern>
</servlet-mapping>

Обратите внимание, что помещение классов в пакет по умолчаниюплохая практикаВы должны помещать классы в пакет, если хотите, чтобы они были видны классам внутри пакета.Контейнер сервлетов, написанный на чистом Java, также должен видеть их.Теперь у Tomcat есть хаки для этого, но это работает только в определенных версиях / конфигурациях.Всегда всегда помещает классы сервлетов в пакет.

См. Также:


Не связано с конкретной проблемой:

Я установил Java EE

Обратите вниманиечто загрузка Java EE с Oracle.com содержит в основном сервер приложений Glassfish вместе с некоторой документацией.Вам это не нужно, когда все, что вам нужно, это просто запускать сервлеты на Tomcat.

См. Также:

1 голос
/ 17 мая 2011

Apache - это веб-сервер, а не движок сервлета / JSP. Tomcat - движок сервлетов / JSP; как и Причал. Вам нужно будет развернуть свои сервлеты / JSP на Tomcat и указать Apache направлять запросы на ваши сервлеты / JSP на Tomcat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...