Как вызвать веб-службу Java (JAX-WS) из AJAX?
-
06-07-2019 - |
Вопрос
Я разрабатываю Java web services (JAX-WS) для вставки данных в базу данных mysql и извлечения их.Этот веб-сервис имеет два метода, т.е.Извлекайте из базы данных и вставляйте в нее TODB.Службы, кажется, работают нормально, когда я тестирую их с помощью netbeans IDE.
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?Пожалуйста, помоги мне, спасибо, Джей
Решение
У меня была такая же проблема, как и у вас, не удалось вызвать веб-службу Jax-ws из Javascript, но я нашел способ сделать это.
Используемый URL-адрес может быть вашим же (EndpointAddress). "http://localhost:8080/CalculatorApp/CalculatorWSService"
но когда вы создаете объект XMLHttpRequest из javascript, вам необходимо:
* Используйте метод POST, чтобы открыть URL-адрес, я пробовал с помощью GET, но у меня это не сработало.
* Установите заголовок запроса SOAPAction таким же, как в вашем wsdl, даже если он пустой "".
* Будьте очень осторожны с телом запроса для отправки, конверт soap должен быть правильным.
надеюсь, это поможет вам!.
Пока.
Пол Манджаррес.
Другие советы
С точки зрения клиента, я не ожидал существенных различий между Axis и JAX-WS. Все, что нужно клиенту, должно быть в WSDL.
Иногда случается так, что URL, используемый при разработке WebService, ссылается на хост и порт develpoment (и, возможно, даже ContextRoot). При развертывании на конкретном сервере любой из них может быть изменен. В идеале новый WSDL мог бы быть создан с новым " привязкой " Информация. Р>
Моим первым шагом было бы указать браузеру непосредственно на веб-службу, которую вы хотите вызвать. В моих средах, которые возвращают хороший " Привет, это веб-сервис " вид сообщения. Если вы получаете 401 не найденных ошибок, вам просто нужно изучить, как именно был развернут веб-сервис. Указан другой порт или корневой каталог контекста?