Учебники

EJB — веб-сервисы

EJB 3.0 предоставляет возможность выставлять сеансовый EJB как веб-сервис. Аннотация @WebService используется для обозначения класса как конечной точки веб-службы, а @WebMethod — для представления метода в качестве веб-метода для клиента.

@Stateless
@WebService(serviceName="LibraryService")
public class LibraryPersistentBean implements LibraryPersistentBeanRemote {
	
   ...
   @WebMethod(operationName="getBooks")
   public List<Book> getBooks()  {    
      return entityManager.createQuery("From Books").getResultList();
   }
   ...
}

Пример приложения

Давайте создадим тестовое EJB-приложение для тестирования поддержки BLOB / Clob в EJB 3.0.

шаг Описание
1

Создайте проект с именем EjbComponent в пакете com.tutorialspoint.entity, как описано в главе EJB — Создание приложения. Пожалуйста, используйте проект, созданный в главе EJB — Постоянство как таковой для этой главы, чтобы понять объекты clob / blob в концепциях EJB.

2

Создайте LibraryPersistentBean.java в пакете com.tutorialspoint.stateless. Используйте EJB — главу Постоянство в качестве ссылки. Сохраните остальные файлы без изменений.

3

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

4

Наконец, разверните приложение в виде файла JAR на сервере приложений JBoss. Сервер приложений JBoss запустится автоматически, если он еще не запущен.

Создайте проект с именем EjbComponent в пакете com.tutorialspoint.entity, как описано в главе EJB — Создание приложения. Пожалуйста, используйте проект, созданный в главе EJB — Постоянство как таковой для этой главы, чтобы понять объекты clob / blob в концепциях EJB.

Создайте LibraryPersistentBean.java в пакете com.tutorialspoint.stateless. Используйте EJB — главу Постоянство в качестве ссылки. Сохраните остальные файлы без изменений.

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

Наконец, разверните приложение в виде файла JAR на сервере приложений JBoss. Сервер приложений JBoss запустится автоматически, если он еще не запущен.

LibraryPersistentBean.java

package com.tutorialspoint.stateless;

import com.tutorialspoint.entity.Book;
import java.util.List;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless
@WebService(serviceName="LibraryService")
public class LibraryPersistentBean implements LibraryPersistentBeanRemote {
    
   public LibraryPersistentBean() {
   }

   @PersistenceContext(unitName="EjbComponentPU")
   private EntityManager entityManager;         

   public void addBook(Book book) {
      entityManager.persist(book);
   }    
   
   @WebMethod(operationName="getBooks")
   public List <Book> getBooks() {
      return entityManager.createQuery("From Book").getResultList();
   }
}

Вывод журнала сервера приложений JBoss

10:51:37,271 INFO  [EJBContainer] STARTED EJB: com.tutorialspoint.stateless.LibraryPersistentBean ejbName: LibraryPersistentBean
10:51:37,287 INFO  [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:

	LibraryPersistentBean/remote - EJB3.x Default Remote Business Interface
	LibraryPersistentBean/remote-com.tutorialspoint.stateless.LibraryPersistentBeanRemote - EJB3.x Remote Business Interface

10:51:37,349 INFO  [EJBContainer] STARTED EJB: com.tuturialspoint.messagebean.LibraryMessageBean ejbName: BookMessageHandler
10:51:37,443 INFO  [DefaultEndpointRegistry] register: jboss.ws:context=EjbComponent,endpoint=LibraryPersistentBean
10:51:38,191 INFO  [WSDLFilePublisher] WSDL published to: file:/D:/Jboss-5.0.1/server/default/data/wsdl/EjbComponent.jar/
LibraryService3853081455302946642.wsdl

Создание клиента для доступа к EJB в качестве веб-службы

В IDE NetBeans выберите « Файл»> «Новый проект»>. Выберите тип проекта в категории « Java» , «Тип проекта» в качестве приложения Java . Нажмите кнопку Далее>. Введите название проекта и местоположение. Нажмите Готово> кнопка. Мы выбрали имя как EJBWebServiceClient.

Щелкните правой кнопкой мыши на имени проекта в окне Project Explorer. Выберите « Создать»> «Клиент WebService» .

Клиент WSDL

Добавьте LibraryPersistentBean проекта компонента EJB, созданный ранее в WSDL и Расположение клиента, используя кнопку Добавить проект на вкладке компиляции .

Бин веб-службы

Нажмите кнопку Готово. Проверьте следующую структуру в проводнике проекта.

Бин веб-службы

Создать EJBWebServiceClient.java

package ejbwebserviceclient;

public class EJBWebServiceClient {
   public static void main(String[] args) {   
   }
}

Выберите веб-метод getBooks, как показано на рисунке ниже, и перетащите его в окно кода EJBWebServiceClient.

Перетаскивание метода веб-службы

Вы увидите вывод, аналогичный показанному ниже.

Метод веб-службы перетаскивается

Обновите код EJBWebServiceClient, чтобы использовать этот метод.

package ejbwebserviceclient;

public class EJBWebServiceClient {

   public static void main(String[] args) {
      for(com.tutorialspoint.stateless.Book book:getBooks()) {
         System.out.println(book.getName());
      }       
   }

   private static java.util.List
   <com.tutorialspoint.stateless.Book> getBooks() {
      com.tutorialspoint.stateless.LibraryService service = 
         new com.tutorialspoint.stateless.LibraryService();
      com.tutorialspoint.stateless.LibraryPersistentBean port = 
         service.getLibraryPersistentBeanPort();
      return port.getBooks();
   }      
}

Запустите клиент

Щелкните правой кнопкой мыши на имени проекта в окне Project Explorer. Выберите Run . Netbeans соберет клиента и запустит его. Проверьте следующий вывод.