corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

Сквозная передача двоичных данных – вложение SOAP 3: создание веб-службы

Цель этого упражнения состоит в создании веб-приложения, содержащего веб-службу. Веб-служба должна быть делегирована в ранее созданный модуль EJB для поиска изображений. Следовательно, модуль EJB необходимо поместить в путь классов веб-приложения.

Руководства этой учебной карты

Содержимое на этой странице относится к среде IDE NetBeans 6.1
  1. Обзор
  2. Создание модуля EJB
  3. => Создание веб-службы
  4. Тестирование веб-службы
  5. Изменение файлов схемы и WSDL для передачи двоичных файлов
  6. Создание клиента Swing
  7. Протоколирование и оптимизация веб-службы

Создание веб-службы

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

Создание веб-службы:

  1. Выберите "File > New Project" (Ctrl-Shift-N). Откроется мастер создания проекта. Выберите "Web Application" в категории "Web". Нажмите кнопку "Next". Откроется страница "Name and Location".
  2. Введите FlowerService в поле "Project Name". Выберите расположение, требуемое для этого проекта: это расположение следует использовать и для других проектов, создаваемых для данного сквозного приложения. Примите значения по умолчанию для остальных параметров и нажмите кнопку "Next". Откроется страница "Server and Settings".
  3. Выберите сервер приложений и версию Java EE. Эти значения должны совпадать для всех проектов в сквозном приложении. Нажмите кнопку "Finish". В результате создается новый проект веб-приложения.
  4. Поместите модуль EJB в путь классов проекта веб-приложения, обеспечив таким образом доступ создаваемой веб-службы к модулю EJB. Щелкните узел "Libraries" веб-приложения правой кнопкой мыши и выберите "Add Project", как показано ниже.


    Контекстное меню узла "Libraries" с пунктом "Add Libraries"

    Затем перейдите к модулю EJB и выберите его. Теперь должен выводиться новый узел для модуля EJB, добавленный к узлу "Libraries" веб-приложения, как показано ниже:


    Узел "Libraries", показан новый подузел модуля EJB "Flower Album"

  5. Щелкните правой кнопкой мыши узел "FlowerService" и выберите "New > Web Service". В качестве альтернативы выберите "New > Other", а затем выберите "Web Service" в разделе "Web Services" мастера создания файла. Откроется мастер "New Web Service".
  6. В мастере "New Web Service" введите в поле "Web Service Name" значение FlowerService, а в поле "Package Name" – значение flower.album. Выберите "Create Web Service" в "Existing Session Bean", а затем перейдите к модулю EJB и выберите его, как показано ниже:


    Результат

  7. Нажмите кнопку "OK" в диалоговом окне "Browse Enterprise Bean". Выполняется возврат к мастеру "New Web Service". Нажмите кнопку "Finish". В приложение добавляется инфраструктура веб-службы, включающая в себя заглушки методов, полученные из модуля EJB, как показано ниже:


    Вид исходного кода Java созданной службы "FlowerService"

  8. Щелкните кнопку переключения "Design" верхнем левом углу редактора. При этом открывается средство проектирования "Web Service Visual Designer", показанное ниже:


    Вид графического интерфейса средства проектирования веб-службы "Flower Service"

    Средство "Web Service Visual Designer" используется для просмотра структуры веб-службы в целом. Кроме того, к веб-службе можно добавлять функциональные возможности нажатием таких кнопок, как "Add Operation". Раздел "Quality of Service" позволяет простым образом включать расширенные функции, например, безопасность веб-службы.

  9. Нажмите кнопку переключения "Source" для перехода обратно в окно "Source". Перепишите класс следующим образом:
    @WebService(serviceName = "FlowerService")
    
    public class FlowerService {
    
        @EJB
        private FlowerRemote ejbRef;
    
        @WebMethod(operationName = "getFlower")
        public Image getFlower(String name) throws IOException {
            byte[] bytes = ejbRef.getFlower(name);
            return getImage(bytes, false);
        }
    
        @WebMethod(operationName = "getThumbnails")
        public List<Image> getThumbnails() throws IOException {
            List<byte[]> flowers = ejbRef.allFlowers();
            List<Image> flowerList = new ArrayList<Image>(flowers.size());
            for (byte[] flower : flowers) {
                flowerList.add(getImage(flower, true));
            }
            return flowerList;
        }
    
        private Image getImage(byte[] bytes, boolean isThumbnail) throws IOException {
            ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
            Iterator readers = ImageIO.getImageReadersByFormatName("jpeg");
            ImageReader reader = (ImageReader) readers.next();
            Object source = bis; // File или InputStream
            ImageInputStream iis = ImageIO.createImageInputStream(source);
            reader.setInput(iis, true);
            ImageReadParam param = reader.getDefaultReadParam();
            if (isThumbnail) {
                param.setSourceSubsampling(4, 4, 0, 0);
            }
            return reader.read(0, param);
        }
    
                }

Веб-службу на этом можно считать готовой: она делегирована в модуль EJB, и реализован вывод ее изображений.

Что дальше?

Тестирование веб-службы


Оставить комментарии и предложения, обратиться за поддержкой и получить информацию о последних достижениях в области функциональных возможностей разработки для Java EE с помощью среды IDE NetBeans можно в списке рассылки .

Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems