GWT - RemoteEventServiceServlet - ошибка домена - PullRequest
0 голосов
/ 04 декабря 2011

Я пытаюсь сделать этот пример ;Я только что столкнулся со странной ошибкой, которая возникает, когда вызывается метод sendMessage (String msg)

трассировка стека говорит

Домен [ОШИБКА] Ошибка клиента: Ошибка при регистрации клиента для домена!com.google.gwt.user.client.rpc.StatusCodeException: 404 ...

Я не совсем уверен, откуда исходит ошибка: S

Код EntryPoint

public class ImageViewer implements EntryPoint {
    /**
     * The domain to which we want to register our listener to
     */
    private static final Domain DOMAIN = DomainFactory.getDomain("my_domain");



    private RichTextArea echoTextArea;
    private RichTextArea sendTextArea;
    private ImageViewerBL imageViewerBL=new ImageViewerBL();

    public void onModuleLoad() {
        RootPanel rootPanel = RootPanel.get();

        FlowPanel flowPanel = new FlowPanel();
        rootPanel.add(flowPanel, 10, 10);
        flowPanel.setSize("392px", "384px");

        Label lblEcho = new Label("Echo : ");
        flowPanel.add(lblEcho);

        echoTextArea= new RichTextArea();
        flowPanel.add(echoTextArea);

        Label lblInput = new Label("Input : ");
        flowPanel.add(lblInput);

        sendTextArea = new RichTextArea();
        flowPanel.add(sendTextArea);

        HorizontalPanel horizontalPanel = new HorizontalPanel();
        flowPanel.add(horizontalPanel);

        Button btnSend = new Button("SEND");
        btnSend.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                imageViewerBL.sendMessage(sendTextArea.getText());
            }
        });
        horizontalPanel.add(btnSend);

        this.initBL();
}

    RemoteEventServiceFactory theEventServiceFactory;
    RemoteEventService theEventService;
    private void initBL()
    {

        /**
         * Create an EventService
         */
        theEventServiceFactory = RemoteEventServiceFactory.getInstance();
        theEventService = theEventServiceFactory.getRemoteEventService();

        /**
         * Register our listener to the domain
         */
        theEventService.addListener(DOMAIN, new MyListener(){
            public void onMyEvent(MyEvent event){
                /**
                 * Get the message from the event and append it to the allready received messages
                 */
                echoTextArea.setText( echoTextArea.getText() + event.getMessage() + "n" );
            }
        });

    }
}

код ImageViewerBL

public class ImageViewerBL implements IsSerializable {

    public void sendMessage(String message)
    {
        TestServiceAsync service=(TestServiceAsync)GWT.create(TestService.class);
        AsyncCallback callback=new AsyncCallback()
        {

            @Override
            public void onFailure(Throwable caught) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onSuccess(Object result) {
                Window.alert("Message has been sent");

            }

        };
    }
}

Весь остальной код полностью такой, как показано в примере.Помогите мне выяснить, откуда исходит ошибка.

С сетью Firebug я вижу это

как сообщение:

7 | 0 | 8 | http://127.0.0.1:8888/com.mycompany.project.ImageViewer/|96C13DAC0140CBCE9399464D9D221B3D|de.novanic.eventservice.client.event.service.EventService|register|de.novanic.eventservice.client.event.domain.Domain|de.novanic.eventservice.client.event.filter.EventFilter|de.novanic.eventservice.client.event.domain.DefaultDomain/240262385|my_domain|1|2|3|4|2|5|6|7|8|0|

и ответ говорит следующее:

Ошибка 404 NOT_FOUND

ОШИБКА HTTP: 404

NOT_FOUND

RequestURI = / com.mycompany.project.ImageViewer / gwteventservice

Работает на Jetty: //


Относительно запуска приложения - web.xml имеет значение

<web-app>

    <!-- Default page to serve -->
    <welcome-file-list>
        <welcome-file>ImageViewer.html</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>TestService</servlet-name>
        <servlet-class>com.mycompany.project.server.TestServiceImpl</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TestService</servlet-name>
        <url-pattern>/com.mycompany.project.ImageViewer/TestService</url-pattern>       
    </servlet-mapping>

</web-app>

в методе sendMessage (), вызывая режим dev:

00: 00: 38,360 [ОШИБКА] Ошибка клиента: ошибка при обработке события!com.google.gwt.user.client.rpc.StatusCodeException: 500 Ошибка вызова на сервере;подробности см. в журнале сервера по адресу com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived (RequestCallbackAdapter.java:209) по адресу com.google.gwt.http.client.Request.fireOnResponseReceived (Request.java:28).) в com.google.gwt.http.client.RequestBuilder $ 1.onReadyStateChange (RequestBuilder.java:395) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpative.Impor.Impj ()в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) в com.google.gwt.dev.shell.MethodAdaptor.intorj Method (: 103) на com.google.gwt.dev.shell.MethodDispatch.invoke (MethodDispatch.java:71) на com.google.gwt.dev.shell.OophmSessionHandler.invoke (OophmSessionHandler.java:167) на com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn (BrowserChannelServer.java:326) в com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript (BrowserChannelServer.java:207) на com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke (ModuleSpaceOOPHM.java:132) на com.google.gwt.dev.shell.ModuleSpace.invokeNative (ModuleSpace.java:561)на com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject (ModuleSpace.java:269) на com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject (JavaScriptHost.java:91) на com.google.gwt.core.client.impl.Impl.apply (Impl.java)

и код метода сервлета:

@Override
    public void sendMessage(String message) {
        /**
         * We dont save the incomming messages on the server. We just send an MyEvent to all
         * registered Listeners on the Domain.
         */
//      try {
//          this.addEvent(DOMAIN, new MyEvent(message));
//      } catch (Exception e) {
//          // TODO Auto-generated catch block
//          e.printStackTrace();
//      }
//      





}

... Я прокомментировал код, который вызывает ошибку 500;Так что если не запущен закомментированный код, то ошибка 500 id не выдается;Так что проблема где-то в методе addEvent (), но я не уверен, что именно вызывает проблему: S

Что на самом деле может быть не так?

Спасибо

1 Ответ

0 голосов
/ 04 декабря 2011

Код статуса - 404, что означает, что ресурс не найден; это может означать, что соответствующий сервлет не установлен на сервере, не запущен или целевой URL неверен.

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