Возможно ли настроить веб-службу 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 сообщения
2
A
ответ
0
Я был в состоянии обработать Soap 1.2
сообщения конвертов с Content-Type=text/xml
путем создания пользовательских SaajSoapMessageFactory
, где в методе parseMimeHeaders()
, я принудительно установить MimeHeaders
Content-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;
}
Это, однако, кажется мне полным взломом, поэтому я бы приветствовал любые альтернативные предложения или комментарии по этому поводу!