GWT: получение 404 в GWTTestCase при попытке сделать Ajax-вызов - PullRequest
3 голосов
/ 17 ноября 2011

Я использую GWT 2.4.Я пытаюсь написать тестовый пример, в котором я делаю Ajax-вызов, но получаю 404. Вот как я определяю службу в моем файле .gwt.xml ...

<module>
  <!-- Inherit our applications main module.                      -->
  <inherits name='com.myco.clearing.product.ProductPlus' />

  <!-- Specify the path to any remote services.                   -->
  <servlet path="/xmlhelperservice" class="com.myco.clearing.product.server.XmlHelperServiceImpl" />

</module>

Вот как интерфейс, который реализует служба ...

@RemoteServiceRelativePath( "xmlhelperservice" )
public interface XmlHelperService extends RemoteService {

    Node getNode(final String fileName) throws IOException;

}

, но в моем тестовом классе (который расширяет GWTTestCase) я получаю 404 при попытке вызвать службу ...

public void testDocument() throws Exception {
    xmlHelperService = GWT.create(XmlHelperService.class);
    xmlHelperService.getNode("doc.xml", new AsyncCallback<Node>() {

        @Override
        public void onSuccess(Node node) {
            ...
        }

        @Override
        public void onFailure(Throwable caught) {
            caught.printStackTrace(System.err);
            fail(caught.getMessage());
        }
    });
}

Как правильно определить / вызвать мой сервис, чтобы избежать 404?След стека ниже.Спасибо, - Дейв

<code>[WARN] 404 - POST /com.myco.clearing.product.ProductPlusJUnit.JUnit/xmlhelperservice (10.40.70.197) 1450 bytes
com.google.gwt.user.client.rpc.StatusCodeException: 404 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 404 NOT_FOUND</title>
</head>
<body><h2>HTTP ERROR: 404</h2><pre>NOT_FOUND

RequestURI = / com.myco.clearing.product.ProductPlusJUnit.JUnit / xmlhelperservice

Приведено в действие Jetty: //

на com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived (RequestCallbackAdapter.java:209) на com.google.gwt.http.client.Request.fireOnResponseReceived (Request.java)287) в com.google.gwt.http.client.RequestBuilder $ 1.onReadyStateChange (RequestBuilder.java:395) в sun.reflect.GeneratedMethodAccessor27.invoke (Неизвестный источник) в sun.reflect.DelegatingMethodAccessormphoj () на java.lang.reflect.Method.invoke (Method.java:597) на com.google.gwt.dev.shell.MethodAdaptor.invoke (MethodAdaptor.java:103) на com.google.gwt.dev.shell.MethodDispatch.invoke (MethodDispatch.java:71) на com.google.gwt.dev.shell.OophmSessionHandler.invoke (OophmSessionHandler.java:172) на com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhnelWerserC (337) на com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript (BrowserChannelServer.java:218) на com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke (ModuleSpaceOOPHM.java:136) на 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) на com.google.gwt.coreС.invoke (Method.java:597) на com.google.gwt.dev.shell.MethodAdaptor.invoke (MethodAdaptor.java:103) на com.google.gwt.dev.shell.MethodDispatch.invoke (MethodDispatch.java:71.) на com.google.gwt.dev.shell.OophmSessionHandler.invoke (OophmSessionHandler.java:172) на com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages (BrowserChannelServer.java:292) на com.google.gwt.dev.shell.BrowserChannelServer.processConnection (BrowserChannelServer.java:546) на com.google.gwt.dev.shell.BrowserChannelServer.run (BrowserChannelServer.java:363) на java.lang.Thread.run (Thread.java:662)

1 Ответ

2 голосов
/ 29 ноября 2011

Проверьте, не заметили ли вы это в своем файле web.xml.

<servlet>
    <servlet-name>XmlHelperServiceImpl</servlet-name>
    <servlet-class>com.myco.clearing.product.server.XmlHelperServiceImpl</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>XmlHelperServiceImpl</servlet-name>
    <url-pattern>/com.myco.clearing.product.ProductPlus/xmlhelperservice</url-pattern>
</servlet-mapping>

Также см. распространенные ошибки в этой документации.

...