2012-06-27 2 views
0

Я создал и зарегистрировал веб-сервис. Теперь я хочу сделать простое веб-приложение для доступа к веб-сервису. Я использовал ось 2 для сервера веб-сервиса. клиенту предоставляются данные, которые будут обрабатываться веб-службой в виде файла формата XML (data.xml). В моей форме jsp есть текстовое поле (для указания местоположения data.xml) и кнопка «invoke», которая будет обращаться к вызову веб-службы. Я предполагаю, что jsp сначала отправит запрос на сервлет, а затем сервлет будет отвечать за вызов веб-службы. веб-служба размещена на ПК1, веб-приложение, содержащее JSP-доступ к веб-службе, находится в PC2, а data.xml находится в PC3. Таким образом, пользователь будет работать с PC3, открыть веб-браузер в PC3 для доступа к jsp в PC2, который затем вызовет веб-службу в PC1.Доступ к веб-сервису

  1. Какой синтаксис для вызова веб-сервиса из сервлета? Интересно, может ли ось 2 использоваться на стороне клиента.
  2. как я могу построить запрос SOAP (я предполагаю, что запрос SOAP построен в сервлете)? надеюсь, мне не нужно строить строку запроса SOAP по строке.
  3. относительно data.xml, я полагаю, jsp загрузит файл в сервлет, поэтому сервлет получит файл как параметр. Правильно ли это? thanks

ответ

0

Если вы хотите сделать это вручную, вы должны использовать стек webservice. Apache CXF и Metro - хорошие кандидаты.

При этом я не знаю, что вы хотите сделать с этим вашим data.xml.

  1. Зависит от структуры
  2. Вы не делаете. Для этого и есть основа.
  3. Если вам нужна дополнительная поддержка, вы должны взглянуть на готовые сервлеты. Или еще лучше использовать Spring framework :)
1

Поскольку вы используете Axis2, сгенерируйте прокси-сервер клиента с ним (wsdl2java - ваш лучший друг) и создаст стандартный прокси-сервер Java для вашего веб-сервиса. Нет необходимости вручную загружать руки, создавая конверт SOAP вручную (по крайней мере, в 99% сценариев).

Просто создайте WSDL (записывая его или создавая его с помощью java2wsdl), затем используйте его для создания прокси-сервера Java для вызова вашего веб-сервиса.

касается того, как использовать прокси-сервер ...

IMHO прямого вызова из JSP не является ни-ни. Лучше, чтобы JSP собирал данные и отправлял их в сервлет, затем выполнял вызов WebService внутри сервлета, управлял ответом (который будет чистым java-объектом, если вы используете фреймворк Axis2), обрабатывайте ошибки и затем пересылаете в другой JSP, давая результаты ,

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

Вот две задачи Ant для ведения WSDL и Client Generation.

<!-- create the wsdl file --> 
<target name="genwsdl"> 
    <echo message="Generate the WSDL file"/> 
    <taskdef name="java2wsdl" classname="org.apache.ws.java2wsdl.Java2WSDLTask" classpathref="axis2.classpath"/> 
    <java2wsdl className="org.stackoverflow.YourWebServiceClassName" 
       servicename="YourServiceName" 
       description="Whatever..." 
       outputLocation="./wsdl" 
       locationuri="http://localhost:8081/NameMe/CoolService"> 
      <classpath> 
       <pathelement path="${axis2.classpath}"/> 
       <pathelement location="./build/classes"/> 
      </classpath> 
    </java2wsdl> 
    <echo message="Generation of the WSDL file complete"/> 
</target> 


<target name="genclient" depends="genwsdl"> 
    <taskdef name="axis2-wsdl2java" classname="org.apache.axis2.tool.ant.AntCodegenTask" classpathref="axis2.classpath"/> 
    <axis2-wsdl2java wsdlfilename="./wsdl/YourWsdl.wsdl" output="./client overwrite="true"/> 
</target> 

После того, как вы сгенерировали клиентские классы (Proxy), вы можете использовать их для вызова веб-службы.

Это будет что-то вроде:

YourServiceStub stub = new YourServiceStub(wsEndPointUrl); 

затем в заглушке вы будете иметь метод для каждого удаленных опубликованного метода и статических классов для обернутых запросов/объектов ответов. Но в этот момент небольшое чтение документов клиента Axis2 является обязательным.

+0

Да, поэтому в основном jsp загрузит файл в сервлет, расположенный в PC2. Не могли бы вы дать мне синтаксис для создания SOAP-сообщения из сервлета и вызова веб-службы в сервлете? спасибо –

+0

Это немного сложно, я могу добавить пример муравья, делающего это. – BigMike

+0

Отлично, большое спасибо –

Смежные вопросы