我使用了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