当前位置: 首页 > 面试题库 >

gwt-使用清单 在RPC呼叫中?

仉成益
2023-03-14
问题内容

我有以下方法的RPC服务:

public List<Serializable> myMethod(TransactionCall call) {...}

但是在分析此方法时收到警告,然后rpc调用失败

Analyzing 'my.project.package.myService' for serializable types
Analyzing methods:
public abstract java.util.List<java.io.Serializable> myMethod(my.project.package.TransactionCall call)
Return type: java.util.List<java.io.Serializable>
[...]
java.io.Serializable
Verifying instantiability
(!) Checking all subtypes of Object which qualify for serialization

看来我不能为列表使用Serializable
…我可以改用我自己的接口(类似于AsyncDataInterface,它实现Serializable接口),但事实是我的方法将返回列表自定义对象和基本对象(例如如Strings,int
....)。

所以我的问题是:

  • 这是标准行为吗?(我不知道为什么在这种情况下不能使用此界面)
  • 有人针对这种情况有解决方法吗?

问题答案:

在RPC调用之间传递对象时,在RPC接口中声明具体参数类型的一种很好的做法。如果由于某种原因您不能在RPC接口中使用具体的类,请尝试尽可能具体。

这是因为GWT编译器在发出JavaScript时必须考虑编译单元中List的所有可能变体。这包括在类路径中扩展List和Serializable接口的所有类。排列可能很大,这将影响您的编译时间以及应用程序下载大小。

所以最好的方法是将您的接口定义为

public ArrayList<YourType> myMethod(TransactionCall call) {...}

而不是

public List<Serializable> myMethod(TransactionCall call) {...}

这样,编译器只需要为ArrayList和YourType扩展生成编译单元。这样做的好处是可以缩短编译时间,并缩小JavaScript编译文件的数量,从而可以更快地下载应用程序。

如果必须在RPC调用中返回各种不相关的对象,请尝试创建包装器类,并使用包装的返回值返回包装器类的对象。在RPC方法定义中使用包装器类。抵制将包装的字段声明为Object或Serializable的冲动,您将否定使用包​​装器获得的所有序列化好处。相反,您可以为希望通过RPC调用返回的每种具体类型定义一个Wrapper接口和一小组Wrapper实现。



 类似资料:
  • 问题内容: 我需要从被叫方获取呼叫者信息(什么文件/什么行)。我了解到可以为此目的使用inpect模块,但不能完全使用它。 如何使用inspect获取那些信息?还是有其他方法来获取信息? 问题答案: 呼叫者的帧比当前帧高一帧。您可以用来查找呼叫者的框架。然后使用inspect.getframeinfo获取调用者的文件名和行号。

  • 1、接口声明 如果您希望在自己的CRM系统嵌入呼叫中心能力,需要对接智齿呼叫中心能力,在对接前请您阅读如下对接流程,以便您更好的完成对接。如果只对接基本呼叫能力,预计对接及调试过程1周左右即可完成。 第一步:获取第三方用户接口调用唯一凭证 请联系您的售后经理,获取您企业的如下信息: 1、companyid(企业id) 2、appid(第三方用户接口调用唯一凭证id) 3、app_key(第三方用户

  • 问题内容: 如果用户查看我的JavaScript文件,复制函数的内容并使用AJAX向我的服务器发送请求,会发生什么情况?有没有办法适当地防止这种情况的发生? 问题答案: 防止这种情况发生的方法与针对 任何 Web请求采取的保护方法没有什么不同。您这样做是为了使您的站点需要某种形式的身份验证(即用户必须登录),并且如果请求未正确身份验证,则不要执行任何操作。 通常,当您发出AJAX请求时,cooki

  • 我在调用我的onLeScan时遇到问题。我在开始扫描中放置了一个标签,每次都会被调用。出于某种原因,我的onLeScan永远不会被调用。有人看到我所做的有问题吗?onLeScan应该在开始扫描后立即调用,对吗? 编辑更改了我的onLeScan函数。仍然不起作用,但我认为我正在走向正确的道路。DeviceBeacon是一个只包含方法的类:getName()、getSignal()和getAddres

  • 本章主要讲述智齿客服系统中,呼叫中心业务模块的全部介绍,将以呼叫管理员和呼叫客服两个角色来进行讲解; 同时还会单独介绍IVR的配置流程。 5.1.客服业务-作为呼叫管理员 作为呼叫管理员,在本节主要介绍呼叫管理员对企业下的呼叫客服成员以及呼叫相关业务设置进行的操作。 技能组管理 通话设置 呼叫质检评分方案设定 路由策略设置 队列溢出策略设置 IVR设置 号码管理 5.1.1.技能组管理 技能组包括

  • 但是上行和下行都不起作用 当我使用上行链路或下行链路时,我的应用程序行为不端,而当我使用其他来源时,我的应用程序工作正常