Mostrando postagens com marcador Java. Mostrar todas as postagens
Mostrando postagens com marcador Java. Mostrar todas as postagens

sexta-feira, 26 de agosto de 2011

Enviar e-mail com anexo em Java usando o gmail.

Olá Pessoal,

Depois de um longo periodo sem postar, neste post, vou mostrar como mandar email com anexo em java, e para testar o nosso envio de email, vamos usar o gmail. Neste exemplo será usado a API javax.mail, teremos apenas uma classe que irá mandar uma imagem em anexo usando o protocolo do gmail.
No final do post, o projeto estará disponível para download.

package com.blogspot.jabesfelipe.email;

import java.io.InputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;

/**
* Classe para enviar email em anexo usando o Gmail.
*
* @author jabes.cunha
*
*/
public class EnviaEmail {
public static void main(String[] args) {
new EnviaEmail().enviar();
}

public void enviar() {
try {

//usuario e senha do seu gmail
final String usuario = "jabesfelipe@gmail.com";
final String senha = "mandioca";

//config. do gmail
Properties mailProps = new Properties();
mailProps.put("mail.transport.protocol", "smtp");
mailProps.put("mail.smtp.starttls.enable","true");
mailProps.put("mail.smtp.host", "smtp.gmail.com");
mailProps.put("mail.smtp.auth", "true");
mailProps.put("mail.smtp.user", usuario);
mailProps.put("mail.debug", "true");
mailProps.put("mail.smtp.port", "465");
mailProps.put("mail.smtp.socketFactory.port", "465");
mailProps.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
mailProps.put("mail.smtp.socketFactory.fallback", "false");

//eh necessario autenticar
Session mailSession = Session.getInstance(mailProps, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(usuario, senha);
}
});
mailSession.setDebug(false);

//config. da mensagem
Message mailMessage = new MimeMessage(mailSession);

//remetente
mailMessage.setFrom(new InternetAddress(usuario));

//destinatario
mailMessage.setRecipients(Message.RecipientType.TO, InternetAddress.parse(usuario));

//mensagem que vai no corpo do email
MimeBodyPart mbpMensagem = new MimeBodyPart();
mbpMensagem.setText("Segue em anexo, imagem do novo focus hath.");

//partes do email
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbpMensagem);
//imagem que sera enviada em anexo, ta no mesmo diretorio da classe.
String imagem = "focusHath2011.jpg";
InputStream is = getClass().getResourceAsStream(imagem);

//setando o anexo
MimeBodyPart mbpAnexo = new MimeBodyPart();
mbpAnexo.setDataHandler(new DataHandler(new ByteArrayDataSource(is, "application/image")));
mbpAnexo.setFileName(imagem);
mp.addBodyPart(mbpAnexo);

//assunto do email
mailMessage.setSubject("Novo Focus Hath 2011");
//seleciona o conteudo
mailMessage.setContent(mp);

//envia o email
Transport.send(mailMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
}
EnviaEmail.java

A classe, está documentada, explicando os passos a passos, o e-mail que será enviado, ficará conforme imagem abaixo:

Para quem quiser baixar o projeto desenvolvido, clique aqui.
Qualque dúvida, crítica ou sugestão, fico à disposição.

domingo, 15 de maio de 2011

Utilizando EJB2 com Client Servlet e Swing (Parte 2)

Olá Pessoal,


Continuando nosso projeto em EJB2, neste post, vamos criar dois tipos de Client, o primeiro será um projeto web, que vai usar Servlet, o segundo será uma aplicação em Swing, ambos os projetos irão acessar nosso EJB2 por meio do recurso de JNDI.
Uma das grandes vantagens do EJB, é o reuso do código, assim, nossa camada de negócio, poderá ser usada, em diversos tipo de Client.
Ao final deste post, deixarei o projeto completo para download.

1. Passo: Vamos criar um projeto web chamado ExemploEJB-web, nesse projeto, crie um Servlet chamado HelloServlet, lembrando que é necessário adicionar o projeto ExemploEJB2 em Project References, e não esqueça de adionar este projeto como módulo Web no arquivo application.xml que está no projeto EAR.


