首先,我将解释该项目。它是一个集成 Web 服务,它侦听请求并在内部使用另一个 Web 服务并处理其响应以获得所需的答案。我需要为“内部”Web 服务的每个请求添加一个自定义标头。我已经检查过使用下一个配置,处理程序是一个单例类。我需要对“内部服务”的每个新请求都创建一个新实例。我检查过有时请求“A”的标头使用请求“B”的值。我在第一个“内部”请求之前初始化标头的值(我需要调用没有任何soap标头的“内部”Web服务的方法,然后使用第一个响应中包含的值进行设置)。
谢谢
//ConfigurationClass
@Bean(name = "internalService")
@Scope(scopeName="prototype")
public JaxWsPortProxyFactoryBean internalService() {
JaxWsPortProxyFactoryBean bean = new JaxWsPortProxyFactoryBean();
try {
bean.setServiceInterface(internalService.class);
bean.setWsdlDocumentUrl(new URL("https://localhost/internalService.svc?wsdl" ));
bean.setNamespaceUri( "http://schemas.internalService.com/2019/04/");
bean.setServiceName("InternalService");
bean.setPortName("InternalServicePort");
bean.setEndpointAddress("https://localhost/internalService.svc");
bean.setHandlerResolver(wsHandlerResolver());
} catch (MalformedURLException e) {
e.printStackTrace();
}
return bean;
}
@Bean(name = "wsHandlerResolver")
public WebServiceHandlerResolver wsHandlerResolver() {
WebServiceHandlerResolver wshandlerResolver = new WebServiceHandlerResolver();
List handlers = new ArrayList();
handlers.add(webServiceHandler());
wshandlerResolver.setHandlers(handlers);
return wshandlerResolver;
}
@Bean(name = "webServiceHandler")
public WebServiceHandler webServiceHandler() {
WebServiceHandler webServiceHandler = new WebServiceHandler();
return webServiceHandler;
}
//HandlerResolver class
public class WebServiceHandlerResolver implements HandlerResolver {
private List<Handler> handlers;
public List<Handler> getHandlerChain(PortInfo portInfo) {
return handlers;
}
杨__羊羊
开满天机
相关分类