пятница, 4 декабря 2009 г.

Authorization: Digest

Task: Authorization with the Digest authentication to .NET webservice on IIS.
Trouble: cannot get wsdl

log:
Test connection: <200: ok="ok"> http://server.net/
Test connection: <200: ok="ok"> http://server.net/_vti_bin/DotNetWebservice.asmx
Test connection: <401: unauthorized="unauthorized"> http://server.net/_vti_bin/DotNetWebservice.asmx?WSDL

Found (after analyze of packets):
IE:
Authorization: Digest username="test", uri="/_vti_bin/DotNetWebservice.asmx", ....
Java:
Authorization: Digest username="test", uri="/_vti_bin/DotNetWebservice.asmx?WSDL",...

понедельник, 7 сентября 2009 г.

Использование нескольких Namespace вебсервисов на одной модели (eRoom 6-7)

Проблема: Необходимо использовать один из двух Namespace в JAXBContext с одним и тем же наборов классов, генерированных с помощью XJC по одной схеме (Schema).
Технологии: Metro: JAXB, JAX-WS.
Комментарий: Реально Схемы eRoom 6-7 версий отличаются, но на уровне кода это можно будет решить.
Решение:
Генерируем классы по одной из схем (eRoom 7) с помощью утилиты XJC.
В коде клиента:
Создаем JAXBContext по полученному ObjectFactory и с следующими свойствами: JAXBRIContext.DEFAULT_NAMESPACE_REMAP и JAXBRIContext.ANNOTATION_READER. Где ANNOTATION_READER будет переопределять Namespace, т.к. первого свойства недостаточного (исходящие конверты создаются "правильно", а вот входящий обрабатывается только тэг сервиса).
Service также создаем с необходимым Namespace.