我已經從使用gwt rpc切換到請求工廠的一切,主要是因爲我現在可以將任何對象傳輸到客戶端,而無需修改第三方類來實現可序列化。您不必擁有一個定位器,只需使用靜態方法使用實現即可。如果你不希望讓他們的靜態你可以簡單地實現你的服務器軟件包的ServiceLocator並添加定位器= WhateverYourServiceIs.class到@Service註釋
這裏是我的版本,我用來訪問來自該quartz調度對象服務器。
客戶端代碼
@Service(value = SchedulerService.class)
public interface SchedulerRequest extends RequestContext {
Request<List<QuartzTriggerProxy>> getScheduledJobs();
Request<List<QuartzTriggerProxy>> searchSchedules(String searchString);
Request<Void> unscheduleJob(String keyName, String groupName);
Request<Void> pauseTrigger(QuartzTriggerKeyProxy triggerKey);
Request<Void> resumeTrigger(QuartzTriggerKeyProxy triggerKey);
Request<QuartzTriggerProxy> getTrigger(String keyName, String groupName);
Request<Void> fireTriggerNow(QuartzTriggerKeyProxy triggerKey);
Request<Void> fireJobNow(QuartzJobKeyProxy jobKey);
Request<Date> rescheduleJob(QuartzTriggerKeyProxy triggerKey, QuartzTriggerProxy trigger);
Request<AnalyticsTaskProxy> getTaskForTrigger(QuartzJobKeyProxy jobKey);
Request<String> getTriggerState(QuartzTriggerKeyProxy triggerKey);
}
服務代碼
public class SchedulerService {
public static void pauseTrigger(TriggerKey triggerKey) throws AnalyticsTaskException, SchedulerException {
getTaskEngine().pauseTrigger(triggerKey);
}
public static void resumeTrigger(TriggerKey triggerKey) throws AnalyticsTaskException, SchedulerException {
getTaskEngine().resumeTrigger(triggerKey);
}
public static Trigger getTrigger(String keyName, String groupName) throws AnalyticsTaskException, SchedulerException {
return getTaskEngine().getTrigger(TriggerKey.triggerKey(keyName, groupName));
}
public static void fireTriggerNow(TriggerKey triggerKey) throws AnalyticsTaskException, SchedulerException {
getTaskEngine().fireTriggerNow(triggerKey);
}
public static void fireJobNow(JobKey jobKey) throws AnalyticsTaskException, SchedulerException {
getTaskEngine().fireJobNow(jobKey);
}
}
克里斯您好,感謝回答。我寫了一些希望能夠工作的代碼。但我有一個錯誤:「域類型twitter4j.internal.json.StatusJSONImpl無法發送到客戶端」。這是因爲我爲抽象的'Status'類創建了一個代理,而不是'StatusJSONImpl'。我看到我必須使用'@ ExtraTypes',但這個子類是私有的,我不能從外部引用它。我能解決這個問題嗎? – damluar
這很糟糕,不知道如何解決該問題,除非您創建自己的Status類實現,然後添加一個拷貝構造函數來映射屬性並將代理指向此實現。 –