Рубрики
Без рубрики

Веб-сервисы SOAP в примере Java с использованием Eclipse

Веб-сервисы SOAP на java. Пример веб-службы SOAP на Java с использованием пошагового руководства Eclipse. Клиентский проект веб-служб SOAP, пример WSDL

Автор оригинала: Pankaj Kumar.

Веб-сервисы Soap на java могут быть разработаны многими способами. Мы узнали о Веб-сервисах SOAP JAX-WS в нашем последнем уроке, сегодня мы узнаем, как мы можем создать веб-сервис SOAP и его клиентскую программу с помощью Eclipse. Здесь мы не будем использовать JAX-WS, мы будем использовать Apache Axis , который интегрирован в Eclipse и обеспечивает быстрый и простой способ преобразования приложения в веб-сервис Java и создания клиентских заглушек с тестовой страницей JSP для целей тестирования.

Веб-сервисы SOAP на Java

Я использую Eclipse Mars Release (4.5.0) для этого урока, но я думаю, что эти шаги будут работать и со старыми версиями eclipse. Также убедитесь, что вы добавили Apache Tomcat или любой другой контейнер сервлетов в качестве сервера в Eclipse. Давайте начнем с нашей веб-службы Eclipse реализации прямо сейчас.

Пример веб-службы SOAP

Давайте начнем с примера нашего веб-сервиса SOAP в Eclipse. Прежде всего, мы создадим простой Динамический веб-проект в Eclipse, который будет содержать бизнес-логику для нашего приложения.

Нажмите на кнопку Далее выше, и вы получите следующую страницу, на которой будет указано имя вашего веб-проекта и Целевая среда выполнения . Обратите внимание, что я использую Apache Tomcat 8, вы также можете использовать любой другой стандартный контейнер сервлетов.

Нажмите “Далее”, и вам будет предложено указать” Корневой контекст ” и расположение каталога содержимого. Вы можете оставить их по умолчанию.

Нажмите кнопку Готово, и Eclipse создаст для вас скелет проекта. Давайте начнем с нашей бизнес-логики. Поэтому для нашего примера мы хотели бы опубликовать веб-сервис, который можно использовать для добавления/удаления/получения объекта. Итак, первый шаг-создать компонент модели.

package com.journaldev.jaxws.beans;

import java.io.Serializable;

public class Person implements Serializable{

	private static final long serialVersionUID = -5577579081118070434L;
	
	private String name;
	private int age;
	private int id;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
	
	@Override
	public String toString(){
		return id+"::"+name+"::"+age;
	}

}

Обратите внимание, что выше приведен простой компонент java, мы реализуем Сериализуемый интерфейс, потому что мы будем транспортировать его по сети. Мы также предоставили реализацию метода toString , которая будет использоваться, когда мы будем печатать этот объект на стороне клиента.

Следующим шагом является создание классов услуг, поэтому у нас будет интерфейс в виде Person Service и его простой класс реализации PersonServiceImpl .

package com.journaldev.jaxws.service;

import com.journaldev.jaxws.beans.Person;

public interface PersonService {

	public boolean addPerson(Person p);
	
	public boolean deletePerson(int id);
	
	public Person getPerson(int id);
	
	public Person[] getAllPersons();
}

Ниже приведен класс службы реализации, мы используем Map для хранения объектов Person в качестве источника данных. В реальном программировании мы хотели бы сохранить их в таблицах базы данных.

package com.journaldev.jaxws.service;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import com.journaldev.jaxws.beans.Person;

public class PersonServiceImpl implements PersonService {

	private static Map persons = new HashMap();
	
	@Override
	public boolean addPerson(Person p) {
		if(persons.get(p.getId()) != null) return false;
		persons.put(p.getId(), p);
		return true;
	}

	@Override
	public boolean deletePerson(int id) {
		if(persons.get(id) == null) return false;
		persons.remove(id);
		return true;
	}

	@Override
	public Person getPerson(int id) {
		return persons.get(id);
	}

	@Override
	public Person[] getAllPersons() {
		Set ids = persons.keySet();
		Person[] p = new Person[ids.size()];
		int i=0;
		for(Integer id : ids){
			p[i] = persons.get(id);
			i++;
		}
		return p;
	}

}

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

Веб-сервисы SOAP на Java с использованием Eclipse

Как только наша бизнес-логика будет готова, следующим шагом будет использование Eclipse для создания приложения веб-службы на основе этого. Создайте новый проект и выберите Мастер веб-службы.

Нажмите кнопку Далее, и вы получите страницу, на которой должны быть предоставлены сведения о веб-сервисе и его клиенте. Это самая важная страница в создании веб-сервиса. Убедитесь, что вы выбрали “Тип веб-службы” как “Веб-служба Java bean снизу вверх”, потому что мы реализуем подход “снизу вверх”. Существует два способа создания веб-службы:

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