package com.blogpost.jabesfelipe.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.CreateException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.blogpost.jabesfelipe.service.Hello;
import com.blogpost.jabesfelipe.service.HelloHome;

public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
Context initial = new InitialContext();
Object objref = initial.lookup("HelloBean");
HelloHome home = (HelloHome) PortableRemoteObject.narrow(objref,
HelloHome.class);
Hello remote = home.create();

PrintWriter out = response.getWriter();
out.println(remote.showName("Jabes Felipe"));

} catch (NamingException e) {
e.printStackTrace();
} catch (CreateException e) {
e.printStackTrace();
}
}
}
HelloServlet.java

Para poder testar nossa aplicação, digite a seguinte URL http://localhost:8080/ExemploEJB2-web/HelloServlet.

2. Passo: Vamos agora, criar um projeto java, chamado ExemploEJB2-swing, crie uma classe HelloSwing, nessa classe, temos um simples JFrame, composto por um campo Texto e Botão, na ação deste botão, vamos chamar nosso método no EJB e ele retornará um valor em String em um componente JOptionPane.
Lembrando que é necessário adicionar o projeto ExemploEJB2 em Project References.

package com.blogpost.jabesfelipe.swing;

import java.rmi.RemoteException;
import java.util.Properties;
import javax.ejb.CreateException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import com.blogpost.jabesfelipe.service.Hello;
import com.blogpost.jabesfelipe.service.HelloHome;

public class HelloSwing extends JFrame {

public HelloSwing() {
initComponents();
}

public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new HelloSwing().setVisible(true);
}
});
}

private void initService() {
try {

Properties t = new Properties();
t.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
t.put(Context.PROVIDER_URL, "jnp://localhost:1099");
Context context = new InitialContext(t);
Object objref = context.lookup("HelloBean");
HelloHome home = (HelloHome) PortableRemoteObject.narrow(objref,
HelloHome.class);
Hello remote = home.create();

JOptionPane.showMessageDialog(null,
remote.showName(jTxtFldName.getText().toString()));

} catch (NamingException e) {
e.printStackTrace();
} catch (CreateException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}

private void jBtOKActionPerformed(java.awt.event.ActionEvent evt) {
initService();
}

private void initComponents() {

jLblName = new javax.swing.JLabel();
jTxtFldName = new javax.swing.JTextField();
jBtOK = new javax.swing.JButton();
jLblTitle = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLblName.setText("Informe seu Nome: ");

jBtOK.setText("OK");
jBtOK.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jBtOKActionPerformed(evt);
}
});

jLblTitle.setFont(new java.awt.Font("Courier 10 Pitch", 1, 18)); // NOI18N
jLblTitle.setText("Exemplo - Chamando Serviço EJB2 em Swing");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout.createSequentialGroup()
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout.createSequentialGroup()
.addGap(25, 25,
25)
.addComponent(
jLblName)
.addGap(1, 1, 1)
.addComponent(
jTxtFldName,
javax.swing.GroupLayout.PREFERRED_SIZE,
153,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
jBtOK))
.addGroup(
layout.createSequentialGroup()
.addContainerGap()
.addComponent(
jLblTitle)))
.addContainerGap(
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)));
layout.setVerticalGroup(layout
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLblTitle)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED,
32, Short.MAX_VALUE)
.addGroup(
layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLblName)
.addComponent(
jTxtFldName,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jBtOK))
.addGap(24, 24, 24)));
pack();
}

private JButton jBtOK;
private JLabel jLblName;
private JLabel jLblTitle;
private JTextField jTxtFldName;

}

Agora só testar nosso projeto, veja como ficou:


Bom galera, enfim, terminamos nosso projeto, que na primeira parte, criamos nosso camada de EJB2 e na segunda criamos um projeto web e Swing para acessar o EJB.
Para quem quiser baixar todos os projeto desenvolvidos, clique aqui.
Qualque dúvida, crítica ou sugestão, fico à disposição.

sábado, 29 de janeiro de 2011

Revisar códigos Java com PMD

Olá Pessoal,

