2017-03-27 9 views
0

私のひどい英語の申し訳ありません。私は春のWS構成の一部を次のようしている。サービスを転送する方法wsdlをSpring WSのservice.wsdlに

@Configuration 
class WSConfig { 

    ... 

    @Bean 
    Wsdl11Definition wsdlSchema() { 

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

     return wsdl11Definition; 
    } 
} 

だから私は*/service.wsdl URL を使用してWSDLファイルを取得することができます。

は、それが可能* /サービスを転送するURLを追加することであるWSDL - ?> */service.wsdlいくつかのWSクライアントの原因は、URL * /サービスを使用するWSDL?。

答えて

0

解決策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; 
    } 
} 

を}延びる

関連する問題