2015-08-26 5 views
2

Возможно ли настроить веб-службу spring-ws-core:2.x.x для принятия Soap 1.2 конвертов сообщений (http://www.w3.org/2003/05/soap-envelope), которые входят в комплект Content-Type=text/xml? Если да, то как/где? Наши конфигурации кода - это все java и аннотации.Конфигурировать веб-службу весны, чтобы принять контент типа text/xml soap 1.2 сообщения

ответ

0

Я был в состоянии обработать Soap 1.2 сообщения конвертов с Content-Type=text/xml путем создания пользовательских SaajSoapMessageFactory, где в методе parseMimeHeaders(), я принудительно установить MimeHeadersContent-Type значения заголовка для "application/soap+xml" (это то, что Soap 1.2 ожидает Content-Type быть) - таким образом, я принудительное изменение входящего запроса SOAP Content-Type должно быть "application/soap+xml".

private MimeHeaders parseMimeHeaders(InputStream inputStream) throws IOException { 
    MimeHeaders mimeHeaders = new MimeHeaders(); 
    if (inputStream instanceof TransportInputStream) { 
     TransportInputStream transportInputStream = (TransportInputStream) inputStream; 
     for (Iterator<String> headerNames = transportInputStream.getHeaderNames(); headerNames.hasNext();) { 
      String headerName = headerNames.next(); 
      for (Iterator<String> headerValues = transportInputStream.getHeaders(headerName); headerValues.hasNext();) { 
       String headerValue = headerValues.next(); 
       StringTokenizer tokenizer = new StringTokenizer(headerValue, ","); 
       while (tokenizer.hasMoreTokens()) { 
        if(headerName.equalsIgnoreCase(TransportConstants.HEADER_CONTENT_TYPE)) { 
         mimeHeaders.addHeader(headerName, "application/soap+xml"); 
         tokenizer.nextToken(); 
        } else { 
         mimeHeaders.addHeader(headerName, tokenizer.nextToken().trim()); 
        } 
       } 
      } 
     } 
    }  

    return mimeHeaders; 
} 

Это, однако, кажется мне полным взломом, поэтому я бы приветствовал любые альтернативные предложения или комментарии по этому поводу!