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, 6 de setembro de 2010

Exemplo DataSource JBoss

Olá Pessoal,


Afinal, o que é um DataSource?
DataSource é uma forma de guardar as configurações de conexão com o banco de dados, como por exemplo, deixá-las em um arquivo xml, evitando assim, que as mesmas não ficam fixas no seu código Java.
Neste exemplo, será criado um DataSource que será usado no servidor JBoss 4, a vantagem de usar o JBoss, é que o DS pode ser criado diretamente na pasta de deploy, proporcionando mais liberdade para o desenvolvedor.

A estrutura do arquivo xml do DS, é definida logo abaixo:
<datasources>
<local-tx-datasource>
<jndi-name>jdbc/CLIENTEDS</jndi-name>
<connection-url>URL</connection-url>
<driver-class>DRIVER_CLASSE</driver-class>
<user-name>USUARIO</user-name>
<password>SENHA</password>
</local-tx-datasource>
</datasources>

Legenda:
CLIENTEDS = Nome da datasource que será configurada em sua aplicação
URL = Endereço de sua base
DRIVER_CLASSE = Driver de acesso ao banco de dados
USUARIO = Usuário de acesso base de dados
SENHA = Senha de acesso a base de dados

Por exemplo, vamos configurar, para acessar o banco de dados MySQL:
Crie um arquivo xml, com o nome de database-ds.xml, salve este arquivo no seguinte diretório:
DIRETORIO_DO_SEU_JBOSS/server/default/deploy

No conteúdo do arquivo, deixei configurado assim:
<?xml version="1.0" encoding="UTF-8" ?>

<datasources>
<local-tx-datasource>
<jndi-name>jdbc/databaseDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/java</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>30</max-pool-size>
<idle-timeout-minutes>1</idle-timeout-minutes>
<prepared-statement-cache-size>32</prepared-statement-cache-size>
</local-tx-datasource>
</datasources>
database-ds.xml

Obs.: Não esqueça de colocar o jar do driver do MySQL, no seguinte diretório:
DIRETORIO_DO_SEU_JBOSS/server/default/lib

Bom, para testar o DataSource, vamos criar um novo projeto web no Eclipse, chamado ExemploDataSource.
Crie um novo file, chamado persistence.xml, dentro da pasta WebContent/META-INF.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="PessoaJPAData" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/jdbc/databaseDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
persistence.xml

Definimos o nome do persistence-unit;
Usamos o Hibernate como provedor JPA;
Colocamos o nome do DS no jta-data-source;
E, por fim, defiminos, que o Hibernate crie automaticamente nossas tabelas do BD.

Agora, vamos criar um Servlet, chamado ServletDS.
package com.blogspot.jabesfelipe.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

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

private void processarRequisicao(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
try {
Context context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:jdbc/databaseDS");
Connection connection = dataSource.getConnection();
out.println("Conectado, através da JNDI!");
connection.close();
} catch(Exception e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processarRequisicao(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processarRequisicao(request, response);
}

}
ServletDS.java

Através da JNDI, acessamos nosso DataSource, para testar, inicialize seu JBoss, e digite o endereço: http://localhost:8080/ExemploDataSource/ServletDS

Bom galera, este foi um exemplo de como criar um DataSource no JBoss, e usá-lo em uma aplicação.
Para quem quiser baixar o exemplo, clique aqui.
Qualquer dúvida, crítica ou sugestão, fico à disposição.

Jabes Felipe RSS Feed Jabes Felipe