当前位置: 首页 > 知识库问答 >
问题:

scalaxb:ConnectException:工作进程已关闭

林铭
2023-03-14

在将我的Scala SOAP客户端代码更新为最新的scalaxb(1.2.1)并切换到功能(而不是Eithers)之后,我得到了一个ConnectException:Worker在发出简单SOAP请求时已经被关闭了

val service = (new aw.ServicesSOAPBindings with Soap11ClientsAsync with scalaxb.DispatchHttpClientsAsync {}).service

// list providers
service.listProviders(4) onComplete { 
  case Success(respond) => 
    println(s"Respond: code ${respond.ErrorCode}, messsage: ${respond.ErrorMessage}, Providers: ${respond.Providers.size}")
    if (!respond.Providers.isEmpty)
      listKnownProviders(respond.Providers)

  case Failure(failure) => println("Failure I : " + failure.printStackTrace())
}

我是否遗漏了任何Netty/调度配置步骤?

以下是stacktrace:

java.util.concurrent.ExecutionException: java.net.ConnectException: Worker has already been shutdown to https://service.xxxxxxx.com/wsdl/v4/
    at com.ning.http.client.providers.netty.NettyResponseFuture.abort(NettyResponseFuture.java:342)
    at com.ning.http.client.providers.netty.NettyConnectListener.operationComplete(NettyConnectListener.java:107)
    at org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:427)
    at org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:145)
    at com.ning.http.client.providers.netty.NettyAsyncHttpProvider.doConnect(NettyAsyncHttpProvider.java:1136)
    at com.ning.http.client.providers.netty.NettyAsyncHttpProvider.execute(NettyAsyncHttpProvider.java:937)
    at com.ning.http.client.providers.netty.NettyAsyncHttpProvider.nextRequest(NettyAsyncHttpProvider.java:1397)
    at com.ning.http.client.providers.netty.NettyAsyncHttpProvider.nextRequest(NettyAsyncHttpProvider.java:1393)
    at com.ning.http.client.providers.netty.NettyAsyncHttpProvider.remotelyClosed(NettyAsyncHttpProvider.java:1514)
    at com.ning.http.client.providers.netty.NettyConnectListener.operationComplete(NettyConnectListener.java:95)
    at org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:427)
    at org.jboss.netty.channel.DefaultChannelFuture.notifyListeners(DefaultChannelFuture.java:418)
    at org.jboss.netty.channel.DefaultChannelFuture.setFailure(DefaultChannelFuture.java:380)
    at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$1.operationComplete(NioClientSocketPipelineSink.java:115)
    at org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:427)
    at org.jboss.netty.channel.DefaultChannelFuture.notifyListeners(DefaultChannelFuture.java:413)
    at org.jboss.netty.channel.DefaultChannelFuture.setSuccess(DefaultChannelFuture.java:362)
    at org.jboss.netty.channel.AbstractChannel$ChannelCloseFuture.setClosed(AbstractChannel.java:355)
    at org.jboss.netty.channel.AbstractChannel.setClosed(AbstractChannel.java:185)
    at org.jboss.netty.channel.socket.nio.AbstractNioChannel.setClosed(AbstractNioChannel.java:197)
    at org.jboss.netty.channel.socket.nio.NioSocketChannel.setClosed(NioSocketChannel.java:84)
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.close(AbstractNioWorker.java:356)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.close(NioClientBoss.java:167)
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:306)
    at org.jboss.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:695)

提前感谢您的任何提示。

共有1个答案

卫博学
2023-03-14

在学习和使用Scala并发后,我能够为自己的问题提供一个答案:

服务。listProviders(4)返回Future。这里的根本问题是程序在未来完成之前终止onComplete只是注册回调的一种很酷的方式,它不会阻止任何东西。为了让一个简单的例子(如本例)起作用,我应该阻止程序终止,直到将来完成。有些人喜欢这样:

val futureList = service.listProviders(4) 
futureList onComplete {
   ...
}

Await.ready(futureList, 15 minutes)
 类似资料:
  • 编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答问题。 我的主要活动: 我的清单: 我的下一个代码: 下一个: 对于堆栈跟踪排序: 我的xml文件显示第一页: 要显示第二个选项卡的我的xml文件: 最后我想告诉你,我已经坚持了三天了。请更正此代码。中的“TabListener”接口不可用。但忽略它,在几毫秒后运行我的应用程序,然后“很遗憾,你的应用程序停止工作

  • 我试图在我的JavaFX2应用程序中添加一个图标,但是我找到的方法似乎不起作用。 图标的大小是32x32。 当我尝试 我希望这个能修好。

  • 想改进这个问题吗 通过编辑此帖子,更新问题,使其只关注一个问题。 我试图理解Wait async在C中是如何工作的,有一件事让我很困惑。我知道任何使用await关键字的方法都必须标记为async。我的理解是,当命中带有await关键字的行时,该行下面的代码不会执行。启动异步操作以在等待行中执行语句,并将控件返回给可以继续执行的调用方法。 问题#1:这个假设是正确的还是wait关键字下面的代码仍在执

  • 关于扩展包进程间通讯(以下简称 IPC)的基本概念,请先阅读 IPC 简介。 我们前面介绍了主进程中的 入口程序 和渲染进程中的 面板程序 的基本声明方法和交互方式,接下来我们将结合实际需求介绍两种进程间通讯的详细工作流程。 本节提及的所有相关 API 均可查询 Editor.Ipc 主进程 API 和 Editor.Ipc 渲染进程 API。 发送消息 主进程向面板发送消息 在主进程中,主要使用

  • 此代码不起作用。我不知道我需要添加什么资源。下面是Datepicker的链接:http://jsfiddle.net/rMhVz/1030/ 我的代码在下面。我真的需要让它发挥作用。谢谢你的帮助。提前谢谢。

  • 在学习熊猫的过程中,我已经尝试了好几个月来找出这个问题的答案。我在日常工作中使用SAS,这是非常好的,因为它提供了非核心支持。然而,SAS作为一个软件是可怕的,原因还有很多。 有一天,我希望用python和熊猫取代SAS,但我目前缺乏大型数据集的核心外工作流。我说的不是需要分布式网络的“大数据”,而是文件太大,无法放入内存,但又小到足以放入硬盘。 我的第一个想法是使用在磁盘上保存大型数据集,只将我