Как вызвать веб-сервис Java (JAX-WS) из AJAX? - PullRequest
1 голос
/ 01 августа 2009

Я занимаюсь разработкой веб-служб Java (JAX-WS) для вставки данных в базу данных MySQL и их извлечения. Этот веб-сервис имеет два метода: fetchFromDB и insertIntoDB. Службы работают нормально, когда я тестирую их с помощью IDE NetBeans.

Address: /CalculatorWSService
WSDL:    /CalculatorWSService?wsdl

, но когда я пытаюсь получить к нему доступ, используя объект xmlHttpRequest AJAX, предоставив URL http://localhost:8080/CalculatorApp/CalculatorWSService., он не может получить к нему доступ. Я разработал веб-сервисы на C #, и было так легко получить к ним доступ с помощью URL, но веб-сервисы Java, похоже, не следуют этому.

Мой вопрос

Какой URL-адрес использовать для доступа к операциям веб-службы в AJAX? (Нужно ли использовать «? Wsdl» в URL? Существует ли библиотека javascript ajax для удобного доступа к веб-службам JAX-WS? Веб-сервисы Apache Axis - лучший выбор по сравнению с JAX-WS? Пожалуйста, помогите мне, спасибо, Джей

Ответы [ 2 ]

1 голос
/ 04 мая 2010

У меня была такая же проблема, как у вас, я не мог вызвать веб-сервис Jax-ws из Javascript, но я нашел способ сделать это.

URL-адрес для использования может быть вашим (EndPointAddress) "http://localhost:8080/CalculatorApp/CalculatorWSService"

но когда вы создаете объект XMLHttpRequest из javascript, вы должны:

* Используйте метод POST, чтобы открыть URL, я пытался с GET, но у меня это не сработало.
* Установите заголовок запроса SOAPAction на заголовок в вашем wsdl, даже если он пуст "".
* Будьте очень осторожны с телом запроса для отправки, мыльный конверт должен быть правильным.

надеюсь, что это поможет вам.

Bye.
Пол Манджаррес.

1 голос
/ 01 августа 2009

С точки зрения клиента, я не ожидал существенных различий между Axis и JAX-WS. Все, что нужно клиенту, должно быть в WSDL.

Иногда случается так, что URL, используемый при разработке WebService, ссылается на хост и порт develpoment (и, возможно, даже ContextRoot). При развертывании на конкретном сервере любой из них может быть изменен. В идеале может быть создан новый WSDL с новой «связующей» информацией.

Моим первым шагом было бы указать браузеру непосредственно на веб-службу, которую вы хотите вызвать. В моей среде это возвращает приятное сообщение «Привет, это веб-сервис». Если вы получаете 401 не найденных ошибок, вам просто нужно изучить, как именно был развернут веб-сервис. Был ли указан другой порт или корневой каталог контекста?

...