CXF Bus - 添加具有自定义超时的 HttpConduitFeature

2024-04-14

我正在尝试配置 CXF 总线,为所有客户端设置常见的超时。为此,我使用 HttpConduitFeature 并在初始配置期间将其添加到总线,如下所示:

@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;
    }

}

之后,在生成 Soap 客户端时,我使用 JaxWsProxyFactoryBean 并将总线设置为它:

@Configuration
public class SoapClientContext {

    @Autowired
    private Bus bus;

    @Bean
    public IService myService(SoapConfigurations soapConfigurations) {

        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

        factory.setAddress(soapConfigurations.getUrl());
        factory.setBus(bus);

        return factory.create(IService.class);
    }

}

客户端正确使用总线中配置的日志记录功能,但未考虑 HttpConduitFeature。所以超时时间是默认的1分钟,而不是配置的10秒。

我现在看到的唯一解决方案是直接在工厂中设置 HttpConduitFeature:

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

factory.setAddress(soapConfigurations.getUrl());
factory.setBus(bus);
factory.getFeatures().add(conduitFeature());

我是否需要一些额外的配置,以便生成的客户端直接使用总线中定义的 HttpConduitFeature?


我用下面的方法做到了

@Bean(name = "mltfClient")
  public Mltf mltf(MltfInMessageInterceptor in,MltfInMessageInterceptor out) {
    JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
    factoryBean.setServiceClass(Mltf.class);
    factoryBean.setAddress(address);      
    factoryBean.getOutInterceptors().add(out);
    factoryBean.getInInterceptors().add(in); 
    
    return (Mltf) factoryBean.create();  

  }
  @Bean HTTPConduit conduit(Mltf mtlf)
  {
    Client client = ClientProxy.getClient(mtlf);
    HTTPClientPolicy policy = new HTTPClientPolicy();
    policy.setReceiveTimeout(30000);
    policy.setConnectionTimeout(10000);
    policy.setConnection(ConnectionType.CLOSE);
    policy.setAllowChunking(false);
    HTTPConduit conduit=(HTTPConduit) client.getConduit();
    conduit.setClient(policy);
    return conduit;
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CXF Bus - 添加具有自定义超时的 HttpConduitFeature 的相关文章

  • 通过SOCKS代理连接Kafka

    我有一个在 AWS 上运行的 Kafka 集群 我想用标准连接到集群卡夫卡控制台消费者从我的应用程序服务器 应用程序服务器可以通过 SOCKS 代理访问互联网 无需身份验证 如何告诉 Kafka 客户端通过代理进行连接 我尝试了很多事情 包
  • Spring RestTemplate 使用 cookie 遵循重定向

    最近我遇到了一个问题 我需要做一个GET请求远程服务 我假设使用一个简单的 servlet 并且 RestTemplate 返回Too many redirects 经过一番调查 似乎对指定远程服务发出的第一个请求实际上只是一个 302 重
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 什么时候可以在 Java 中使用 Thead.stop() ?

    Thread stop 的 Java 文档听起来好像如果您调用 Thread stop 世界就会终结 已弃用 这种方法本质上是不安全的 停止线程 Thread stop 导致它解锁所有已锁定的监视器 作为未经检查的 ThreadDeath
  • Spring Security SAML2 使用 G Suite 作为 Idp

    我正在尝试使用 Spring Security 5 3 3 RELEASE 来处理 Spring Boot 应用程序中的 SAML2 身份验证 Spring Boot 应用程序将成为 SP G Suite 将成为 IDP 在我的 Maven
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • 生成的序列以 1 开头,而不是注释中设置的 1000

    我想请求一些有关 Hibernate 创建的数据库序列的帮助 我有这个注释 下面的代码 在我的实体类中 以便为合作伙伴表提供单独的序列 我希望序列以 1000 开头 因为我在部署期间使用 import sql 将测试数据插入数据库 并且我希
  • 如何避免 ArrayIndexOutOfBoundsException 或 IndexOutOfBoundsException? [复制]

    这个问题在这里已经有答案了 如果你的问题是我得到了java lang ArrayIndexOutOfBoundsException在我的代码中 我不明白为什么会发生这种情况 这意味着什么以及如何避免它 这应该是最全面的典范 https me
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • 使用 Mockito 模拟某些方法,但不模拟其他方法

    有没有办法使用 Mockito 模拟类中的某些方法 而不模拟其他方法 例如 在这个 诚然是人为的 Stock我想嘲笑的班级getPrice and getQuantity 返回值 如下面的测试片段所示 但我想要getValue 执行乘法 如
  • Freemarker 和 Struts 2,有时它计算为序列+扩展哈希

    首先我要说的是 使用 Struts2 Freemarker 真是太棒了 然而有些事情让我发疯 因为我不明白为什么会发生这种情况 我在这里问是因为也许其他人有一个想法可以分享 我有一个动作 有一个属性 说 private String myT
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • HashMap 值需要不可变吗?

    我知道 HashMap 中的键需要是不可变的 或者至少确保它们的哈希码 hashCode 不会改变或与另一个具有不同状态的对象发生冲突 但是 HashMap中存储的值是否需要与上面相同 为什么或者为什么不 这个想法是能够改变值 例如在其上调
  • 是否可以使用 Java Guava 将函数应用于集合?

    我想使用 Guava 将函数应用于集合 地图等 基本上 我需要调整 a 的行和列的大小Table分别使所有行和列的大小相同 执行如下操作 Table
  • Spring-ws:如何从没有“Request”元素的 xsd 创建 Wsdl

    尝试为客户端实现 SOAP Web 服务 我需要一个 wsdl 文件来通过soapUI 测试该服务 但正如您在下面看到的 这个 xsd 没有 Request 和 Response 方法 所有请求和响应都被定义为基本 ServiceProvi
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • OpenCSV:将嵌套 Bean 映射到 CSV 文件

    我正在尝试将 bean 映射到 CSV 文件 但问题是我的 bean 具有其他嵌套 bean 作为属性 所发生的情况是 OpenCSV 遍历属性找到一个 bean 然后进入其中并映射该 bean 内的所有数据 如果找到另一个 bean 它就
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp

随机推荐