Использование WCF WsHttpBinding WebService в Java

Я пытаюсь заставить Java-клиент взаимодействовать с WCF wshttpbinding WebService. Но я не могу этого сделать. Звонок либо зависает, либо я получаю "задумчивые предсказания".

Моя веб-служба - это стандартная Visual Studio, созданная "Шаблон библиотеки служб WCF".

Мой клиент веб-службы - это просто пустой проект IntelliJ, с соответствующим заглушкой, сгенерированным с помощью "Добавить клиента веб-службы" (указанная платформа веб-сервиса - JAX-WS 2.X).

Когда я меняю привязку к BasicHttpBinding, все работает безупречно.

Я пробовал играть с настройкой WsHttpBinding, в том числе отключать безопасность, но я не имел успеха.

Предложения? Мысли? Является ли WsHttpBinding частично поддерживаемой JAX-WS 2.0?

Ответ 1

Ваша проблема в том, что JAX-WS не поддерживает те же протоколы WS, которые используются в wsHttpBinding. Вместо этого вы должны использовать WSIT. WSIT доступен как часть библиотеки Metro, которая также доступна на Glassfish.

Я рекомендую использовать wsHttpBinding или ws2007HttpBinding, где это возможно, но вы все равно можете сделать довольно безопасный сервис с basicHttpBinding через SSL/Transport Auth.

Ответ 2

Я бы тщательно рассмотрел вашу конфигурацию WCF и удалил все свойства аутентификации, авторизации и т.д.. Помните, что по умолчанию WCF будет безопасно защищать ваш сервис при использовании безопасного транспорта/привязки. Поэтому, если вы не настроите свой Java-клиент на соблюдение этих требований безопасности, он скорее всего не сможет выполнить аутентификацию, и вы не увидите двух обратных.

После того, как вы поговорите с вами, постепенно работайте с добавлением каждого элемента безопасности до тех пор, пока ваш Java-клиент не будет правильно конфигирован.