[
https://issues.apache.org/jira/browse/CXF-9132?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
cantos song updated CXF-9132:
-----------------------------
Description:
[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 ); }
}
was:
[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.
!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 ); }
}
> HttpClientHTTPConduit RefCount Multiple release
> ------------------------------------------------
>
> 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, 4.1.2, 4.0.8
> 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)