Você está na página 1de 27

Java Enterprise Edition - Java EE

Exemplos Bsicos usando o NetBeans





Sumrio

1. Criando um Mdulo Enterprise Java Bean (Java EE) ..................................................................................................... 2
2. Criando uma Aplicao Cliente Java Desktop para acessar o EJB ............................................................................... 12
3. Criando uma Aplicao Web com JSP para acessar o EJB ........................................................................................... 17
4. Criando um Web Service em Java para acessar o EJB ................................................................................................ 23
5. Acessando o Web Service a partir do Android ........................................................................................................... 26



2

1. Criando um Mdulo Enterprise Java Bean (Java EE)

Vamos criar um EJB que far o Cadastro de Pessoa (cpf - chave primria, nome, email) numa base MySQL. Este EJB
executar num servidor de aplicaes GlassFish e ser usado por uma aplicao Desktop, uma aplicao Web e por
um Web Service acessado por um Android.
Para isso, crie um Novo Projeto => Java EE => Mdulo EJB.




D o nome de EJBCadPessoa
3


Crie tambm um Novo Projeto => Java => Biblioteca de Classe Java, para armazenar a interface remota do EJB.
4


D o nome de LibCadPessoa
5


No EJBCadPessoa, clique com o boto direito e crie um novo Pacote Java, com um nome significativo, por exemplo:
com.evandro



6


Nesse pacote criado, crie um Novo Bean de Sesso Stateless, com o nome CadPessoaBean e com Interface Remota
no projeto LibCadPessoa.

Clique com o boto direito sobre o cdigo do CadPessoaBean.java e clique em Inserir Cdigo...
7


Clique em Inserir Cdigo => Adicionar Mtodo de Negcios.
D o nome do mtodo de CadastrarPessoa, defina o Tipo de Retorno como Boolean e adicione 3 parmetros do tipo
String (cpf, nome, email).

Implemente o cdigo CadPessoaBeanRemote com uma conexo com o MySQL e a respectiva insero, como o que
est a seguir:
public class CadPessoaBean implements CadPessoaBeanRemote {

@Override
public boolean CadastrarPessoa(String cpf, String nome, String email) {
try {
Connection con =
DriverManager.getConnection("jdbc:mysql://localhost/javaee?user=javaee&password=javaee");
PreparedStatement pstmt = con.prepareStatement(" INSERT INTO pessoa (cpf, nome,
email) VALUES( ?, ?, ?)");
8

pstmt.setString(1, cpf);
pstmt.setString(2, nome);
pstmt.setString(3, email);
pstmt.executeUpdate();
} catch (SQLException err) {
return false;
}
return true;
}
}

Adicione a biblioteca do driver JDBC MySQL no projeto

Corrija as importaes, cuidando para escolher a importao de java.sql e no da com.mysql.jdbc.

9




Copie o arquivo mysql-connector-java-5.1.23-bin.jar para a pasta lib do GlassFish.


Acesse o Console do Admin do Domnio do GlassFish
10


Se no funcionar, clique em Iniciar e depois acesse diretamente pelo navegador: http://localhost:4848/


Implante o projeto EJBCadPessoa no servidor GlassFish
11


Verifique se ele foi implantado e est ativado



12

2. Criando uma Aplicao Cliente Java Desktop para acessar o EJB
O EJB pode ser acessado a partir de uma aplicao Java Desktop convencional.
Para isso, crie um Novo Projeto => Java => Aplicao Java com o nome ClienteCadPessoaBean, deixando desmarcada
a opo criar Classe Principal

No projeto ClienteCadPessoaBean, crie novo Form JFrame com o nome CadPessoa, no pacote cadPessoa.


13


Adicione da Paleta Controles Swing 3 Label (jLabel), 3 Campo de Texto (jTextField) e 2 Boto (jButton)

14

Clique com o boto direito sobre o componente e altere o seu texto, clicando em Editar Texto. Se quiser pode
tambm alterar seu nome atravs da opo Alterar o Nome da Varivel

O Formulrio JFrame deve ficar semelhante a esse:

Tenha certeza que o GlassFish esteja executando.
Nas propriedades do Projeto, adicione as seguintes bibliotecas:
Adicione o projeto LibCadPessoa
Adicione os arquivos appserv-rt.jar e javaee.jar da pasta lib do GlassFish
15


