Maven生成的GWT Servlet没有响应

时间:2011-07-21 08:15:42

标签: gwt servlets maven

我使用GWT Maven插件(版本2.3.0)生成GWT项目。关于这一点的好处是Maven插件负责生成服务的异步部分。一切似乎都有效,但servlet在托管模式下运行(在Jetty中运行)和将生成的WAR部署到Tomcat时都没有响应。

我现在的问题是servlet根本没有响应。调用了onSuccess()回调,但我获得的是null个值。我几乎从GWT主页复制了教程,所以我的服务是以这种方式创建的:

final StatusServiceAsync statusService = GWT.create(StatusService.class);

这是我的服务界面:

@RemoteServiceRelativePath("status")
public interface StatusService extends RemoteService
{
    String getStatus(String someInput);
}

如前所述,异步副本由Maven插件生成。 web.xml看起来像这样:

<servlet>
   <servlet-name>statusServlet</servlet-name>
   <servlet-class>my.package.StatusServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>statusServlet</servlet-name>
  <url-pattern>/StatusBoard/status</url-pattern>
</servlet-mapping>
<welcome-file-list>
  <welcome-file>StatusBoard.html</welcome-file>
</welcome-file-list>

起初,我认为配置完全错误,所以我玩了一下。当我更改<servlet-class>值时,servlet容器记录了ClassNotFoundException。然后我改变了@RemoteServiceRelativePath我也遇到了错误。所以配置不能完全错误。

这是服务器端代码(我将其剥离,以确保没有其他错误):

public class StatusServiceImpl extends RemoteServiceServlet implements StatusService
{
    private static final long serialVersionUID = 3317511632727461036L;

    @Override
    public String getStatus(final String someInput)
    {
        return someInput;
    }
}

很抱歉,我忘记了详细信息,但有时,调试器无法识别servlet中的断点。但即使这样,返回的值仍为null

非常感谢任何想法!

1 个答案:

答案 0 :(得分:1)

默认情况下,您的GWT应用程序具有模块名称的基本URL。如果您在gwt.xml文件中使用了“rename-to”属性,那么该值将是您的基本URL。在这种情况下,查看web.xml条目,您的模块应命名为“StatusBoard”。或者将您的网址更改为“重命名”值。