Spring全球客户接口

Spring全球客户接口,spring,spring-integration,spring-ws,Spring,Spring Integration,Spring Ws,我有一个传统的应用程序,它消耗了大量的客户服务。最近,需要为每个请求添加自定义http安全头。一种方法是为每个WebServiceTemplate添加一个ClientInterceptor,但我觉得这是一个位代码重复。有没有一种方法可以应用全局客户端interceptor 正如我所说的,这是一个遗留系统,它仍然构建在Spring Fw 3.2.2.RELEASE和Spring ws 2.0.6-RELEASE的基础上,您可以实现一个通用的ClientInterceptor,如下所示: publi

我有一个传统的应用程序,它消耗了大量的客户服务。最近,需要为每个请求添加自定义http安全头。一种方法是为每个WebServiceTemplate添加一个ClientInterceptor,但我觉得这是一个位代码重复。有没有一种方法可以应用全局客户端interceptor


正如我所说的,这是一个遗留系统,它仍然构建在Spring Fw 3.2.2.RELEASE和Spring ws 2.0.6-RELEASE的基础上,您可以实现一个通用的
ClientInterceptor
,如下所示:

public类AddCustomSecurityHeader实现ClientInterceptor{
@凌驾
公共布尔HandlerRequest(MessageContext MessageContext)引发WebServiceClientException{
TransportContext上下文=TransportContextHolder.getTransportContext();
HttpComponentConnection=(HttpComponentConnection)上下文。getConnection();
addRequestHeader(“自定义安全头”、“lorem ipsum”);
返回true;
}
}
然后声明类型为
WebServiceTemplate
@Bean

@Bean
public WebServiceTemplate webServiceTemplate() {
    WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
    // add your current configuration here

    ClientInterceptor[] interceptors = {new AddCustomSecurityHeader()};
    webServiceTemplate.setInterceptors(interceptors);
    return webServiceTemplate;
}

我希望有帮助

您可以实现一个通用的
ClientInterceptor
,如下所示:

public类AddCustomSecurityHeader实现ClientInterceptor{
@凌驾
公共布尔HandlerRequest(MessageContext MessageContext)引发WebServiceClientException{
TransportContext上下文=TransportContextHolder.getTransportContext();
HttpComponentConnection=(HttpComponentConnection)上下文。getConnection();
addRequestHeader(“自定义安全头”、“lorem ipsum”);
返回true;
}
}
然后声明类型为
WebServiceTemplate
@Bean

@Bean
public WebServiceTemplate webServiceTemplate() {
    WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
    // add your current configuration here

    ClientInterceptor[] interceptors = {new AddCustomSecurityHeader()};
    webServiceTemplate.setInterceptors(interceptors);
    return webServiceTemplate;
}

我希望有帮助

谢谢你的评论。为什么需要为拦截器注入WebServiceTemplate?考虑到我将为不同的服务使用此模板;我将不得不使用不同的封送器/解封器配置创建不同的模板,这与我尝试不复制配置时所做的相同。这是一个输入错误:)我的错误,我刚刚注意到您需要一个安全标头,我是否正确地假设它是一个授权标头?正确。这是一个自定义的安全头。不是标准授权,而是http头。您的评论还为我提供了一个bulp:),我将扩展wstemplate,以便在空拦截器列表中预定义自定义拦截器。这应该行得通编辑——这是一个反模式且难以维护的案例。我想我应该按照斯坦德的方式来做。完成了,也许现在更有用:)谢谢你的评论。为什么需要为拦截器注入WebServiceTemplate?考虑到我将为不同的服务使用此模板;我将不得不使用不同的封送器/解封器配置创建不同的模板,这与我尝试不复制配置时所做的相同。这是一个输入错误:)我的错误,我刚刚注意到您需要一个安全标头,我是否正确地假设它是一个授权标头?正确。这是一个自定义的安全头。不是标准授权,而是http头。您的评论还为我提供了一个bulp:),我将扩展wstemplate,以便在空拦截器列表中预定义自定义拦截器。这应该行得通编辑——这是一个反模式且难以维护的案例。我想我应该按照斯坦德的方式来做。完成了,也许现在更有帮助:)