我目前正在使用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吗? 你有什么建议吗?
答案 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的代理服务的基本示例实现