EJB - Services Web

EJB 3.0 fournit une option pour exposer la session EJB en tant que webservice. L'annotation @WebService est utilisée pour marquer une classe comme point de terminaison de service Web et @WebMethod est utilisé pour exposer une méthode en tant que méthode Web au client.

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

Exemple d'application

Créons une application de test EJB pour tester la prise en charge des blob / clob dans EJB 3.0.

Étape La description
1

Créez un projet avec un nom EjbComponent sous un package com.tutorialspoint.entity comme expliqué dans le chapitre EJB - Créer une application. Veuillez utiliser le projet créé dans le chapitre EJB - Persistance en tant que tel pour ce chapitre afin de comprendre les objets clob / blob dans les concepts EJB.

2

Créez LibraryPersistentBean.java sous le package com.tutorialspoint.stateless. Utilisez EJB - Chapitre Persistence comme référence. Gardez le reste des fichiers inchangé.

3

Nettoyez et créez l'application pour vous assurer que la logique métier fonctionne conformément aux exigences.

4

Enfin, déployez l'application sous forme de fichier jar sur JBoss Application Server. Le serveur d'applications JBoss démarrera automatiquement s'il n'est pas encore démarré.

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

Sortie du journal du serveur d'applications 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

Créer un client pour accéder à EJB en tant que service Web

Dans l'EDI NetBeans, sélectionnez ,File > New Project >Sélectionnez le type de projet dans la catégorie,Java, Type de projet comme Java Application. Cliquez surNext >Entrez le nom et l'emplacement du projet. Cliquez surFinish >bouton. Nous avons choisi le nom EJBWebServiceClient.

Cliquez avec le bouton droit sur le nom du projet dans la fenêtre Explorateur de projet. SélectionnerNew > WebService Client.

Ajoutez LibraryPersistentBean du projet de composant EJB créé précédemment sous WSDL et l'emplacement du client en utilisant Add Project bouton dans compile languette.

Cliquez sur le bouton Terminer. Vérifiez la structure suivante dans l'explorateur de projet.

Créer EJBWebServiceClient.java

package ejbwebserviceclient;

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

Sélectionnez la méthode Web getBooks du service Web comme indiqué dans la figure ci-dessous et faites-la glisser vers la fenêtre de code d'EJBWebServiceClient.

Vous verrez la sortie similaire à celle illustrée ci-dessous.

Mettez à jour le code EJBWebServiceClient pour utiliser cette méthode.

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

Exécutez le client

Cliquez avec le bouton droit sur le nom du projet dans la fenêtre Explorateur de projet. SélectionnerRun. Netbeans construira le client et l'exécutera. Vérifiez la sortie suivante.

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)