domingo, 17 de abril de 2011

Utilizando EJB2 com Client Servlet e Swing (Parte 1)

Olá Pessoal,

Com a chegada do EJB3, ficou bem mais simples, desenvolver aplicações que usam Session Bean e Entity, devido a utilização das Annotations, evitando de ficar configurando arquivos XMLs. Entretanto, existe várias aplicações no mercado que utilizam o uso de EJB2, por este motivo, resolvi criar este post, que tem como objetivo, mostrar, como que desenvolve uma aplicação em EJB2 que servirá como nosso modelo, e para utilizar este serviço, iremos usar 2 maneiras, uma usando Servlet e a outra Swing para acessar o EJB2.
Este post terá 2 partes, essa primeira, será o desenvolvimento da camada EJB2 e a segunda parte, criaremos um Client Servlet e Swing. Para o desenvolvimento do projeto, irei utilizar Java 1.6, Eclipse e o JBoss 4.

1. Passo: Vejamos a estrutura da camada de EJB:



2. Passo: Crie um projeto chamado ExemploEJB2 do tipo EJB no Eclipse, neste projeto vamos criar duas Interfaces (Remote e Home) e um SessionBean.

Primeiro criamos a Interface Remote e declaramos nosso método de serviço, neste exemplo é bem simples, teremos um método para mostrar o nome de uma Pessoa.

package com.blogpost.jabesfelipe.service;

import java.rmi.RemoteException;
import javax.ejb.EJBObject;

public interface Hello extends EJBObject {

public String showName(String name) throws RemoteException;

}
Hello.java

Criamos a Interface Home:

package com.blogpost.jabesfelipe.service;

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome

public interface HelloHome extends EJBHome {

public Hello create() throws RemoteException, CreateException;

}
HelloHome.java

Agora criamos nosso SessionBean e iremos implementar nosso método que foi declarado na Interface:

package com.blogpost.jabesfelipe.service;

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

public class HelloBean implements SessionBean {

public String showName(String name) {
return "Meu nome é " + name + "!";
}

public void ejbCreate() throws CreateException {
System.out.println("Bean criado");
}

@Override
public void ejbActivate() throws EJBException, RemoteException {
System.out.println("Bean ativado");
}

@Override
public void ejbPassivate() throws EJBException, RemoteException {
System.out.println("Bean desativado");
}

@Override
public void ejbRemove() throws EJBException, RemoteException {
System.out.println("Bean removido");
}

@Override
public void setSessionContext(SessionContext arg0) throws EJBException,
RemoteException {}

}
HelloBean.java

3. Passo: Agora vamos configurar (name, state, etc...) do EJB no arquivo ejb-jar.xml que fica dentro da pasta META-INF.
O arquivo vai ficar conforme o modelo abaixo:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar id="ejb-jar_ID">
<display-name>ExemploEJB2</display-name>

<enterprise-beans>
<session>
<display-name>HelloBean</display-name>
<ejb-name>HelloBean</ejb-name>
<home>com.blogpost.jabesfelipe.service.HelloHome</home>
<remote>com.blogpost.jabesfelipe.service.Hello</remote>
<ejb-class>com.blogpost.jabesfelipe.service.HelloBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
</session>
</enterprise-beans>

</ejb-jar>
ejb-jar.xml

4. Passo: Vamos criar um arquivo jboss.xml dentra da pasta META-INF, e neste arquivo definimos o nome da JNDI que irá acessar o EJB.

<?xml version='1.0' encoding='UTF-8' ?>
<jboss>

<enterprise-beans>
<session>
<ejb-name>HelloBean</ejb-name>
<jndi-name>HelloBean</jndi-name>
</session>
</enterprise-beans>

</jboss>
jboss.xml

5. Passo: O nosso EJB está pronto, agora crie um projeto chamado ExemploEJB2-ear do tipo EAR, e vamos configurar o módulo EJB no arquivo application.xml que fica dentro da pasta META-INF.

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" id="Application_ID" version="5">
<display-name>ExemploEJB2-ear</display-name>
<module>
<ejb>ExemploEJB2.jar</ejb>
</module>
</application>

Bom galera, nossa camada de EJB, está pronta, e na próxima parte do tutorial, vamos testa-lá, usando Servlet e Swing.
Qualquer dúvida, crítica ou segestão, fico à disposição.

Jabes Felipe RSS Feed Jabes Felipe