gpt4 book ai didi

java - 使用SyncProxy测试服务: "IOException while receiving RPC response"

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:03 26 4
gpt4 key购买 nike

我目前正在尝试使用 SyncProxy 库来测试我的应用程序的服务,以便使用 JMeter 进行负载测试。该应用程序工作正常,我在本地主机上运行它。

当我尝试在 JUnit 测试中使用 SyncProxy 时,问题就出现了,但它们失败了。

这是 JUnit 测试中使用的一段代码:

 ThemeServiceAsync themeServiceAsync = (ThemeServiceAsync) SyncProxy
.newProxyInstance(ThemeServiceAsync.class, MODULE_BASE_URL, GET_THEMES_SERVICE_NAME);

themeServiceAsync.getListTheme(codeEfs, codeSI, noStr, statut, new AsyncCallback<List<Theme>> (){

@Override
public void onFailure(Throwable arg0) {
// TODO Auto-generated method stub
System.out.println(arg0);
}


@Override
public void onSuccess(List<Theme> result) {
// TODO Auto-generated method stub
System.out.println(result);

}

});

我收到以下错误:接收 RPC 响应时出现 IOException

我使用 Debug模式来查找问题出在哪里。在服务器端,一切都很顺利,直到结果发送回客户端。在数据库中找到了结果,但我遇到了神秘的 500 错误。

经过挖掘,我发现抛出了这个异常(在AbstractRemoteServiceServlet中):

com.google.gwt.user.client.rpc.SerializationException: Type 'net.gicm.ector.shared.beans.Theme' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer.
For security purposes, this type will not be serialized.: instance = net.gicm.ector.shared.beans.Theme@1b7cb71

我发现很多线程都在谈论您的类需要实现“isSerialized”这一事实,但我不明白的是,我实际上是在本地主机上运行我的应用程序,并且一切正常,包括不同的服务。

但是当运行我的 JUnit 时,我遇到了这些错误。

最佳答案

看起来您弄乱了路径或类路径资源。GWT-RPC 使用一些生成的文件(称为策略)来实现某种安全机制(即禁止某些类型等)。在您的情况下,看起来在测试期间这些文件被放错位置或不在类路径上。

发生这种情况时,我通常通过 RemoteServiceServlet#getSerializationPolicy 进行调试(引用与 GWT 2.8.1 而不是 2.6 相关,但我认为这部分没有太大变化)。你最终会得到 RemoteServiceServlet#loadSerializationPolicy它尝试加载一些文件的位置,您将能够看到它尝试在哪些路径上加载以及为什么这些文件丢失。

关于java - 使用SyncProxy测试服务: "IOException while receiving RPC response",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44244647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com