Quando terminamos de programar determinado código, as vezes, não fazemos uma revisão no código, seja, por falta de tempo, falta de hábito, enfim.... Por isso, resolvi criar este post, para mostrar uma solução para esses casos, simplesmente, vamos usar o PMD, o que é PMD?
PMD é um projeto OpenSource usado para verificar códigos e mostrar os determinados erros que ocorrem nos códigos.
Para facilitar ainda mais nossos testes, vamos baixar o plugin do PMD para o Eclipse, acesse o Menu -> Help -> Install New Software, depois adiciona um novo endereço, deixa o name como PMD e o location como http://pmd.sourceforge.net/eclipse, para este exemplo estou usando o plugin para o Eclipse 3.
Criei um novo Java Project, e depois criei uma Classe Dog.java, como descreve a imagem abaixo:

Essa é uma simples Classe, entretanto o código dela, tem uma redundância, vamos executar o PMD para testar o código.
Clique com o botão direito na Classe Dog.java -> PMD -> Check Code With PMD.


Como vemos na imagem, a guia Violations Overview, mostrou uma ocorrência, que está na linha 10, está dizendo que a variável de referência dog está recebendo dois novos objetos, o que está na linha 10 e na linha 17, simplesmente, poderia ter um apenas.
O PMD não restringe apenas como esse teste, pode ser feito vários tipos que verificação em códigos, e também pode configurar o PMD com regras especificas para determinados testes.
Qualquer dúvida, crítica ou sugestão, fico à disposição.

quinta-feira, 30 de setembro de 2010

Loop Map

Olá Pessoal,


A Interface Map é bem útil, pois permite que criamos mapas de chaves/valor. O Map possibilita que uma chave única seja criada, que pode ser um tipo primitivo ou um objeto, cada chave poderá apontar para um valor que também pode ser um primitivo ou objeto.
Neste exemplo temos um Map de números, e para percorre-lô, usaremos a Interface Set, que irá obter as Keys do Map, e depois iremos interar usando o Foreach.
Segue um exemplo para fazer um loop em Map:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class LoopMap {

public static void main(String[] args) {

Map mapa = new HashMap();
mapa.put(1, "UM");
mapa.put(2, "DOIS");
mapa.put(3, "TRES");
mapa.put(4, "QUATRO");
mapa.put(5, "CINCO");

Set conjunto = mapa.keySet();
for (Integer key : conjunto) {
System.out.println("Key: " + key + " - Valor: " + mapa.get(key));

}
}
}
LoopMap.java


Resultado:
Key: 1 - Valor: UM
Key: 2 - Valor: DOIS
Key: 3 - Valor: TRES
Key: 4 - Valor: QUATRO
Key: 5 - Valor: CINCO

segunda-feira, 5 de julho de 2010

Configurando Ambiente JEE no Linux (Ubuntu + Java + Eclipse + JBoss App Server)

Olá Pessoal,


Neste post irei mostrar como configurar um ambiente JEE no Ubuntu 10.04, as etapas são muito simples, começaremos com o download do Java, Eclipse e jBoss4, e por fim, vamos fazer um teste com um HelloWorld. =)

1. Passo: Instalação do Java por apt-get, abre uma janela do terminal e digite o seguinte comando:
sudo apt-get install sun-java6-jre sun-java6-jdk sun-java6-plugin

Após a instalação, vamos configurar as variáveis de ambiente, com o terminal aberto, digite o comando:
sudo gedit /etc/profile

Após abrir o arquivo, vai até o final do conteúdo e acrescenta:
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.20

Para ver qual a versão do Java que você está usando, digite o comando:
java -version
Esta versão deve ser informada no JAVA_HOME.

Agora renicie o computador.


2. Passo: Vamos baixar o Eclipse, entre no site http://www.eclipse.org/downloads/, escolha a plataforma Linux e baixe o Eclipse IDE for Java EE Developers, após ter baixado, descompacte em uma pasta de sua preferência.


3. Passo: Vamos baixar o JBoss Application Server, entre no site: http://www.jboss.org/jbossas/downloads/, neste exemplo estou usando a versão 4.2.3, após ter baixado, descompacte em uma pasta de sua preferência.
Vamos configurar o JBOSS_HOME, abre o terminal e digite o comando:
sudo gedit /etc/profile