В реализации службы укажите класс реализации PersonServiceImpl полностью классифицированный путь. Убедитесь, что вы переместили ползунок в сервисе и типе клиента в левую сторону, чтобы он мог генерировать клиентскую программу, а также пользовательский интерфейс для тестирования нашей веб-службы. Проверьте наличие конфигураций в реализации веб-службы, вы должны предоставить правильные сведения о времени выполнения сервера, времени выполнения веб-службы и проекте службы. Обычно они заполняются автоматически, и вам не нужно вносить здесь какие-либо изменения.

Для клиентских конфигураций вы можете указать имя клиентского проекта по своему усмотрению. Я оставил его по умолчанию как Пример клиента SOAP . Если вы нажмете на ссылку для выполнения веб-службы, вы получите различные варианты, как показано на рисунке ниже. Однако я оставил его по умолчанию.

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

Нажмите кнопку “Далее”, и вы получите страницу запуска сервера, нажмите кнопку “Запустить сервер”, а затем кнопка “Далее” будет включена.

Нажмите на кнопку Далее, и вы получите страницу для запуска “Обозревателя веб-служб”.

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

Мы можем провести здесь некоторое тестирование на вменяемость, но для нашего простого приложения я готов приступить к созданию клиентского приложения. Нажмите на кнопку Далее во всплывающем окне веб-служб Eclipse, и вы получите страницу для исходной папки клиентского приложения.

Нажмите на кнопку Далее, и вы получите различные варианты для выбора в качестве объекта тестирования. Я продолжаю использовать JAX-RPC JSP , чтобы клиентское приложение создавало страницу JSP, которую мы можем использовать.

Обратите внимание, что добавлены методы getEndpoint() и setEndpoint(Строка) , которые мы можем использовать для получения URL-адреса конечной точки веб-службы, и мы можем установить его на какой-либо другой URL-адрес в случае, если мы переместим наш сервер на другую конечную точку URL.

Нажмите кнопку Готово, и Eclipse создаст клиентский проект в вашей рабочей области, а также запустит страницу JSP для тестирования клиента, как показано ниже.

Вы можете скопировать URL-адрес и открыть его в любом браузере, который вы хотите. Давайте протестируем некоторые из представленных нами сервисов и посмотрим, что получится.

Тест веб-службы Eclipse SOAP

  • Добавить человека
  • getPerson
  • getAllPersons

    Обратите внимание, что сведения о человеке не печатаются в разделе результатов, это связано с тем, что это автоматически сгенерированный код, и нам нужно немного его переработать, чтобы получить желаемый результат.

    Откройте Result.jsp в клиентском проекте, и вы увидите, что он использует регистр переключения для создания вывода результата. Для метода getAllPersons() в моем случае это был случай 42. Обратите внимание, что в вашем случае все может быть совершенно по-другому. Я только что изменил код для случая 42, как показано ниже.

    После этого мы получим вывод ниже, обратите внимание, что Eclipse выполняет горячее развертывание здесь, поэтому мне не пришлось повторно развертывать свое приложение.

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

Веб-служба SOAP WSDL и конфигурации

Наконец, вы заметите, что файл WSDL создается в проекте веб – службы, как показано ниже.

Код PersonServiceImpl.wsdl:




 
  
   
   
    
     
      
     
    
   
   
    
     
      
     
    
   
   
    
     
      
     
    
   
   
    
     
      
     
    
   
   
    
     
      
     
    
   
   
    
     
      
     
    
   
   
    
   
   
    
     
      
     
    
   
  
  
   
    
     
     
     
    
   
  
 

   

      

      

   

   

      

      

   

   

      

      

   

   

      

      

   

   

      

      

   

   

      

      

   

   

      

      

   

   

      

      

   

   

      

         

       

         

       

      

      

         

       

         

       

      

      

         

       

         

       

      

      

         

       

         

       

      

   

   

      

      

         

         

            

         

         

            

         

      

      

         

         

            

         

         

            

         

      

      

         

         

            

         

         

            

         

      

      

         

         

            

         

         

            

         

      

   

   

      

         

      

   


Если вы откроете его в режиме дизайна в Eclipse, он будет выглядеть так, как показано на рисунке ниже.

Вы также можете получить доступ к файлу WSDL веб-службы через браузер, добавив ?wsdl к конечной точке веб-службы.

Вы также заметите, что web.xml модифицирован для использования оси Apache в качестве переднего контроллера для веб-службы.



  SOAPExample
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
    Apache-Axis Servlet
    AxisServlet
    org.apache.axis.transport.http.AxisServlet
  
  
    AxisServlet
    /servlet/AxisServlet
  
  
    AxisServlet
    *.jws
  
  
    AxisServlet
    /services/*
  
  
    Axis Admin Servlet
    AdminServlet
    org.apache.axis.transport.http.AdminServlet
    100
  
  
    AdminServlet
    /servlet/AdminServlet
  

На рисунке ниже показан веб-сервис и клиентский проект со всеми автоматически сгенерированными заглушками и страницами JSP для тестирования веб-службы.

Это все для веб-сервисов soap в примере java с использованием Eclipse, поскольку вы можете видеть, что вся сложная часть была выполнена Eclipse автоматически, и все наше внимание было сосредоточено на написании бизнес-логики для нашего веб-сервиса.