EJB - Servizi Web
EJB 3.0 fornisce un'opzione per esporre il bean di sessione come servizio web. L'annotazione @WebService viene utilizzata per contrassegnare una classe come endpoint del servizio Web e @WebMethod viene utilizzata per esporre un metodo come metodo Web al client.
@Stateless
@WebService(serviceName="LibraryService")
public class LibraryPersistentBean implements LibraryPersistentBeanRemote {
...
@WebMethod(operationName="getBooks")
public List<Book> getBooks() {
return entityManager.createQuery("From Books").getResultList();
}
...
}
Applicazione di esempio
Creiamo un'applicazione EJB di prova per testare il supporto blob / clob in EJB 3.0.
Passo | Descrizione |
---|---|
1 | Creare un progetto con un nome EjbComponent sotto un pacchetto com.tutorialspoint.entity come spiegato nel capitolo EJB - Crea applicazione. Utilizzare il progetto creato nel capitolo EJB - Persistenza in quanto tale per questo capitolo per comprendere gli oggetti clob / blob nei concetti EJB. |
2 | Crea LibraryPersistentBean.java nel pacchetto com.tutorialspoint.stateless. Usa EJB - Capitolo Persistenza come riferimento. Mantieni il resto dei file invariato. |
3 | Pulisci e crea l'applicazione per assicurarti che la logica aziendale funzioni secondo i requisiti. |
4 | Infine, distribuisci l'applicazione sotto forma di file jar su JBoss Application Server. JBoss Application Server verrà avviato automaticamente se non è ancora stato avviato. |
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();
}
}
Output del registro di JBoss Application Server
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
Crea client per accedere a EJB come servizio Web
In NetBeans IDE, seleziona ,File > New Project >Seleziona il tipo di progetto sotto la categoria,Java, Tipo di progetto come Java Application. ClicNext >Immettere il nome e la posizione del progetto. ClicFinish >pulsante. Abbiamo scelto il nome come EJBWebServiceClient.
Fare clic con il pulsante destro del mouse sul nome del progetto nella finestra Esplora progetti. SelezionareNew > WebService Client.
Aggiungere LibraryPersistentBean del progetto del componente EJB creato in precedenza in WSDL e Posizione client utilizzando Add Project pulsante in compile tab.
Fare clic sul pulsante Fine. Verificare la seguente struttura in Esplora progetti.
Crea EJBWebServiceClient.java
package ejbwebserviceclient;
public class EJBWebServiceClient {
public static void main(String[] args) {
}
}
Selezionare il metodo web getBooks del servizio Web come mostrato nella figura seguente e trascinarlo nella finestra del codice di EJBWebServiceClient.
Vedrai l'output simile a quello mostrato di seguito.
Aggiorna il codice EJBWebServiceClient per utilizzare questo metodo.
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();
}
}
Esegui il client
Fare clic con il pulsante destro del mouse sul nome del progetto nella finestra Esplora progetti. SelezionareRun. Netbeans creerà il client e lo eseguirà. Verificare il seguente output.
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)