【问题标题】:How to forward service?wsdl to service.wsdl in Spring WSSpring WS中如何将service?wsdl转发到service.wsdl
【发布时间】:2017-03-27 12:03:37
【问题描述】:

首先为我糟糕的英语感到抱歉。我有以下 Spring WS 配置:

@Configuration
class WSConfig {

    ...

    @Bean
    Wsdl11Definition wsdlSchema() {

        SimpleWsdl11Definition wsdl11Definition = new SimpleWsdl11Definition();
        wsdl11Definition.setWsdl(new ClassPathResource("service.wsdl"));

        return wsdl11Definition;
    }
}

所以我可以使用 URL */service.wsdl 获取 WSDL 文件。

是否可以添加 URL 转发 */service?wsdl --> */service.wsdl 导致某些 WS 客户端使用 URL */service?wsdl。

【问题讨论】:

    标签: web-services wsdl spring-ws


    【解决方案1】:

    可能的解决方案是扩展 MessageDispatcherServlet

    class CustomMessageDispatcherServlet extends MessageDispatcherServlet {
    
    private static final String WSDL_SUFFIX_NAME = ".wsdl";
    
    private Map<String, WsdlDefinition> wsdlDefinitions;
    
    CustomMessageDispatcherServlet(ApplicationContext applicationContext) {
    
        super();
        setApplicationContext(applicationContext);
        setTransformWsdlLocations(true);
        setTransformSchemaLocations(false);
    }
    
    @Override
    protected void initStrategies(ApplicationContext context) {
    
        super.initStrategies(context);
        initWsdlDefinitions(context);
    }
    
    private void initWsdlDefinitions(ApplicationContext context) {
    
        wsdlDefinitions = BeanFactoryUtils
                .beansOfTypeIncludingAncestors(
                        context, WsdlDefinition.class, true, false);
    }
    
    // here with dealing with "wsdl" parameter in HTTP GET request
    @Override
    protected WsdlDefinition getWsdlDefinition(HttpServletRequest request) {
    
        if (HttpTransportConstants.METHOD_GET.equals(request.getMethod()) &&
                (request.getRequestURI().endsWith(WSDL_SUFFIX_NAME) || request.getParameter("wsdl") != null)) {
    
            String fileName = WebUtils.extractFilenameFromUrlPath(request.getRequestURI());
            return wsdlDefinitions.get(fileName);
    
        } else {
            return null;
        }
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      相关资源
      最近更新 更多