Использование службы WCF в клиенте Java с использованием wsHttpBinding - PullRequest
2 голосов
/ 26 августа 2011

Я пытаюсь заставить клиент Java взаимодействовать с wshttpbinding WebService WCF.Но я пока безуспешно.Вызов либо зависает, либо я получаю: «SOAPFaultException: сообщение не может быть обработано.Скорее всего, это связано с тем, что действие 'http://tempuri.org/ISampleService/GetServiceName' является неправильным, или потому что сообщение содержит недопустимый токен или токен контекста безопасности с истекшим сроком действия или из-за несоответствия между привязками.Маркер контекста безопасности будет недействительным, если служба прервет канал из-за неактивности.Чтобы предотвратить прерывание бездействующими сеансами службы преждевременно, увеличьте время ожидания получения для привязки конечной точки службы. »

Моя веб-служба - это просто сгенерированный по умолчанию Visual Studio 2010« Шаблон библиотеки служб WCF ».

Мой Java-клиент сгенерирован в NetBeans 7.0.1, а заглушки созданы с помощью нового Другое -> Веб-службы -> Клиент веб-службы, и я ссылаюсь на локальный WSDL.

Я пытался добавить WebServiceFeature wsAddressing = new AddressingFeature (true);в сгенерированном заглушки, но он просто выдает исключение выше.

Я вижу других людей с похожими проблемами;Тем не менее, я не вижу истинного разрешения.Любые предложения будут ценны.

1 Ответ

0 голосов
/ 26 августа 2011

Похоже, у вас есть проблема с форматированием мыла. Клиент Java не генерирует мыльный XML, который имеет смысл для службы WCF. Чтобы получить представление о том, какой мыльный XML ожидает служба, используйте приложение командной строки WcfTestClient для вызова службы. Это приложение динамически создает служебный прокси в приложении WinForm. В приложении вызовите операцию службы и перейдите на вкладку XML (рядом с вкладкой «Форматированный» в нижней части правой панели). На этой вкладке вы увидите и мыло с запросами и ответами.

Затем настройте службу WCF для трассировки сообщений и вызовите ее из клиента java, чтобы увидеть мыльный XML, который она отправляет. Теперь вы можете сравнить два сообщения мыла, чтобы увидеть, что отличается. Клиент Java должен быть настроен для генерации формата мыла, который ожидает WCF.

Команда WCF недавно выпустила некоторые привязки взаимодействия WCF специально для Java. Они могут не относиться к вашей конкретной ситуации, но, вероятно, их стоит рассмотреть.

...