LINUX.ORG.RU

простой Servlet и не работает


0

0

Начал читать книгу по сервлетам. Сделал простой пример, а он не работает...

Захожу на http://localhost:8080/ch1/Serv1 и получаю пустую страницу

Вот, как всё настроено:
1)
localhost webapps # pwd
/usr/share/tomcat-5.5/server/webapps
localhost webapps # find ch1
ch1
ch1/WEB-INF
ch1/WEB-INF/web.xml
ch1/WEB-INF/classes
ch1/WEB-INF/classes/Ch1Servlet.class

2)
localhost webapps # cat ch1/WEB-INF/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee";
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";
    version="2.4">
        <servlet>
                <servlet-name>Chapter1 Servlet</servlet-name>
                <servlet-class>Ch1Servlet</servlet-class>
        </servlet>

        <servlet-mapping>
                <servlet-name>Chapter1 Servlet</servlet-name>
                <url-pattern>/Serv1</url-pattern>
        </servlet-mapping>
</web-app>

3)
# file Ch1Servlet.class
Ch1Servlet.class: compiled Java class data, version 49.0

4)
tomcat-5.5.17
java-1.5.0_07
★★★★

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

public class Ch1Servlet extends HttpServlet{
        public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException{
                PrintWriter out = response.getWriter();
                java.util.Date today = new java.util.Date();
                out.println("<html><body>" +
                        "<h1 align=center>HF\'s Chapter1 Servlet</h1>" +
                        "<br>" + today + "</body></html>"
                );
        }

}

Selecter ★★★★
() автор топика
Ответ на: комментарий от anonymous

# cat /var/log/tomcat-5.5/*2006-08-25*.log
Aug 25, 2006 4:05:34 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /opt/sun-jdk-1.5.0.07/jre/lib/amd64/server:/opt/sun-jdk-1.5.0.07/jre/lib/amd64:/
opt/sun-jdk-1.5.0.07/jre/../lib/amd64
Aug 25, 2006 4:05:35 PM org.apache.coyote.http11.Http11BaseProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Aug 25, 2006 4:05:35 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 2711 ms
Aug 25, 2006 4:05:35 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Aug 25, 2006 4:05:35 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.5
Aug 25, 2006 4:05:35 PM org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
Aug 25, 2006 4:05:39 PM org.apache.coyote.http11.Http11BaseProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Aug 25, 2006 4:05:39 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Aug 25, 2006 4:05:39 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=1/57  config=null
Aug 25, 2006 4:05:39 PM org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
Aug 25, 2006 4:05:39 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 4833 ms

Selecter ★★★★
() автор топика

Атрибуты обычно разделяются пробельным символом, а не точкой с запятой.

svr69 ★★
()
Ответ на: комментарий от Selecter

Если у тебя web.xml именно такой, как ты написал, то контекст не деплоится. Ты попробуй хотя бы распарсить этот XML (если так сложно писать его руками, поставь хотя бы NetBeans). Кроме того, желательно выставлять в сервлете Content-type (метод setContentType() класса HttpServletRequest), не рекомендуется в именах сервлетов использовать пробелы, ну и default package - дурной тон.

svr69 ★★
()
Ответ на: комментарий от svr69

п....ц сложности! Жаба во всей своей красе... Да еще убогий XML, для которого целый netbeans нужно...

пошел ка я унитаз пугать...

logIN
()
Ответ на: комментарий от logIN

На хрен для него нетбинс не нужен. Вима за глаза и за уши хватит, но если товарищ не может XML написать, то пусть за него машина пишет. А сложности возникают только у особо одаренных.

svr69 ★★
()
Ответ на: комментарий от Selecter

Еще catalina.out обычно бывает, которая в твою маску ну никак не вписывается. Шел бы ты документацию читать, а?

svr69 ★★
()

На сколько я понимаю это пример из книги? Тоесть по идее он должен работать. Если в логах ничего не написано, то можно обратится к томкатовскому менеджеру. Эта прога чаше всего идет по умолчанию с томкатом, а если нет, то значит ее надо доставить. Там можно точно увидеть задеплоено твое приложение или нет и обрабатывает ли его контейнер и в каком контексте оно выполняется (Вполне возможно что ты просто УРЛ не тот пишеш, у тебя в web.xml мэпинг стоит только /Serv1 а обращаешься ты на /ch1/Serv1). Если же не задеплоено, то причин может быть масса, начиная с того что у тебя томкат запускатеся скорее всего под юзером tomcat а доступа на .war файл у него нет. Ибо пример по ссылке http://simple.souther.us/SimpleServlet.war у меня работает отлично.

Nicht
()
Ответ на: комментарий от anonymous

> Что, на C++ короче? А как? Ась? Тото же.

Зачем C++? Можно С.

puts("Content-type: ...");
puts("<h1>Hello World</h1>");

И все в таком духе. И ничего "деплоить", "доустанавливать" и т.п. не надо.

logIN
()
Ответ на: комментарий от svr69

# ls /var/log/tomcat-5.5/
admin.2006-08-21.log catalina.2006-08-25.log localhost.2006-08-23.log
admin.2006-08-22.log host-manager.2006-08-21.log localhost.2006-08-25.log
admin.2006-08-23.log host-manager.2006-08-22.log manager.2006-08-21.log
admin.2006-08-25.log host-manager.2006-08-23.log manager.2006-08-22.log
catalina.2006-08-21.log host-manager.2006-08-25.log manager.2006-08-23.log
catalina.2006-08-22.log localhost.2006-08-21.log manager.2006-08-25.log
catalina.2006-08-23.log localhost.2006-08-22.log

Selecter ★★★★
() автор топика
Ответ на: комментарий от svr69

>Вообще-то сервлеты так не пишутся, разве что в книжках для начинающих.

В моей книжке просто в первой главе не хотят шокировать читателя обилием матных слов типа jsp, Ant etc

Selecter ★★★★
() автор топика

manager не запускается... 
HTTP Status 404 - /manager/

type Status report

message /manager/

description The requested resource (/manager/) is not available.

Ладно... попробую что-то сделать. Что-то не так с ПО...

Selecter ★★★★
() автор топика
Ответ на: комментарий от Selecter

Если уж и манагер не запускается. ТО надо либо курить томкатовские конфиги. Ну и точно проверить есть ли у томкатовского пользователя права на папки с конфигурацией и webbapps. Ну и переменные окружение типа CATALINA_HOME тоже не мешало бы проверить. Устанавливаются они у тебя или нет во время старта томката и правильно ли устанавливаются.

Nicht
()
Ответ на: комментарий от Selecter

manager может и не быть установлен - он отдельно идет, и отдельно прописывается. Найди catalina.out - там по крайней мере пишется, какие контексты деплоятся.

svr69 ★★
()
Ответ на: комментарий от Selecter

Ant-то тут при чем? Если, кстати, посмотришь devguide от томката, то там как раз про ant есть, что правильно. Вспомнил, кстати, еще один интересный баг - какая-то IDE при создании jar не писала туда entry для директории WEB-INF. Томкату от этого плохело. Не IDE, ни версию томката я, естественно, уже не помню - это года три назад было. Но все же можешь сказать unzip -l <твой-файл>.jar и посмотреть, есть ли в выводе строка WEB-INF/

svr69 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.