当前位置: 首页 > 知识库问答 >
问题:

SpringBoot多个@Configuration和SOAP客户端

壤驷德寿
2023-03-14

我已经尝试了这篇简单的教程https://spring.io/guides/gs/consource-web-service/,它起作用了。

然后尝试连接到另一个SOAP服务,使用一个附加的@configuration和扩展WebServiceGatewaySupport的客户端类。似乎这两个客户机类都使用了相同的@configuration-class,这使得我首先添加的一个失败(未知的jaxb-context等)。如何确保客户端类使用正确的@configuration-class?

共有1个答案

潘嘉佑
2023-03-14

tl;dr:您必须将“marshaller()”方法的名称与客户端配置中的param变量名匹配。

发生的情况是,您的两个@Configuration类都为Jaxb2Marshaller使用了相同的bean名称,即(使用spring示例):

@Bean
public Jaxb2Marshaller marshaller() { //<-- that name
    Jaxb2Marshaller marshaller = new Jaxb2Marshaller();     
    marshaller.setContextPath("hello.wsdl");
    return marshaller;
}

在这里,“marshaller()”方法名是bean名,它将在下面的客户端中注入:

@Bean
public QuoteClient quoteClient(Jaxb2Marshaller marshaller) { //<-- used here
    QuoteClient client = new QuoteClient();
    client.setDefaultUri("http://www.webservicex.com/stockquote.asmx");
    client.setMarshaller(marshaller);
    client.setUnmarshaller(marshaller);
    return client;
}
INFO 7 --- [main] o.s.b.f.s.DefaultListableBeanFactory     : Overriding bean definition for bean 'marshaller'
@Configuration
public class ClientBConfiguration {

    @Bean
    public Jaxb2Marshaller marshallerClientB() {
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setContextPath("hello.wsdl");
        return marshaller;
    }

    @Bean
    public ClientB clientB(Jaxb2Marshaller marshallerClientB) {
        ClientB client = new ClientB();
        client.setDefaultUri("http://www.webservicex.com/stockquote.asmx");
        client.setMarshaller(marshallerClientB);
        client.setUnmarshaller(marshallerClientB);
        return client;
    }

}
    null
 类似资料:
  • 问题内容: 我正在寻找Java的SOAP客户端。 Apache Axis在我看来非常肿。我不明白为什么Java必须如此复杂。例如,在PHP中,我要做的就是: 我的$ response对象保存了我需要的所有信息。 有人可以建议我如何在Java中实现类似这样的事情而不会太麻烦呢? 提前谢谢了, 〜编辑1〜 @jarnbjo: 这对我非常有用。我遇到的困难是,需要哪些导入才能使代码运行? 我运行了以下命

  • 问题内容: 有没有一种方法可以将angularJS用作SOAP客户端或开发ng SOAP客户端服务? 问题答案: 当然。您所需要做的就是在JavaScript上实现SOAP调用。

  • 我正在尝试使用第三方组织提供的web服务。 服务的URL如下 有几个帖子带有相同的错误消息。我在这里阅读了这篇文章,并通过向客户端添加这些设置来尝试它: 之后,服务器根本没有响应! 所以,我有点被困在这里了。有人能把我推到正确的方向吗?

  • 问题内容: RMI是否自己处理多个客户端?即 是否可以同时使用多个客户端的服务器功能? 如果没有,我该怎么做? 如果是,它如何工作?每次 调用 都会创建一个新线程吗?如果一个客户端阻止了该功能,那么下一个客户端会发生什么?等等 问题答案: 是 这个怎么运作?每次调用都会创建一个新线程吗?如果一个客户端阻止了该功能,那么下一个客户端会发生什么?等等 它为每个客户端连接创建一个线程。 如果一个客户端调

  • 我使用cxf开发了一个java soap客户端。这个应用程序在mac上运行得很好,我在mac上运行它时附带了jdk v6。例如,我创建的服务将图像上传到magento安装,但这里我将介绍这个问题。 在Apache Cxf中,我转向了分块,以避免“严重”的xml请求。现在我体验到,由于开放的jdk,我的客户端应用程序无法在像ubuntu这样的linux发行版上运行。我在mac上通过安装openjdk

  • 我需要让客户能够建立许多连接。我使用Netty 4.0。不幸的是,所有现有的示例都没有显示如何创建大量连接。 这是正确的决定吗?还是会更好?