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

从WildFly8/jdk8迁移到WildFly14/jdk11后WebService客户端中的java.net.SocketTimeoutException

宰父保臣
2023-03-14

就像https://docs.wildfly.org/14/developerguide.html所说的那样,我使用下面的代码配置了WebService客户端的超时:

((BindingProvider) port).getRequestContext().put("javax.xml.ws.client.connectionTimeout", timeoutInMs);
((BindingProvider) port).getRequestContext().put("javax.xml.ws.client.receiveTimeout", timeoutInMs);

只要我的WebService客户机运行在使用JDK8的WildFly8上,这就工作得很好。自从我将它迁移到WildFly14/JDK11之后,这个解决方案就不再起作用了。我试了几个地图键,比如:

BindingProviderProperties.REQUEST_TIMEOUT
BindingProviderProperties.CONNECT_TIMEOUT

"com.sun.xml.ws.connect.timeout"
"com.sun.xml.ws.request.timeout"

"com.sun.xml.internal.ws.request.timeout"
"com.sun.xml.internal.ws.connect.timeout"

有人知道吗?

你好,罗伯特

共有1个答案

壤驷安和
2023-03-14

我找到了一个可行的解决方案:

SOAP:使用WSDL2Java设置超时

因此,在我的示例中,工作代码是:

final Client cl = ClientProxy.getClient(port);
final HTTPConduit httpConduit = (HTTPConduit) cl.getConduit();
final HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(timeoutInMs);
httpClientPolicy.setReceiveTimeout(timeoutInMs);
httpConduit.setClient(httpClientPolicy);

我在WildFly14安装的模块中找到的所有需要的库:

system/layers/base/org/apache/cxf/impl/main/
system/layers/base/org/apache/cxf/main/
system/layers/base/javax/xml/ws/api/main/
system/layers/base/org/jboss/ws/tools/common/main/
 类似资料:
  • 大多情况,从npm客户端迁移至Yarn客户端都是很方便的。package.json文件依然可用,你只要在已有目录执行以下命令即可: $ yarn 要添加依赖,你可以使用: $ yarn add <package> 执行以上两个命令后,yarn都会在项目根目录创建或更新yarn.lock文件。如果你要将项目发布或者共享给同事,请确保包含yarn.lock文件。 执行以上两个命令中的任一个,项

  • 我需要在我的项目中使用一个web服务。我使用NetBeans所以我右键单击我的项目并尝试添加一个新的“Web服务客户端”。上次我检查时,这是创建web服务客户机的方法。但它导致一个AssertionError,它说: java.lang.AssertionError:org.xml.sax.SAXParseException;systemid:jar:file:/path/to/glassfish

  • 我们开发了一个培训应用程序,其中包含一个与EJB通信的独立java客户端。工作设置包括Windows 7上的JBoss AS 7.1和通过/bin/add user创建的应用程序用户。球棒 客户端是这样编码的: 客户端是用jboss客户端启动的。类路径中的jar。 现在,我们尝试改用WildFly 8.1,它已成功部署,但客户端失败 将JNDI查找名称更改为在部署期间打印出来的内容(例如)导致 在

  • 我的Google App Engine应用程序使用旧(v1)版本的Cloud Endpoint,据我在留档中看到的建议迁移到v2 Cloud Endpoint Framework。 该应用程序使用Java标准环境,是Android和iOS客户端的后端。 目前在API的开发过程中,我同时生成Android的客户端库和iOS移动应用程序的发现文档,如文档中所述: https://cloud.googl

  • 我有一个非常简单的(现有的)web服务,我希望使用JDK8生成一个web服务客户机。 我使用的是纯JDK8工具链,这意味着我使用的是JDK8目录中的wsimport工具。 现在问题来了:JDK8中的wsimport工具生成的Java源代码不符合JDK8 Javadoc。正如您可能知道的那样,Javadoc工具在JDK8中变得更加严格。 请考虑以下简单模式: 为此,wsimport工具将生成Java