我使用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
。
非常感谢任何想法!
答案 0 :(得分:1)
默认情况下,您的GWT应用程序具有模块名称的基本URL。如果您在gwt.xml文件中使用了“rename-to”属性,那么该值将是您的基本URL。在这种情况下,查看web.xml条目,您的模块应命名为“StatusBoard”。或者将您的网址更改为“重命名”值。