通用CXF服务器实现

时间:2018-04-10 06:44:25

标签: java spring cxf

我目前正在使用Spring Boot和CXF进行项目。 我已成功为特定的Web服务(使用相关的WSDL)创建了SOAP客户端和SOAP服务器。像魅力一样。

现在我需要实现某种代理服务器,它只解释SOAP-Header(安全性,自定义标头)并根据自定义标头的内容将SOAP-Service路由到不同的后端。

但我找不到一般处理服务电话的选项。所有在线解决方案都建议我在代理中拥有不同代理服务的所有WSDL,并生成内部cxf模型。

有没有办法在没有WSDL /内部模型的情况下实现这一目标? Haven还没有找到解决方案。

我遵循的一种方法是实现自定义CXF实现器并将其绑定到端点。

@Bean
public Endpoint endpoint()
{
        EndpointImpl endpoint = new EndpointImpl(springBus(), customImplementor);
        endpoint.publish("/proxy");

        return endpoint;
}

但是我没有扩展的实现者接口。

我在这里想念smth吗? 你有什么建议吗?

2 个答案:

答案 0 :(得分:1)

听起来好像你需要处理程序...... 只需定义一个拦截器类,它们就是这样做的。

@Bean
public Endpoint endpoint()
{
    InterceptorClass handler = context.getBean(InterceptorClass.class);
    EndpointImpl endpoint = new EndpointImpl(springBus(), customImplementor);
    endpoint.setHandlers(Arrays.asList(handler));
    endpoint.publish("/proxy");

    return endpoint;
}

在此处查看Oracle Doc示例,了解如何创建拦截器类。

答案 1 :(得分:1)

为什么不使用cxf-camel并创建代理服务,它有能力根据您的头部参数的要求进行路由。 Here是使用spring-boot-cxf和spring-boot-camel的代理服务的基本示例实现