Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / GWT при вызове не находит обычный сервлет - а почему? / 21 сообщений из 21, страница 1 из 1
18.03.2014, 12:58
    #38589279
else12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
Я пока в стадии изучения и переписывания свинга на gwt, так что прошу пока пинать не сильно. Вобщем, создаю gwt-приложение, подключаю rpc-механизм, вывожу результат запроса к БД в грид - все работает, но жутко медленно. Пытаюсь использовать обращение к обычному сервлету и работать через JSON.

С помощью нетбинса создаю обычный сервлет в пакете org.yournamehere.server; (все по книжке). Прописываю его в web.xml
Код: java
1.
2.
3.
4.
    <servlet-mapping>
        <servlet-name>BookServlet2</servlet-name>
        <url-pattern>/BookServlet2</url-pattern>
    </servlet-mapping>



Обращаюсь к нему по нажатию кнопки, смотрю по отладчику - не находит путь (к коду сервлета претензий нет, до него программа не доходит, хотя опять же делаю все по книжке)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
        try 
        {
                RequestBuilder requestBuilder = new RequestBuilder( RequestBuilder.GET, "/BookServlet2" );

                requestBuilder.setCallback(new RequestCallback() 
                {
                        @Override
                        public void onResponseReceived(Request request, Response response) 
                        {
                            List <IBook> books = parseJsonData (response.getText());
                            
                            BooksWidget <IBook> booksWidget = new BooksWidget <IBook>();

                            if (books != null) 
                            {
                                    booksWidget.setData(books);
                                    booksWidget.show();
                            }
                        }

                        @Override
                        public void onError(Request request, Throwable exception) 
                        {
                            Window.alert(exception.getMessage());
                        }
                });
                requestBuilder.send();
        } catch (RequestException ex) {
                Window.alert(ex.getMessage());
        }


Кто виноват и что делать?
...
Рейтинг: 0 / 0
18.03.2014, 15:07
    #38589545
else12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
Неужели никто не подскажет? А то я уже вообще ничего не понимаю. Создаю пустой gwt-проект в нетбинсе, создаю в нем сервлет BookServlet, прописываю его в web.xml как описал выше (точнее сам нетбинс мне его прописывает), обращаюсь к сервлету по нажатию кнопки в MainEntryPoint - и опять не находит сервлета. А почему? ЧТО НЕ ТАК-ТО? jar-ник с сервлетами не тот? Что может быть?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
public class MainEntryPoint implements EntryPoint {

    /**
     * Creates a new instance of MainEntryPoint
     */
    public MainEntryPoint() {
    }

    /**
     * The entry point method, called automatically by loading a module that
     * declares an implementing class as an entry-point
     */
    public void onModuleLoad() {
        final Label label = new Label("Hello, GWT!!!");
        final Button button = new Button("Click me!");
        
        button.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                //label.setVisible(!label.isVisible());
                //getDataFromServer();
                try 
                {
                   RequestBuilder requestBuilder = new RequestBuilder( RequestBuilder.GET, "/BooksServlet" );
                   requestBuilder.send();
                } catch (RequestException ex) {
                    Window.alert(ex.getMessage());
                }
            }
        });
        
        RootPanel.get().add(button);
        RootPanel.get().add(label);
    }
        
}
...
Рейтинг: 0 / 0
18.03.2014, 15:18
    #38589565
way2bariton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
else12, а вы в web.xml случайно не забыли ту секцию где сам Servlet и его класс описываются:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<servlet>
        <servlet-name>Error404</servlet-name>
        <servlet-class>ErrorPage</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Error404</servlet-name>
        <url-pattern>/error404</url-pattern>
    </servlet-mapping>
...
Рейтинг: 0 / 0
18.03.2014, 15:21
    #38589574
way2bariton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
upd: и да, в атрибуте servlet-class нужно писать полное имя класса с учетом пакетов, просто в моем примере нет пакетов, а так что-то вроде: com.mypage.BookServlet2
...
Рейтинг: 0 / 0
18.03.2014, 15:29
    #38589584
else12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
way2baritonupd: и да, в атрибуте servlet-class нужно писать полное имя класса с учетом пакетов, просто в моем примере нет пакетов, а так что-то вроде: com.mypage.BookServlet2
Да нет, не забыл. Собственно, вставлял нетбинс, так что он все коректно вставил.
Код: java
1.
2.
3.
4.
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>org.yournamehere.server.HelloServlet</servlet-class>
    </servlet>



