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» .
Добавьте 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 соберет клиента и запустит его. Проверьте следующий вывод.