java - 从 Java 调用(工作的)REST WebService 冻结而没有响应
问题描述
对于这个问题,我只提供了最少的代码,因为提供与此问题相关的所有内容都太多了。如果您有想法并希望看到具体的实现,我当然会在之后提供。
由于这可能是一个普遍的问题,而不是代码中的错误,我想无论如何这已经足够了。
我写了一个 JUnit 系统测试来测试我的一些 Web 服务。如果我为每个方法测试 1 个服务(例如“writeTest”),它就可以工作。每次测试。如果我也使用 SOAP UI 调用它们,它们也会起作用。
不幸的是,由于我正在尝试向我的数据库写入、读取和删除对象,因此我需要先写入一个对象才能读取它。这就是问题所在。在写作作品时,阅读它会导致冻结。
- 没有例外
- 没有日志
- 没有 JUnit 错误
- 没有超时
- 没有反应
- 通过远程调试我已经确认,我的服务甚至没有被调用。
如果我更改顺序,阅读作品和写作会导致冻结状态。如果我调用两次写作或阅读,它仍然有效!但是,当我将2 个 不同的 服务调用放入1 个方法中时,我就遇到了这个问题。
在这花了 2 天后,我通过关闭客户端连接并打开一个新连接找到了解决方法。不幸的是,这不是很干净。
任何有关如何解决此问题的建议都值得赞赏。由于客户端包含自己编写的代码,这可能毕竟是一个编程问题,但我们假设它不是,因为它在其他几个类中使用完全没有问题(不过,如果你有,请随时询问更多代码一个猜测,问题可能是什么)。
谢谢你。
@Test
public void myTests() {
//Create simple object first
try {
client.getMyWebService().writeTest(repo, object, prop);
} catch (final WebApplicationException | ParseException e) {
Assert.fail(e.getMessage());
}
resetClient();
//Read the object
Properties result= new DataExtensionObjectParam();
try {
result = client.getMyWebService().readTest(repo, object);//Freeze
} catch (final WebApplicationException | ParseException e) {
Assert.fail(e.getMessage());
}
}
private void resetClient() {
client.closeClient();
try {
client = getStandardClient();
} catch (IOException ex) {
ex.printStackTrace();
}
}
解决方案
推荐阅读
- javascript - 如何为在套接字事件中连接的每个用户保持价值
- javascript - Picker.Item 颜色在本机反应中不起作用
- java - 没有发现任何活动来处理来自广播接收器的意图
- sql - 小数的长度有区别吗?
- sqlite - 离子3 sqlite不返回值
- c# - LINQ to Entities 无法识别方法“System.Object GetValue(System.Object)”
- java - 如何将 XML 文档导出到文件系统
- c# - 注册失败后打开模态
- ruby - Ruby 条件格式获取 badRequest:无效请求 [0]:未设置请求。(谷歌::Apis::ClientError)
- npm - Gulp sourcemaps 模块没有创建文件,没有错误