Переписать заголовок "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) метод.

Другие вопросы по тегам