Implemente o seguinte cdigo no boto OK, para fazer a chamada para o EJB EJBCadPessoa/CadPessoaBean:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
InitialContext ctx = null;
CadPessoaBeanRemote cp;
cp = null;
try {
ctx = new InitialContext();// ser for aplicao local ou
/* o codigo a seguir se for aplicao remota
Properties p = new Properties();
p.put("org.omg.CORBA.ORBInitialHost", "192.168.1.175");
p.put("org.omg.CORBA.ORBInitialPort", "3700");
ctx = new InitialContext(p); */
} catch (NamingException ex) {
JOptionPane.showMessageDialog(this, "Erro: "+ ex);
}
try {
cp = (CadPessoaBeanRemote)
ctx.lookup("java:global/EJBCadPessoa/CadPessoaBean");
} catch (NamingException ex) {
JOptionPane.showMessageDialog(this, "Erro: "+ ex);
}
if (cp!=null && cp.CadastrarPessoa(jTextField1.getText(),
jTextField2.getText(), jTextField3.getText()))
{
JOptionPane.showMessageDialog(this, "OK");
jTextField1.setText(null);
jTextField2.setText(null);
jTextField3.setText(null);
jTextField1.grabFocus();
}
else
{
JOptionPane.showMessageDialog(this, "Erro no cadastro.");
}
}
Implemente o seguinte cdigo no boto Cancelar:
16


private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
jTextField1.setText(null);
jTextField2.setText(null);
jTextField3.setText(null);
jTextField1.grabFocus();
}
Corrija as importaes





17

3. Criando uma Aplicao Web com JSP para acessar o EJB
O EJB tambm pode ser acessado a partir de uma aplicao WEB Java com JSP.
Para isso, crie um Novo Projeto => Java Web => Aplicao Web com o nome WebAppCadPessoa



18


Deixe desmarcado os frameworks...


19

Altere o cdigo HTML da pgina inicial (index.html) alterando o ttulo e criando um formulrio, que chamar o
cadpessoa.jsp

Insira 3 campos de Entrada de Texto (cpf, nome, email) e um boto (submit) para fazer o envio dos dados e realizar o
cadastro.

20


O cdigo deve ficar semelhante a esse:
<html>
<head>
<title>Cadastro de Pessoa</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
</head>
<body>
<div>
<h1>Cadastro de Pessoa</h1>
<form name="cadastro" action="cadpessoa.jsp" method="POST">
CPF: <input type="text" name="cpf" value="" size="15" /><br>
Nome: <input type="text" name="nome" value="" size="50" /><br>
E-Mail: <input type="text" name="email" value="" size="50" /><br>
<input type="submit" value="Cadastrar" name="cadastrar" /><br>
</form>
</div>
</body>
</html>

Vamos criar a pgina JSP que receber os dados e far a chamada do EJB para realizar o cadastro.
Sobre o WebAppCadPessoa, clique com o boto direito e escolha Novo => JSP com o nome cadpessoa
21





22

Altere o cadpessoa.jsp para fazer a chamada do EJB EJBCadPessoa/CadPessoaBean. Essa pgina envia um retorno
para a pgina web sob a forma de script com um alerta informando se o cadastro foi realizado ou no e mostra
novamente o mesmo formulrio de cadastro, para fazer novas inseres.
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cadastro de Pessoa</title>
</head>
<body>
<h1>Cadastro de Pessoa</h1>
<div>
<%@page language = "java" %>
<%@page import = "java.util.*" %>
<%@page import = "com.evandro.CadPessoaBeanRemote" %>
<%@page import = "java.util.Properties" %>
<%@page import = "java.util.logging.Level" %>
<%@page import = "java.util.logging.Logger" %>
<%@page import = "javax.naming.InitialContext" %>
<%@page import = "javax.naming.NamingException" %>

