为了避免Wildfly对同一WebService对象的重用,可以通过为每个请求创建一个新的客户端进行连接来解决此问题,而不是盲目地使用一个共享的客户端。
以下是示例代码:
public class ApiService {
private int connectTimeout = 10000;
private int readTimeout = 60000;
private String endpointUrl = "https://api.example.com/wsdl";
public MyResponse myApiMethod(MyRequest request) {
// create new client for each request to avoid Wildfly reusing WebService object
JaxWsProxyFactoryBean clientFactory = new JaxWsProxyFactoryBean();
clientFactory.setServiceClass(ApiServicePortType.class);
clientFactory.setAddress(endpointUrl);
clientFactory.setConnectTimeout(connectTimeout);
clientFactory.setReadTimeout(readTimeout);
clientFactory.setFeatures(Arrays.asList(new LoggingFeature()));
ApiServicePortType client = (ApiServicePortType) clientFactory.create();
// call WebService method
MyResponse response = client.myApiMethod(request);
return response;
}
}
在上面的示例中,每个请求都会创建一个新的Web服务客户端,使得每次调用都不会使用相同的服务对象,从而避免了Wildfly对同一WebService对象的重用。