EJB - Serviços da Web
O EJB 3.0 oferece uma opção para expor o EJB da sessão como um serviço da web. A anotação @WebService é usada para marcar uma classe como um ponto final de serviço da web e @WebMethod é usada para expor um método como um método da web para o cliente.
@Stateless
@WebService(serviceName="LibraryService")
public class LibraryPersistentBean implements LibraryPersistentBeanRemote {
...
@WebMethod(operationName="getBooks")
public List<Book> getBooks() {
return entityManager.createQuery("From Books").getResultList();
}
...
}
Aplicação de exemplo
Vamos criar um aplicativo de teste EJB para testar o suporte a blob / clob no EJB 3.0.
Degrau | Descrição |
---|---|
1 | Crie um projeto com um nome EjbComponent em um pacote com.tutorialspoint.entity conforme explicado no capítulo EJB - Criar Aplicativo. Use o projeto criado no capítulo EJB - Persistência como tal para este capítulo para entender os objetos clob / blob nos conceitos EJB. |
2 | Crie LibraryPersistentBean.java no pacote com.tutorialspoint.stateless. Use o capítulo EJB - Persistência como referência. Mantenha o resto dos arquivos inalterados. |
3 | Limpe e construa o aplicativo para garantir que a lógica de negócios esteja funcionando de acordo com os requisitos. |
4 | Finalmente, implante o aplicativo na forma de arquivo jar no JBoss Application Server. O servidor de aplicativos JBoss será iniciado automaticamente se ainda não tiver sido 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();
}
}
Saída de log do servidor de aplicativos 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
Crie o cliente para acessar o EJB como serviço da Web
No NetBeans IDE, selecione ,File > New Project >.Selecione o tipo de projeto na categoria,Java, Tipo de projeto como Java Application. CliqueNext >button.Insira o nome e a localização do projeto. CliqueFinish >botão. Escolhemos o nome como EJBWebServiceClient.
Clique com o botão direito no nome do projeto na janela Project explorer. SelecioneNew > WebService Client.
Adicionar LibraryPersistentBean do projeto de componente EJB criado anteriormente em WSDL e localização do cliente usando Add Project botão em compile aba.
Clique no botão Concluir. Verifique a seguinte estrutura no explorador de projetos.
Crie EJBWebServiceClient.java
package ejbwebserviceclient;
public class EJBWebServiceClient {
public static void main(String[] args) {
}
}
Selecione o método da web getBooks do Web Service conforme mostrado na figura abaixo e arraste-o para a janela de código de EJBWebServiceClient.
Você verá uma saída semelhante à mostrada abaixo.
Atualize o código EJBWebServiceClient para usar 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();
}
}
Execute o cliente
Clique com o botão direito no nome do projeto na janela Project explorer. SelecioneRun. O Netbeans irá construir o cliente e executá-lo. Verifique a seguinte saída.
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 = java.net.URLClassLoader@4ce46c
SharedSecrets.getJavaNetAccess()=java.net.URLClassLoader$7@182cdac
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)