EJB - Servicios web

EJB 3.0 proporciona una opción para exponer la sesión EJB como un servicio web. La anotación @WebService se usa para marcar una clase como un punto final del servicio web y @WebMethod se usa para exponer un método como método web al cliente.

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

Aplicación de ejemplo

Creemos una aplicación EJB de prueba para probar la compatibilidad con blob / clob en EJB 3.0.

Paso Descripción
1

Cree un proyecto con un nombre EjbComponent bajo un paquete com.tutorialspoint.entity como se explica en el capítulo EJB - Crear aplicación. Utilice el proyecto creado en el capítulo EJB - Persistencia como tal para este capítulo para comprender los objetos clob / blob en los conceptos de EJB.

2

Cree LibraryPersistentBean.java en el paquete com.tutorialspoint.stateless. Utilice el capítulo EJB - Persistencia como referencia. Mantenga el resto de los archivos sin cambios.

3

Limpie y compile la aplicación para asegurarse de que la lógica empresarial funcione según los requisitos.

4

Finalmente, implemente la aplicación en forma de archivo jar en JBoss Application Server. El servidor de aplicaciones JBoss se iniciará automáticamente si aún no se ha iniciado.

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();
   }
}

Salida de registro del servidor de aplicaciones 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

Crear cliente para acceder a EJB como servicio web

En NetBeans IDE, seleccione ,File > New Project >.Seleccione el tipo de proyecto en la categoría,Java, Tipo de proyecto como Java Application. Hacer clicNext >Ingrese el nombre y la ubicación del proyecto. Hacer clicFinish >botón. Hemos elegido el nombre como EJBWebServiceClient.

Haga clic derecho en el nombre del proyecto en la ventana Explorador de proyectos. SeleccioneNew > WebService Client.

Agregue el LibraryPersistentBean del proyecto del componente EJB creado anteriormente en WSDL y la ubicación del cliente usando Add Project botón en compile lengüeta.

Haga clic en el botón Finalizar. Verifique la siguiente estructura en el explorador de proyectos.

Cree EJBWebServiceClient.java

package ejbwebserviceclient;

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

Seleccione el método web getBooks del servicio web como se muestra en la figura siguiente y arrástrelo a la ventana de código de EJBWebServiceClient.

Verá una salida similar a la que se muestra a continuación.

Actualice el código EJBWebServiceClient para utilizar este método.

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();
   }      
}

Ejecutar el cliente

Haga clic derecho en el nombre del proyecto en la ventana Explorador de proyectos. SeleccioneRun. Netbeans construirá el cliente y lo ejecutará. Verifique la siguiente salida.

ant -f D:\\SVN\\EJBWebServiceClient run
init:
Deleting: D:\SVN\EJBWebServiceClient\build\built-jar.properties
deps-jar:
Updating property file: D:\SVN\EJBWebServiceClient\build\built-jar.properties
wsimport-init:
wsimport-client-LibraryPersistentBean:
files are up to date
classLoader = [email protected]
SharedSecrets.getJavaNetAccess()[email protected]
wsimport-client-generate:
Compiling 1 source file to D:\SVN\EJBWebServiceClient\build\classes
compile:
run:
learn java
Learn Spring
learn JSF
Learn HTML
Learn JBoss
Learn EJB
Learn Hibernate
Learn IBatis
Times Now
learn html5
Learn images
Learn Testing
Forbes
test1
BUILD SUCCESSFUL (total time: 1 second)