Как создать клиент веб-сервиса на странице .jsp? - PullRequest
10 голосов
/ 10 апреля 2010

Я создал WSDL для своего веб-сервиса. Я хотел бы знать, как вызвать его со страницы jsp из другого моего веб-приложения.

Я хотел бы позвонить в веб-службу из jsp. Например, учитывая, что у меня очень простой веб-сервис, который отображал бы текст, введенный на моей странице index.jsp после нажатия кнопки Отправить, как бы я использовал URL-адрес wsdl для вызвать веб-службу, принимающую текстовое значение при нажатии кнопки отправить.

/ Викрам

Ответы [ 3 ]

5 голосов
/ 10 апреля 2010

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

Поскольку вы упомянули WebLogic и Workshop в комментарии, я предполагаю, что вы используете их :) WebLogic поддерживает JAX-WS, поэтому я предлагаю использовать его для вашего клиента.

По сути, сначала вам нужно сгенерировать "клиентские артефакты" (т. Е. Классы, которые вы будете использовать для вызова веб-службы).Один из способов сделать это - использовать задачу Ant clientgen.За подробностями обращайтесь к Вызов веб-службы из автономного клиента: основные шаги (должна быть возможность генерировать классы из Workshop, но я не могу сказать вам, как, я не использую его),

Как только сгенерированы клиентские артефакты, вызов веб-службы становится простым делом.Код будет похож на следующий:

ComplexService test = new ComplexService(), 
ComplexPortType port = test.getComplexPortTypePort();

BasicStruct in = new BasicStruct();

in.setIntValue(999);
in.setStringValue("Hello Struct");

BasicStruct result = port.echoComplexType(in);
System.out.println("echoComplexType called. Result: " + result.getIntValue() + ", " + result.getStringValue());
2 голосов
/ 10 апреля 2010

Вы говорите о том, чтобы вызывать его из браузера или вызывать из JSP для рендеринга чего-либо в HTML, отправленном браузеру? Это совершенно разные проблемы.

Если вы говорите о том, чтобы вызывать его из браузера, горячая подсказка - воспринимать полезную нагрузку SOAP как большой кусок XML-кода. Затем заполните несколько частей информации, необходимой для различения запроса SOAP, и затем используйте XMLHttpRequest для отправки XML на сервер. Наконец, вы извлекаете результат из полезной нагрузки возврата SOAP.

Если вы хотите просто вызвать веб-сервис из JSP, лучше всего создать класс-оболочку для служебных программ, который обернет всю систему, для вызова веб-службы, а затем вызвать эту оболочку из JSP с использованием стандартного Техника Java.

Редактировать - ответ на вопрос

Итак, в основном у вас есть страница index.jsp с текстовым полем. Вы нажимаете «Отправить», вы хотите, чтобы текст этой отправки был отправлен в веб-службу, а результат отображался в браузере.

Просто, исключая использование XHLHttpRequest, вы хотите создать клиент веб-службы (используя JAX-WS или Axis или любой другой набор инструментов веб-службы Java).

Тогда вы бы попросили сервлет или JSP взять запрос POST из формы, извлечь текст из запроса, а затем он вызвал бы веб-сервис. Наконец, результат будет возвращен клиенту (с использованием JSP или чего-либо еще).

Нельзя размещать HTML-код непосредственно в веб-службе, протоколы разные.

So

          text           text
        | --> |         | ----> |            
        |     | Servlet |result | Web Service
        |     |         | <---- |
Browser |     |         |
        |     |         | forward |
        |     |         | ------> | JSP  
        |                         |
        |    rendered result      |
        | <---------------------- |
0 голосов
/ 10 апреля 2010

Как данные достигают страницы сервлета Java?

JSON, XML?

если JSON , я рекомендую вам использовать jQuery , метод .get () - фантастика! И это то, как я использую на своих страницах ASP ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...