[ 
https://issues.apache.org/jira/browse/CXF-9132?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17948789#comment-17948789
 ] 

Andriy Redko commented on CXF-9132:
-----------------------------------

[~cantos] I don't think there are multliple shutdown procedures,  what is 
happening apparently is that while one connection is being processed, the 
change to the HTTPS address causes the client behind the reference to be 
shutdown, while it is being recreated with a new HTTPS address.

> HttpClientHTTPConduit RefCount  Multiple release java.io.IOException: 
> shutdownNow closed
> ----------------------------------------------------------------------------------------
>
>                 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
>            Priority: Blocker
>         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
>
>
> [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)

Reply via email to