我使用了GWT Maven插件(版本2.3.0)来生成GWT项目。关于这一点的好处是,Maven插件负责生成服务的异步部分。一切似乎都正常,但在托管模式下运行(在Jetty中运行)以及将生成的WAR部署到Tomcat时,Servlet无法响应。Maven生成的GWT Servlet没有响应
我的问题是现在,该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
。
任何想法非常感谢!
以防万一:您的servlet是否从RemoteServiceServlet继承并实现了StatusService? – helios
您可以使用Firebug(用于Firefox)来嗅探请求/响应(网络选项卡)并检查请求和响应。我可以将您的请求/响应与我的项目进行比较,以查看差异... – helios
是的,Servlet确实继承了RemoteServiceServlet并实现了服务接口。 – RobertB