[英]GWT - failure on async method call
當我執行異步方法調用時,調用onFailure(...)方法的原因是什么? 控制台輸出始終顯示“ ERROR !!!!”。
MyEntryPoint.java:
package com.example.smartgwtproject.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
//...
public class MyEntryPoint implements EntryPoint {
public void onModuleLoad() {
GreetingServiceAsync service = (GreetingServiceAsync) GWT.create(GreetingService.class);
//...
service.getFileList(new AsyncCallback<List<String>>(){
@Override
public void onFailure(Throwable caught) {
System.out.println("ERROR!!!!");
}
@Override
public void onSuccess(List<String> result) {
System.out.println("OK!");
}
});
//...
}
}
.gwt.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.1//EN"
"http://google-web-toolkit.googlecode.com/svn/tags/2.5.1/distro-source/core/src/gwt-module.dtd">
<module rename-to='dlaconfigcenter'>
<inherits name='com.google.gwt.user.User'/>
<inherits name="com.smartgwt.SmartGwt"/>
<entry-point class='com.example.smartgwtproject.client.MyEntryPoint'/>
<source path='client' />
<source path='shared' >
<include name="GreetingServiceImpl.java"/>
</source>
</module>
GreetingService:
package com.example.smartgwtproject.client;
//...
@RemoteServiceRelativePath("greet")
public interface GreetingService extends RemoteService {
List<String> getFileList();
}
GreetingServiceAsync:
//...
public interface GreetingServiceAsync {
void getFileList(AsyncCallback<List<String>> callback);
}
<include name="GreetingServiceImpl.java"/>
不應位於gwt.xml中。 Impl類是服務器端代碼,不應作為GWT源包含在內。 如果您使用任何非仿真類,例如像Apache Commons這樣的第三方庫,則會出現編譯錯誤。
您可能需要對web.xml進行一些更改,以指向GreetingsServiceImpl類,這可能是您在gwt.xml中試圖實現的目標。 我建議您仔細閱讀本教程以仔細檢查您的配置。 http://www.vogella.com/tutorials/GWT/article.html#server
假設您的配置正常。 GreetingServiceImpl類中的getFileList()方法可能引發異常。 通常,這就是觸發onFailure方法被調用的原因。 自從您的GreetingServiceImpl以來,我不確定這是怎么回事。
404錯誤表示GWT無法找到您的Impl類。 有兩種可能性。
如果您在托管模式下運行,則情況並非如此。 如果不確定,可以在這里找到有關托管模式的更多信息: http : //www.gwtproject.org/doc/latest/DevGuideCompilingAndDebugging.html
對於#2,請參考我上面鏈接的教程。 如果您的Servlet(Impl類)未正確映射,則將繼續獲得404。基本上,您需要在com.example.smartgwtproject.sever包中使用Impl類,並在網絡中有相應的記錄。 xml。 它看起來應該像這樣:
<servlet>
<servlet-name>GreetingService</servlet-name>
<servlet-class>com.example.smartgwtproject.sever.GreetingServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GreetingService</servlet-name>
<url-pattern>/GreetingService</url-pattern>
</servlet-mapping>
但是,我不能保證您的設置正確。 同樣,請參考教程以獲取所有詳細信息。 教程鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.