Какой стандарт определяет, как поддержка MTOM / XOP должна указываться в WSDL?
Я добавляю поддержку вложений MTOM в существующую поддержку веб-сервисов на сервере приложений Home Grown. Инфраструктура веб-сервиса следует шаблону, аналогичному JavaEE5, аннотированные сервисы и объекты автоматически отображаются как веб-сервис с автоматическим созданием WSDL.
У меня есть фактический анализ и генерация, но я не смог определить, нужно ли мне обновить поколение WSDL, чтобы указать клиентам, что MTOM поддерживается и предпочтителен. Я нашел несколько противоречивых стандартов для того, чтобы указать поддержку MTOM, и я в растерянности относительно того, что используется в реальном мире.
Пока я нашел:
- Утверждение политики сериализации MTOM (WS- MTOMPolicy), версия 1.0 - из XML-мыла
- Утверждение политики сериализации MTOM 1.1 - от W3C
Насколько я вижу, W3c представляется более поздней версией XML Soap, однако они, похоже, используют другой элемент в другом пространстве имен для утверждения:
- W3C использует - MTOM в пространстве имен http://www.w3.org/2007/08/soap12-mtom-policy
- XML Soap использует - OptimizedMimeSerialization в пространстве имен http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization
Мне также понравился случайный пост на форуме, который, кажется, указывает, что Glassfish использовал XML Soap. Стандарт W3C является черновиком, но, похоже, это черновик с 2007 года.
Кто-нибудь знает, какая из этих спецификаций обычно используется? Или просто игнорировать WSDL, когда дело доходит до MTOM?
1 ответ
Так как этот вопрос перевернулся, вот что я решил, если кто-нибудь еще наткнется на это.
Похоже, что спецификация W3C, на которую есть ссылка в оригинальном сообщении, застоялась, так как все еще находится в черновом варианте. Существует также спецификация W3C для WSDL2, которая включает в себя определенный атрибут, указывающий на поддержку MTOM, однако WSDL2, по-видимому, не используется в дикой природе.
В результате этого и указаний на то, что он используется Glassfish, я выбрал спецификацию XmlSoap, связанную с этим вопросом. Однако я на самом деле не нашел никаких инструментов или клиентов, которые действительно интерпретируют утверждение MTOM, скорее, клиентские инструменты, с которыми я сталкивался, просят вас явно указать, должны ли они MTOM кодировать запрос или нет. Поэтому включение этого утверждения представляется спорным вопросом.
Однако, предупреждающее слово, хотя JAX-WS, по-видимому, не использует утверждение MTOM, оно использует PolicyAssertions для безопасности. Наличие любых PolicyAssertions означает, что JAX-WS игнорирует любую явно указанную конфигурацию безопасности. Таким образом, указание утверждения MTOM без включения также утверждений безопасности предотвращает вызов веб-службы, если она защищена каким-либо образом. Я не уверен, относится ли эта проблема к другим клиентским инструментам.