0

我正在使用 Solrj 库从服务器类与 Solr 进行通信。要将对象传输到客户端,我目前正在创建新的 DTO 对象并使用 setter 来复制数据。

手动复制数据,尤其是当您有多个 DTO 对象时,这不是一个好方法。

我正在考虑使用代理类RequestFactory并将ValueProxy其映射到 Solrj 类。据我了解,我不需要EntityProxy,因为 Solrj 对象没有 id。它只是对象的集合,我不坚持。

在这种情况下使用 RequestFactory 是否有意义?我需要射频使用的所有这些定位器和其他接口吗?

关于这个主题的信息不多,尤其是关于ValueProxy's. 参考会很有用。

4

1 回答 1

0

我已经从使用 gwt rpc 切换到为所有内容请求工厂,主要是因为我现在可以将任何对象传输到客户端,而无需修改第三方类来实现可序列化。您不必有一个定位器,您可以简单地使用带有静态方法的实现。如果您不希望使它们成为静态,您可以简单地在您的服务器包中实现ServiceLocator并将 locator=WhateverYourServiceIs.class 添加到 @Service 注释

这是我用于从服务器访问石英调度程序对象的版本。

客户代码

    @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);
    }
}
于 2013-10-08T15:21:37.700 回答