[ https://issues.apache.org/jira/browse/CXF-9132?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andriy Redko resolved CXF-9132. ------------------------------- Resolution: Fixed Documentation updated: https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=49941#ClientHTTPTransport(includingSSLsupport)-DefaultClientTransport > HttpClientHTTPConduit releases the client while there are connection(s) still > using it > -------------------------------------------------------------------------------------- > > Key: CXF-9132 > URL: https://issues.apache.org/jira/browse/CXF-9132 > Project: CXF > Issue Type: Bug > Components: Transports > Affects Versions: 4.1.0, 4.0.5, 4.0.6, 4.0.7, 4.1.1 > Environment: JDK 21 > CXF 4.0.5/4.0.6/4.0.7/4.1.0/4.1.1 > Reporter: Cantos Song > Assignee: Andriy Redko > Priority: Major > Fix For: 4.1.2, 4.0.8, 3.6.7 > > Attachments: 438528865-8f282ba8-c4de-4451-b2ca-a8f76c79b643.png, > TestCxf.java, image-2025-04-29-17-49-06-378.png, > image-2025-04-29-17-49-16-376.png, image-2025-05-07-11-25-24-799.png, > image-2025-05-08-09-27-38-409.png, image-2025-05-08-09-27-59-002.png, > image-2025-05-08-09-28-05-723.png > > > [https://github.com/apache/cxf/pull/1777/files] > When I used version 4.0.4 without any issues, all subsequent versions had > problems. > If the address is modified, it will be released multiple times. > > throw java.io.IOException: shutdownNow > throw java.io.IOException: closed > > !image-2025-04-29-17-49-16-376.png! > !image-2025-04-29-17-49-06-378.png! > import jakarta.jws.WebMethod; > import jakarta.jws.WebParam; > import jakarta.jws.WebResult; > import org.apache.commons.lang3.RandomUtils; > import org.apache.cxf.binding.soap.SoapMessage; > import org.apache.cxf.interceptor.Fault; > import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; > import org.apache.cxf.phase.AbstractPhaseInterceptor; > import org.apache.cxf.phase.Phase; > import java.util.ArrayList; > import java.util.List; > public class TestCxf { > public static void main(String[] args) throws InterruptedException { > HTNGOutboundWebService byAddress = getByAddress(); > int i = 0; > while (i <= 300) { > Thread.ofVirtual().start(new Runnable() { > @Override > public void run() { > try > { byAddress.ratePlanSubmitRequest(""); } > catch (Exception e) { > if (!e.getCause().toString().contains("HTTP response")) > { e.printStackTrace(); } > } > } > } ); > i++; > } > Thread.sleep(100000); > } > public static class HTNGHeaderOutInterceptor1 extends > AbstractPhaseInterceptor<SoapMessage> { > static List<String> address = new ArrayList(); > public HTNGHeaderOutInterceptor1() > { super(Phase.PREPARE_SEND); address.add("https://www.baidu.com"); > address.add("https://www.tencent.com"); } > @Override > public void handleMessage(SoapMessage message) throws Fault > { int i1 = RandomUtils.secure().randomInt(0, 2); > message.put(org.apache.cxf.message.Message.ENDPOINT_ADDRESS, > address.get(i1)); } > } > public static HTNGOutboundWebService getByAddress() > { JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean(); > jaxWsProxyFactoryBean.setServiceClass(HTNGOutboundWebService.class); > jaxWsProxyFactoryBean.getOutInterceptors().add(new > HTNGHeaderOutInterceptor1()); HTNGOutboundWebService soap = > (HTNGOutboundWebService) jaxWsProxyFactoryBean.create(); return soap; } > public interface HTNGOutboundWebService > { @WebMethod(operationName = "RatePlan_SubmitRequest", action = > "http://htng.org/PWSWG/2010/12/RatePlan_SubmitRequest") @WebResult(name = > "OTA_HotelRatePlanNotifRS", targetNamespace = > "http://www.opentravel.org/OTA/2003/05", partName = > "OTA_HotelRatePlanNotifRS") public void ratePlanSubmitRequest( > @WebParam(partName = "OTA_HotelRatePlanNotifRQ", name = > "OTA_HotelRatePlanNotifRQ", targetNamespace = > "http://www.opentravel.org/OTA/2003/05") String aa ); } > } > -- This message was sent by Atlassian Jira (v8.20.10#820010)