Какая-то галиматья... Запускаю - "не найден путь"...
...
Рейтинг: 0 / 0
18.03.2014, 15:32
    #38589586
way2bariton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
else12, а если руками в браузере открыть этот сервлет? И да, метод точно get? Хотя если бы была путаница с методом, то ошибка была бы другой, но все-равно. В общем попробуйте в браузере открыть, а еще гляньте что на сервер идет, в Chrome dev tools есть снифер.
...
Рейтинг: 0 / 0
18.03.2014, 15:46
    #38589617
else12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
way2baritonelse12, а если руками в браузере открыть этот сервлет? И да, метод точно get? Хотя если бы была путаница с методом, то ошибка была бы другой, но все-равно. В общем попробуйте в браузере открыть, а еще гляньте что на сервер идет, в Chrome dev tools есть снифер.
Я вот сейчас ВСЕ сделал так, как написано здесь , один в один, тупо по инструкции - создал проект уже на другой версии гвт, создал сервлет, в корневой панели создал поле TextBox, по нажатию кнопки вывел в него то, что получаю. Вот тупо все, что написано. Все различие - вылетело уже сразу по нажатию кнопки на экране

type Status report
message /hello
description The requested resource is not available.

Ну а раньше смотрел "Правая клавиша мышки" - "просмотр кода элемента" - "сеть". И там писала, что не найден путь... А теперь удобно - прямо на экране пишет, скотина
...
Рейтинг: 0 / 0
18.03.2014, 15:59
    #38589643
else12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
way2baritonelse12, а если руками в браузере открыть этот сервлет? И да, метод точно get? Хотя если бы была путаница с методом, то ошибка была бы другой, но все-равно. В общем попробуйте в браузере открыть, а еще гляньте что на сервер идет, в Chrome dev tools есть снифер.
Кстати, а как этот снифер установить? У меня высвечивается какая-то формочка с "подробностями, обзором, отзывами" и отсутствием кнопки "установить" или "download"...
...
Рейтинг: 0 / 0
18.03.2014, 16:25
    #38589697
else12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
Вобщем, я ничегошеньки не понимаю. RPC работает нормально, но меня не удовлетворяет - слишком медленно, а обычный сервлет никак не могу запустить. Может, я чего-то куда-то не положил, не скомпилировал и т.п.?
...
Рейтинг: 0 / 0
18.03.2014, 16:33
    #38589710
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
else12,

У вас и правда так? или для примера?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
   <servlet-mapping>
        <servlet-name>BookServlet2</servlet-name> <---- ?
        <url-pattern>/BookServlet2</url-pattern>
    </servlet-mapping>
   <servlet>
        <servlet-name>HelloServlet</servlet-name>  <---- ?
        <servlet-class>org.yournamehere.server.HelloServlet</servlet-class>
    </servlet>
...
Рейтинг: 0 / 0
18.03.2014, 17:06
    #38589763
else12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
0FDelse12,

У вас и правда так? или для примера?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
   <servlet-mapping>
        <servlet-name>BookServlet2</servlet-name> <---- ?
        <url-pattern>/BookServlet2</url-pattern>
    </servlet-mapping>
   <servlet>
        <servlet-name>HelloServlet</servlet-name>  <---- ?
        <servlet-class>org.yournamehere.server.HelloServlet</servlet-class>
    </servlet>


В смысле? Я просто сейчас втупую беру простейшие примеры - и они именно в таком виде описаны, как правило. А чего так смущает? В своем проекте я буду по-другому называть. А чего, там какие-то ошибки? Я не пойму - может, в томкате дело? Или в чем?
...
Рейтинг: 0 / 0
18.03.2014, 17:12
    #38589772
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
else12,

Вы писали:
С помощью нетбинса создаю обычный сервлет в пакете org.yournamehere.server ; (все по книжке). Прописываю его в web.xml
Код: xml
1.
2.
3.
4.
<servlet-mapping>
 <servlet-name>BookServlet2</servlet-name>
 <url-pattern>/BookServlet2</url-pattern>
</servlet-mapping>


...
Да нет, не забыл. Собственно, вставлял нетбинс, так что он все коректно вставил.
Код: xml
1.
2.
3.
4.
<servlet>
 <servlet-name>HelloServlet</servlet-name>
 <servlet-class>org.yournamehere.server.HelloServlet</servlet-class>
