Переписать заголовок "Content-Type" и границы MIME с помощью JAX-WS и MTOM/XOP
У меня есть спецификация, которой я должен соответствовать, которая предъявляет некоторые довольно необычные требования (по историческим причинам) при предоставлении и использовании веб-службы с использованием MTOM/XOP:
В итоге, HTTP-заголовок Content-Type должен быть закодирован следующим образом: информация start и info должны быть закодированы как отдельные параметры Content-Type: start-info="application/soap+xml";action="urn:ihe:iti:2007:RetrieveDocumentSet"
- в отличие от этого, спецификация MTOM / XOP требует:
Content-Type: multipart/related;start="...";type="application/xop+xml";boundary="...";start-info="application/soap+xml;action=\"urn:ihe:iti:2007:RetrieveDocumentSet\""
- поэтому "действие" включено и экранировано в параметре "start-info". Мы используем JAX-WS для предоставления и использования веб-службы, и я не вижу работающего решения для изменения заголовков и границ MIME в соответствии с требованиями спецификации.
То же самое относится к границам MIME, отправленным с сообщением веб-службы.
Java7 и включенная в Java8 реализация JAX-WS, кажется, справляются с этим по-разному, то есть: Java7 выполняет кодирование в соответствии со спецификацией, которой я должен соответствовать, в то время как Java8 делает это в соответствии со спецификацией MTOM / XOP. Я не могу вернуться к Java8, потому что другие библиотеки, которые я использую, нуждаются в Java8
Есть ли способ изменить поведение JAX-WS или перехватить и изменить границы заголовков / MIME до достижения другой системы?
1 ответ
Между тем мы нашли ответ: можно использовать кастом TubeFactory
в приложении. Это может вернуть стандарт HttpTransportPipe
с измененным Codec
реализация, которая изменяет заголовок Content-Type в getStaticContentType(Packet)
метод.