<%
if (request.getParameter("nome") != null) {
InitialContext ctx = null;
CadPessoaBeanRemote cp;
cp = null;
try {
ctx = new InitialContext(); // ser for aplicao local ou
/* o codigo a seguir se for aplicao remota
Properties p = new Properties();
p.put("org.omg.CORBA.ORBInitialHost", "192.168.1.175");
p.put("org.omg.CORBA.ORBInitialPort", "3700");
ctx = new InitialContext(p); */
} catch (NamingException ex) {
out.println("<script>alert('Erro: " + ex + "');</script>");
}
try {
cp = (CadPessoaBeanRemote)
ctx.lookup("java:global/EJBCadPessoa/CadPessoaBean");
} catch (NamingException ex) {
out.println("<script>alert('Erro: " + ex + "');</script>");
}
if (cp != null && cp.CadastrarPessoa(request.getParameter("cpf"),
request.getParameter("nome"), request.getParameter("email"))) {
out.println("<script>alert('" + request.getParameter("nome") + "
Cadastrado.');</script>");
try {
ctx.close();
} catch (NamingException ex) {
out.println("<script>alert('Erro: " + ex + "');</script>");
}
} else {
out.println("<script>alert('Erro no cadastro.');</script>");
}
}
%>
</div>
<div>
<form name="cadastro" action="cadpessoa.jsp" method="POST">
CPF: <input type="text" name="cpf" value="" size="15" /><br>
Nome: <input type="text" name="nome" value="" size="50" /><br>
E-Mail: <input type="text" name="email" value="" size="50" /><br>
<input type="submit" value="Cadastrar" name="cadastrar" /><br>
</form>
</div>

</body>
</html>
23


4. Criando um Web Service em Java para acessar o EJB
Se precisarmos acessar o EJB a partir de outras tecnologias e plataformas, como Delphi, .NET, PHP ou Android, a
melhor forma criar um Web Service em Java. O Web Service acessa o EJB e repassa os dados para quem fez a
chamada, j que Web Services uma das mais difundidas formas de interoperabilidade.
Para criar um Web Service, temos que ter um projeto de Aplicao Web. Como j temos um, podemos usar o
mesmo. Dentro dele, crie um Novo => Outros... => Web Services => Web Service

Vamos dar o nome de WSCadPessoa e coloc-lo num pacote com o mesmo nome.
Como j temos um Bean com as funcionalidades de cadastro implementados, podemos usar o assistente do
Netbeans e Criar um Web Service a Partir do Bean de Sesso Existente, escolhendo o CadPessoaBean.
24


Pronto. O Web Service est criado. Agora s testar, clicando sobre o Web Service WSCadPessoa com o boto
direito e escolhendo Testar Web Service.
25



26

5. Acessando o Web Service a partir do Android
1. Crie um novo projeto no ADT - Android Developer Tools/Eclipse
2. Adicione nas libs do projeto o arquivo ksoap2-android-assembly-3.0.0-RC.4-jar-with-dependencies.jar (arrastar o
arquivo para a pasta e escolher a opo copiar o arquivo)
3. Crie 3 campos de texto com os respectivos labels: cpf, nome, email
4. Inclua um boto OK com a propriedade onclick => cadastrar
5. implemente na classe MainActivity o seguinte cdigo antes da ltima chave:

public void cadastrar (View v)
{
String SOAP_ACTION = "http://WSCadPessoa/CadastrarPessoa";
String METHOD_NAME = "CadastrarPessoa";
String NAMESPACE = "http://WSCadPessoa/";
String URL = "http://10.0.2.2:8080/WebAppCadPessoa/WSCadPessoa"; // usar 10.0.2.2 no
emulador se for no localhost=>127.0.0.1
EditText e1 = (EditText) findViewById(R.id.editText1);
EditText e2 = (EditText) findViewById(R.id.editText2);
EditText e3 = (EditText) findViewById(R.id.editText3);
String res = "";
try
{
SoapObject request=new SoapObject(NAMESPACE, METHOD_NAME);
// adicione parametros e valores
request.addProperty("cpf", e1.getText().toString());
request.addProperty("nome", e2.getText().toString());
request.addProperty("email", e3.getText().toString());
SoapSerializationEnvelope envelope = new
SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(request);
// faz a chamada do mtodo pela Web
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
// pega a resposta simples com:
// SoapObject result = (SoapObject) envelope.getResponse();
// ou pega a resposta com vrias propriedades atravs do nome de cada uma delas:
SoapObject result = (SoapObject)envelope.bodyIn;
res = result.getProperty("return").toString();
if (res.equals("true"))
{
Toast.makeText(getApplicationContext(), "Cadastro realizado com sucesso!",
Toast.LENGTH_SHORT).show();
e1.setText("");
e2.setText("");
e3.setText("");
e1.requestFocus();
}
else
{
Toast.makeText(getApplicationContext(), "Erro no Cadastro! CPF J existe.",
Toast.LENGTH_SHORT).show();
}
}
catch (Exception e)
{
Toast.makeText(getApplicationContext(), "Erro de conexo!",
Toast.LENGTH_SHORT).show();
}
}
27


6. Inclua a seguinte linha no arquivo AndroidManifest.xml antes de <application :
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

7. Teste o aplicativo, clicando sobre o projeto com o boto direito e escolhendo Run As => Android Application

Você também pode gostar