</servlet>




Исходя из этого имя сервлета в servlet-mapping и в servlet разные. Или нет?
...
Рейтинг: 0 / 0
18.03.2014, 17:25
    #38589788
else12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
0FDelse12,

Вы писали:
С помощью нетбинса создаю обычный сервлет в пакете org.yournamehere.server ; (все по книжке). Прописываю его в web.xml
Код: xml
1.
2.
3.
4.
<servlet-mapping>
 <servlet-name>BookServlet2</servlet-name>
 <url-pattern>/BookServlet2</url-pattern>
</servlet-mapping>


...
Да нет, не забыл. Собственно, вставлял нетбинс, так что он все коректно вставил.
Код: xml
1.
2.
3.
4.
<servlet>
 <servlet-name>HelloServlet</servlet-name>
 <servlet-class>org.yournamehere.server.HelloServlet</servlet-class>
</servlet>




Исходя из этого имя сервлета в servlet-mapping и в servlet разные. Или нет?
Это разные примеры. Вначале я описывал более сложный пример, потом привел ссылку, по которой втупую делал простые действия - все как в ссылке написано - и ничего не заработало. Поэтому и получилось два описания. Первое - начальное от более сложного примера, второе - от более простого, просто создал новый проект, и... И снова облом.

Я не пойму - может, томкат надо настроить, сервлет перекомпилировать или чего? По идее нетбинс все делает сам...
...
Рейтинг: 0 / 0
18.03.2014, 17:30
    #38589795
else12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
Вот второй пример целиком:

web.xml:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>org.yournamehere.client.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>welcomeGWT.html</welcome-file>
    </welcome-file-list>
</web-app>



EntryPoint:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
package org.yournamehere.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.TextBox;

public class MainEntryPoint implements EntryPoint {

    public MainEntryPoint() {
    }

    public void onModuleLoad() {
        final Label label = new Label("Hello, GWT!!!");
        final Button button = new Button("Click me!");
        final TextBox nameField = new TextBox();
        
        button.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                label.setVisible(!label.isVisible());
                Window.Location.replace("/hello?name="+nameField.getText());  
            }
        });
        
        RootPanel.get().add(button);
        RootPanel.get().add(label);
        RootPanel.get().add(nameField);
    }
}



Сервлет:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
package org.yournamehere.client;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet 
{

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet HelloServlet</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet HelloServlet at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //processRequest(request, response);
        String name = request.getParameter("name");  
        response.getWriter().write("Hello "+name+", Welcome in My Servlet");  
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}



Надпись об ошибке:

HTTP Status 404 - /hello

type Status report

message /hello

description The requested resource is not available.

Apache Tomcat/7.0.52
...
Рейтинг: 0 / 0
18.03.2014, 17:31
    #38589798
else12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
...
Рейтинг: 0 / 0
18.03.2014, 17:48
    #38589823
else12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
Тьфу ты... Там как раз пример и был с ошибкой. При обращении надо писать полный путь к сервлету...
...
Рейтинг: 0 / 0
18.03.2014, 17:53
    #38589827
way2bariton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
Простите, но не удержусь, господин Shams Zawoad не посрамил честь своей страны =))
...
Рейтинг: 0 / 0
18.03.2014, 18:02
    #38589834
else12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
way2baritonПростите, но не удержусь, господин Shams Zawoad не посрамил честь своей страны =))
Зараза он эдакая... Я кучу времени угрохал, делая все точно как написано...
...
Рейтинг: 0 / 0
14.05.2014, 11:23
    #38640669
Gugle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
else12,

Напиши плз правельный вариант относительно 15747668 . А то я то же застрял на этом.
...
Рейтинг: 0 / 0
14.05.2014, 11:34
    #38640700
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
Gugle,

Скорее всего, проблема в том, что /hello в web.xml означает что вызывать надо
protocol://host:port/context_path/hello , а не protocol://host:port/hello , что сделает браузер если указать url "/hello".
...
Рейтинг: 0 / 0
14.05.2014, 11:50
    #38640732
Gugle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GWT при вызове не находит обычный сервлет - а почему?
Сергей Арсеньев,

Выведет ту же ошибку, что сервлет не найден.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / GWT при вызове не находит обычный сервлет - а почему? / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]