Após abrir o arquivo, vai até o final do conteúdo e acrescenta o JBOSS_HOME, e o diretório onde você colocou o JBoss:
export JBOSS_HOME="/media/dados/java/jboss4/jboss-4.2.3.GA/"

No exemplo acima, substituir o caminho do diretório e a versão do JBoss de acordo com a que você está usando.


4. Passo: Agora vamos configurar o JBoss Application Server no Eclipse, abre seu Eclipse, escolha o diretório do seu workspace, com o Eclipse aberto vamos configurar server:
Selecione a guia Servers, clique com o botão direito do mouse e escolha New -> Server.
Na janela que abrir, escolha jBoss e selecione a versão 4.2, e clique em Next.
Na próxima janela, clique em Browse e escolha o diretório onde o seu JBoss está, depois clique em Finish.

5. Passo: Para testar nosso ambiente, vamos executar um exemplo simples de Servlet.
Criando o projeto, vai no menu file -> New -> Dynamic Web Project.
Na janela que abrir informe o nome do projeto: HelloWorldWeb, em Target runtime, escolha o jBoss, clique em Finish.

Crie um Servlet: HelloServlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

public HelloServlet() {
super();
}

public void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("HelloServlet com Eclipse e JBoss Application Server");
}

protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}

protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}

}


Crie um arquivo index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ubuntu + Eclipse + JBoss Application Server</title>
</head>
<body>
<a href="./HelloServlet">Chamar Servlet</a>
</body>
</html>

Agora clique com o botão direito do mouse sobre o projeto:
Debug As -> Run on Server.
Na janela que abrir clique em Finish.
O JBoss será inicializado e já irá fazer o deploy do projeto.
Testando: http://localhost:8080/HelloWorldWeb

Bom pessoal, este foi um exemplo de como montar um ambiente JEE, totalmente gratuito e com as melhores ferramentas do mercado.
Qualquer dúvida, crítica ou sugestão, fico à disposição.

sábado, 26 de junho de 2010

Compilador JAVA online

Olá Pessoal,

Achei um site muito legal que oferece um serviço para compilar códigos fontes Java, quem quiser conferir, acesse: http://www.innovation.ch/java/java_compile.html


segunda-feira, 15 de fevereiro de 2010

Google App Engine (Execute os seus aplicativos da web na infraestrutura do Google)

Olá Pessoal,

Nós sabemos que a Google, sempre está inovando, com diversos serviços utéis e gratuitos. No ano passado ela lançou o serviço Google App Engine, que oferece suporte à linguagem Java, ou seja, podemos executar nossos aplicativos web na infraestrutura da Google.
O Google App Engine oferece um conjunto completo de desenvolvimento que utiliza tecnologias familiares para criar e hospedar aplicativos da web. O uso inicial será sempre gratuito e se você precisar de mais recursos computacionais, eles estão disponíveis a preços de mercado.
O Google App Engine oferece este plugin para o Eclipse, facilitando o uso do serviço.

Este vídeo mostra como fazer um projeto, usando o Eclipse.


Eu fiz um Crud usando Servlet, JSP e AJAX no Eclipse, quem quiser ver, visite o site: http://jabesfelipe.appspot.com/

Mais informações, clique aqui.

sábado, 16 de janeiro de 2010

Instalando o Java 6 no Ubuntu 9.10 por apt-get.

Olá Pessoal,

Umas das maneiras mais fácil de instalar o Java no Ubuntu é através do apt-get, que é um gerenciador de pacotes usado no Ubuntu, para fazer a instalação, abre uma janela do terminal, e digite o seguinte comando.

sudo apt-get install sun-java6-jre sun-java6-jdk sun-java6-plugin

Após terminar a instalação, reinicie o computador, lembrando, que não precisa configurar as variáveis de ambientes, toda esta configuração é feita automaticamente.
A pasta onde o Java foi instalado, está localizado no seguinte diretório:

/usr/lib/jvm/java-6-sun


Jabes Felipe RSS Feed Jabes Felipe