2010-11-08 5 views
4

Я создал простой сервлет, который я хочу развернуть в Jetty 7.2. Jetty работает и может обслуживать страницы JSP на http://localhost:8080/jonas/test.jsp. Я начал Jetty с помощью команды java -jar start.jar.Как развернуть сервлет в Jetty?

Я сохранил свой скомпилированный Servlet MyServlet.class в <my_jetty_directory>/webapps/jonas/WEB-INF/classes/MyServlet.class, а затем попытался получить доступ к этой Servlet на http://localhost:8080/jonas/servlets/MyServlet но я получаю ошибку HTTP 404.

HTTP ERROR 404 

Problem accessing /jonas/servlet/MyServlet. Reason: 

    Not Found 

Есть ли что-то еще, что мне нужно сделать? Где в файловой структуре Jetty я должен разместить MySerlvet.class?


Теперь я создал простой web.xml файл и сохранили его в <my_jetty_directory>/webapps/jonas/WEB-INF/web.xml и перезапущен мой Jetty, но он не работает. Вот мой простой web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app> 
    <servlet> 
    <servlet-name>MyServlet</servlet-name> 
    <servlet-class>MyServlet</servlet-class> 
    </servlet> 
</web-app> 

У меня была аналогичная проблема с JSP, которая решается в настоящее время: How do I deploy a JSP file in the Jetty webserver?

+1

Вы используете Jetty как автономный сервлетконтейнер, к которому вы развертываете полнофункциональные файлы WAR? Или вы используете Jetty как встроенный servletcontainer и программно создаете/запускаете его с помощью Java-кода? – BalusC

+0

@BalusC: Я использую Jetty как автономный servletcontainer, и я только развертываю простой класс сервлетов Hello World, я еще не узнал о том, как создавать файлы '.war'. Сначала я изучу основы. – Jonas

+1

Хорошо, тогда Божо действительно прав. В противном случае ответ был бы «context.addServlet (новый ServletHolder (новый MyServlet(),«/myservlet »)), как описано здесь http://docs.codehaus.org/display/JETTY/Embedding+Jetty – BalusC

ответ

4

Вы должны сопоставить сервлет в web.xml, используя <servlet> и <servlet-mapping> или аннотировать его с @WebServlet при использовании сервлетов 3.0.

+0

Я думаю, что Jetty поддерживает только сервлет 2.5. Я создал файл 'web.xml', как вы предложили. Однако я не знаю, как это должно выглядеть и быть помещенным. Я читаю из книги «Servlets и JSP от Murach's Java» с 2003 года. Вы предлагаете другие теги. Мой 'web.xml' не решил эту проблему. – Jonas

+1

@ Jonas вы показали только '' и no '' - добавьте также сопоставление (это определяет, какой URL-адрес сопоставляет сервлет) – Bozho

+0

Моя книга была старой и не имела '<сервлет-сопоставление > ', но теперь я узнаю об этом, и теперь он отлично работает. Еще раз спасибо. – Jonas

0

Я думаю, что должен быть конфиг или файл readme.txt в папке установки или lib или bin или conf в вашем сервере Jetty. Прочитайте их, и вы получите конкретные каталоги для размещения своих классов. Установка каталога классов на сервере Jetty или, по крайней мере, его повторение. Это будут классы, запускаемые при запуске сервера Jetty.

Что касается класса, у java есть способ запускать классы из заданных папок. Вы можете добавить a-:

* "." at the end of classpath variable in WINDOWS NT platform 
* set CLASSPATH=%CLASSPATH%;. in command mode or AUTOEXEC.bat of other WINDOWS 
* set CLASSPATH=%CLASSPATH%:. and export CLASSPATH in linux 

С этим "." - fullstop, в переменной classpath, вы запустите команду java для поиска классов в текущей директории.

+0

Я читал через текстовый файл README, и он не содержит информации об этом. – Jonas

Смежные вопросы