Создание на основе EJB веб-сервиса с использованием JAX-WS

Создавать будем Java Web Service приложение, которое назовем CustomerApplication. Приложение будет просто возвращать количество клиентов в заданном регионе. Наше JAX-WS приложение будет основываться на stateless session EJB. Мы будем использовать класс в качестве веб-сервиса и встраиваемые session EJB чтобы обеспечить функциональность для веб-сервиса. Stateless и singleton session beans могут использоваться в качестве endpoint-ов. В EJB 3.1 stateful session beans тоже могут использоваться в качестве endpoint-ов.

1) Создание EJB обеспечивающего функциональность

Для простоты EJB будет поддерживать только два метода getCustomerCount и getCustomerCountByRegion.

Открываем NetBeans и создаем Java Web Application с именем CustomerApplication. Я использую сервер GlassFish Server 3.1.2.

В папке Source Packages создаем два пакета: devtype для класса CustomerManager и jaxws для класса CustomerService для JAX-WS веб-сервиса.

Session EJB создается через меню NetBeans.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package devtype;

/**
 *
 * @author Devtype
 */
@Stateless
public class CustomerManager {
    
    public int getCustomerCount() {
        return 27;
    }
    
    public int getCustomerCountByRegion(String region) {
        if("West".equals(region)) {
            return 12;
        } else if("East".equals(region)) {
            return 15;
        } else {
            return 0;
        }
    }
    
}

2) Создание JAX-WS веб-сервиса использующего эту функциональность

Сервис создается через меню NetBeans с вкл. опцией "Implement Web Service as Statelss Session Bean". Используем аннотации @WebService для определения класса как endpoint-а и аннотируем методы сервиса аннотацией @WebMethod.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jaxws;

import devtype.CustomerManager;
import javax.ejb.EJB;
import javax.jws.WebMethod;
import javax.jws.WebService;

/**
 *
 * @author Devtype
 */
@WebService()
public class CustomerService {
    
    @EJB
    private CustomerManager customerManager;
    
    @WebMethod
    public int getCustomerCount() {
        return customerManager.getCustomerCount();
    }
    
    @WebMethod
    public int getCustomerCountByRegion (String region) {
        return customerManager.getCustomerCountByRegion(region);
    }    
    
}

В конце делается Deploy и Test Web Service.

--
Начало работы с веб-службами JAX-WS - учебный курс по IDE NetBeans