Java CXF总线-添加带有自定义超时的HttpConductFeature
我正在尝试配置CXF总线,为所有客户端配置通用超时。为此,我使用HttpConductFeature并在初始配置期间将其添加到总线,如下所示:Java CXF总线-添加带有自定义超时的HttpConductFeature,java,spring,cxf,Java,Spring,Cxf,我正在尝试配置CXF总线,为所有客户端配置通用超时。为此,我使用HttpConductFeature并在初始配置期间将其添加到总线,如下所示: @Configuration public class CxfContext { @Autowired private SoapConfigurations soapConfigurations; @Bean public Bus bus() { SpringBus b = new SpringBus
@Configuration
public class CxfContext {
@Autowired
private SoapConfigurations soapConfigurations;
@Bean
public Bus bus() {
SpringBus b = new SpringBus();
List<Feature> features = ImmutableList.<Feature> builder() //
.add(loggingFeature()) //
.add(conduitFeature()) //
.build();
b.setFeatures(features);
return b;
}
private LoggingFeature loggingFeature() {
LoggingFeature f = new LoggingFeature();
f.setPrettyLogging(true);
f.setVerbose(true);
f.setLimit(-1);
return f;
}
private HttpConduitFeature conduitFeature() {
HttpConduitFeature feature = new HttpConduitFeature();
HttpConduitConfig conduitConfig = new HttpConduitConfig();
HTTPClientPolicy clientPolicy = new HTTPClientPolicy();
clientPolicy.setConnectionTimeout(10000);
clientPolicy.setReceiveTimeout(10000);
conduitConfig.setClientPolicy(clientPolicy);
feature.setConduitConfig(conduitConfig);
return feature;
}
}
客户端正在正确使用总线中配置的日志功能,但未考虑HttpConductFeature。因此,超时默认为1分钟,而不是配置的10秒
我现在看到的唯一解决方案是直接在工厂设置HttpConductFeature:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress(soapConfigurations.getUrl());
factory.setBus(bus);
factory.getFeatures().add(conduitFeature());
我是否需要一些额外的配置,以便生成的客户端直接使用总线中定义的HttpConductFeature
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress(soapConfigurations.getUrl());
factory.setBus(bus);
factory.getFeatures().add(conduitFeature());