domingo, 24 de fevereiro de 2013

Criando uma zona de DNS


Criando uma zona Primária Direta
Exemplo: Criar a zona primária direta (Forward Lookup Zone) para conter os registros do domínio xyz.com.br. Para criar esta zona siga os passos indicados a seguir:
1. Faça o logon como administrador ou com uma conta com permissão de administrador.
2. Abra o console DNS: Iniciar -> Programas -> Ferramentas Administrativas -> DNS.
3. Será exibido o console DNS. No painel da esquerda, por padrão, estão disponíveis as seguintes opções:
  • Zonas de pesquisa direta
  • Zonas de pesquisa inversa
Nota: O console DNS pode ser utilizado para gerenciar toda a estrutura de DNS da empresa de uma maneira centralizada. O administrador pode usar o console DNS para conectar-se com outros servidores DNS da rede da empresa e gerenciar zonas e configurações dos diversos servidores DNS da rede, a partir de um único console DNS, centralizadamente.
Na Figura a seguir, apresento um exemplo onde estou utilizando o console DNS para gerenciar dois servidores DNS diferentes. Para conectar-se a um servidor DNS remoto basta clicar com o botão direito do mouse na opção DNS (primeira opção, bem em cima, no painel da esquerda). No menu de opções que é exibido clique em Conectar-se ao Computador.... Será exibida a janela Selecionar máquina de destino. Clique na opção No seguinte computador. Ao lado desta opção digite o nome ou o endereço IP do servidor DNS a ser acessado. Clique em OK e pronto, agora você pode gerenciar o servidor DNS remotamente. O administrador responsável pela DNS pode criar um console personalizado, onde são adicionados os vários servidores DNS pelos quais ele é responsável.
Feito este breve comentário, vamos voltar a criação de uma zona direta, no servidor DNS do Windows 2000 Server.

Figura - Gerenciando vários servidores DNS em um único console.
4. Neste exemplo você utilizará a opção Zonas de pesquisa direta. Clique com o botão direito do mouse nesta opção.
5. No menu de opções que é exibido clique em Nova Zona...
6. Será aberto o assistente para a criação de uma nova zona.. A primeira tela do assistente é apenas informativa. Clique em Avançar, para seguir para a próxima etapa do assistente.
7. Nesta etpa você deve informar o tipo de zona a ser criada. Estão disponíveis as opções Integrada ao Active Directory, Primária Padrão e Secundária padrão. Você aprenderá sobre zonas secundárias e sobre a integração com o Active Directory, nas próximas partes deste tutorial. Se o servidor que você está utilzando for um DC, estará disponível a opção Integrada com o Active Directory. Você também aprenderá sobre esta opção, nas próximas partes deste tutorial e também sobre a integração do DNS com o Active Directory. Para o nosso exemplo, defina as configurações indicadas na Figura a seguir:

Figura - Criando uma zona primária, não integrada com o Active Directory.
8. Clique em Avançar, para seguir para a próxima etapa do assistente.
9. Nesta etapa será solicitado o nome da zona. Digite xyz.com.br no campo Nome da Zona e clique em Avançar, para seguir para a próxima etapa do assistente.
10. Nesta etapa você define se deseja criar um novo arquivo onde serão gravadas as informações sobre a zona xyz.com.br ou se deseja usar um arquivo existente. Você pode utilizar um arquivo existente, caso a zona já existisse anteriormente e houve problemas no servidor. Neste caso você poderá recriar a zona e mandar usar o arquivo já existente anteriormente. Ao fazer isso, todas as informações contidas anteriormente serão recuperadas a partir do arquivo já existente. No nosso exemplo vamos salvar as informações da zona em um novo arquivo. Por padrão, para o nome do arquivo, o assistente sugere o nome da zona com a extensão .dns. O arquivo será criado na pasta systemroot\System32\Dns , ondesystemroot representa a pasta onde está instalado o Windows 2000 Server. Vamos aceitar a opção padrão, conforme indicado na Figura a seguir:
Assistente para novas zonas

Figura - Definindo o nome do arquivo onde serão salvas as informações.
11. Clique em Avançar, para seguir para a próxima etapa do assistente.
12. Será exibida a tela final do assistente. Se você quiser alterar alguma opção pode utilizar o botão Voltar. Clique em Concluir, para criar a zona primária direta: xyz.com.br, conforme indicado na Figura a seguir:

Figura - A zona xyz.com.br, recém criada.
Conclusão

Nesta parte do tutorial, mostrei como fazer a criação de uma zona direta – xyz.com.br, no servidor DNS do Windows 2000 Server.
Muito bem, a zona xyz.com.br foi criada. Mas criar somente a zona tem pouca (para não dizer nenhuma) utilidade. Uma zona deve conter registros, os quais serão consultados para responder às consultas enviadas pelos clientes. Este será o nosso próximo estudo, ou seja, estudar os tipos de registros que podem ser criados em uma zona e quais os procedimentos práticos para criar, editar e excluir registros. Bem, mas este já é assunto para as próximas partes deste tutorial.
Nas próximas partes deste tutorial, segundo dentro da filosofia de apresentar ações práticas, você aprenderá sobre a criação de registros em uma zona do DNS.


Configurar Servidor de DNS


Este artigo descreve detalhadamente como instalar e configurar o DNS no computador com Windows Server 2003.

Antes de iniciar

Antes de começar a configurar seu DNS, é necessário reunir algumas informações básicas. O Internic deve aprovar algumas destas informações para usar na Internet, mas se você estiver configurando este servidor apenas para uso interno, poderá decidir quais nomes e endereços IP deseja usar. 

É necessário ter as seguintes informações:
  • Seu nome de domínio (aprovado pelo Internic).
  • O endereço IP e o nome de host de cada servidor para o qual deseja fornecer a resolução de nome.
Observação: Os servidores podem ser seus servidores de email, servidores de acesso público, servidores FTP, servidores WWW e outros. 

Antes de configurar o computador como um DNS, verifique se as seguintes condições são verdadeiras:
  • O sistema operacional está configurado corretamente. Na família do Windows Server 2003, o serviço DNS depende da configuração correta do sistema operacional e de seus serviços, como TCP/IP. Se você tem uma nova instalação de um sistema operacional do Windows Server 2003, poderá usar as configurações de serviço padrão. Não é necessário realizar ações adicionais.
  • Todo o espaço disponível em disco foi alocado.
  • Todos os volumes de disco existentes usam o sistema de arquivos NTFS. Volumes FAT32 não são seguros e não têm suporte à compactação de arquivos e pastas, cotas de disco, criptografia de arquivo ou permissões de arquivos individuais

Instalar o DNS

  1. Abra o Assistente de componentes do Windows. Para fazer isto, execute as seguintes etapas:
    1. Clique em Iniciar, em Painel de controle e em Adicionar ou remover programas.
    2. Clique em Adicionar/remover componentes do Windows.
  2. Em Componentes, marque a caixa de seleção Serviços de rede e clique em Detalhes.
  3. Em Subcomponentes dos serviços de rede, marque a caixa de seleção Sistema de nomes de domínios (DNS), clique em OK e clique em Avançar.
  4. Se for solicitado, em Copiar arquivos de, digite o caminho completo dos arquivos de distribuição e clique em OK.

Configurar o DNS

  1. Inicie o Assistente para configurar o servidor. Para fazer isto, clique em Iniciar, aponte para Todos os programas, paraFerramentas administrativas e clique em Assistente para configurar o servidor.
  2. Na página Função do servidor, clique em Servidor DNS e em Avançar.
  3. Na página Resumo de seleções, verifique e confirme as opções que selecionou. Os seguintes itens devem aparecer nesta página:
    • Instalar o DNS
    • Executar o Assistente para configurar um DNS para configurar o DNS
    Se a página Resumo de seleções listar estes dois itens, clique em Avançar. Se a página Resumo de seleções não listar estes dois itens, clique em Voltar para retornar à página Função do servidor, clique em DNS e em Avançar.
  4. Quando o Assistente para configurar o servidor instala o serviço DNS, ele determina primeiro se o endereço IP deste servidor é estático ou é configurado automaticamente. Se o servidor estiver configurado no momento para obter seu endereço IP automaticamente, a página Configurando componentes do Assistente de componentes do Windows solicitará a configuração deste servidor com um endereço IP estático. Para fazer isto:
    1. Na caixa de diálogo Propriedades de Conexão de rede local, clique em Protocolo Internet (TCP/IP) e emPropriedades.
    2. Na caixa de diálogo Propriedades de protocolos TCP/IP, clique em Use o seguinte endereço IP e digite o endereço IP estático, a máscara de sub-rede e o gateway padrão deste servidor.
    3. Em DNS preferido, digite o endereço IP deste servidor.
    4. Em DNS alternativo, digite o endereço IP de outro servidor DNS interno, ou deixe esta caixa em branco.
    5. Ao terminar de configurar os endereços estáticos de seu DNS, clique em OK e clique em Fechar.
  5. Após clicar em Fechar, o Assistente para configurar um servidor DNS inicia. No assistente, execute as seguintes etapas:
    1. Na página Selecione a ação de configuração, marque a caixa de seleção Criar uma zona de pesquisa direta e clique em Avançar.
    2. Para especificar se este DNS hospeda uma zona DNS que contém registros do recurso DNS para seus recursos de rede, na página Local do servidor primário, clique em Este servidor mantém a zona e clique em Avançar.
    3. Na página Nome da zona, em Nome da zona, especifique o nome da zona DNS para sua rede e clique emAvançar. O nome da zona é o mesmo nome que o domínio DNS da sua pequena organização ou filial.
    4. Na página Atualização dinâmica, clique em Permitir atualizações dinâmicas seguras e não seguras, e clique em Avançar. Isto certifica de que os registros de recurso DNS dos recursos na sua rede atualizam automaticamente.
    5. Na página Encaminhadores, clique em Sim, encaminhar consultas para servidores DNS com os seguintes endereços IP e clique em Avançar. Ao selecionar esta configuração, você encaminha todas as consultas DNS de nome DNS para fora da rede para um DNS no seu ISP ou sede. Digite um ou mais endereços IP que Os servidores DNS de seu ISP ou de sua sede usam.
    6. Na página Concluindo o Assistente para configurar um DNS do Assistente para configurar um DNS, é possível clicar em Voltar para alterar quaisquer configurações. Para aplicar suas seleções, clique em Concluir.
Após concluir o Assistente para configurar um DNS, o Assistente para configurar o servidor exibe a página Este servidor agora é um servidor DNS. Para revisar todas as alterações feitas no seu servidor no Assistente para configurar o servidor ou para verificar se uma nova função foi instalada com êxito, clique em Log de configuração do servidor. O Log de configuração do servidor está localizado em %systemroot%\Debug\Configure Your Server.log. Para fechar o Assistente para configurar o servidor, clique em Concluir

sábado, 17 de novembro de 2012

Arquivo ClienteDaoImpl


Nome do arquivo ClienteDaoImpl (ClienteDaoImpl.java)


package daos;
import br.com.cliente.models.Cliente;
import br.com.cliente.utility.DaoGenericoImpl;
import br.com.cliente.utility.HibernateUtility;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Criteria;
public class ClienteDaoImpl extends DaoGenericoImpl < Cliente , Long > implements ClienteDao {
    @Override
    public List consultar() {
        List lista = new ArrayList();
        Criteria crit = HibernateUtility.getSession().createCriteria(Cliente.class);
        lista = (List) crit.list();
        return lista;
    }
}

Arquivo ClienteDao


Nome do arquivo ClienteDao (ClienteDao.java)


package daos;
import br.com.cliente.models.Cliente;
import br.com.cliente.utility.DaoGenerico;
import java.util.List;
public interface ClienteDao extends DaoGenerico <Cliente, Long> {
    public List consultar();
}

Arquivo HibernateUtility


Nome do arquivo HibernateUtility (HibernateUtility.java)

package br.com.cliente.utility;
 import br.com.cliente.models.Cliente;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class HibernateUtility {
    private static final SessionFactory factory;
    private static final ThreadLocal sessionThread = new ThreadLocal();
    private static final ThreadLocal transactionThread = new ThreadLocal();
    public static Session getSession() {
       Session session = (Session) sessionThread.get();
        if ((session == null) || (!(session.isOpen()))) {
            session = factory.openSession();
            sessionThread.set(session);
        }
        return ((Session) sessionThread.get());
    }
    public static void closeSession() {
        Session session = (Session) sessionThread.get();
        if ((session != null) && (session.isOpen())) {
            sessionThread.set(null);
            session.close();
        }
    }
    public static void beginTransaction() {
        Transaction transaction = getSession().beginTransaction();
        transactionThread.set(transaction);
    }
    public static void commitTransaction() {
        Transaction transaction = (Transaction) transactionThread.get();
        if ((transaction != null) && (!(transaction.wasCommitted())) && (!(transaction.wasRolledBack()))) {
            transaction.commit();
            transactionThread.set(null);
        }
    }
    public static void rollbackTransaction() {
        Transaction transaction = (Transaction) transactionThread.get();
        if ((transaction != null) && (!(transaction.wasCommitted())) && (!(transaction.wasRolledBack()))) {
            transaction.rollback();
            transactionThread.set(null);
        }
    }
    static {
        try {
            factory = new Configuration()
//                    /***MYSQL***/

                    .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect") // tipo de dialeto do banco
                    .setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver") // driver do banco
                    .setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/cliente") // endereço do banco de dados
                    .setProperty("hibernate.connection.username", "root")

                    .setProperty("hibernate.connection.password", "08515453")

                    .setProperty("hibernate.hbm2ddl.auto", "update")

                    .setProperty("hibernate.c3p0.max_size", "10")

                    .setProperty("hibernate.c3p0.min_size", "2")

                    .setProperty("hibernate.c3p0.timeout", "5000")

                    .setProperty("hibernate.c3p0.max_statements", "10")

                    .setProperty("hibernate.c3p0.idle_test_period", "3000")

                    .setProperty("hibernate.c3p0.acquire_increment", "2")

                    .setProperty("show_sql", "true")

                    .setProperty("use_outer_join", "true")

                    .setProperty("hibernate.generate_statistics", "true")

                    .setProperty("hibernate.use_sql_comments", "true")

                    .setProperty("hibernate.format_sql", "true")

                    //CADASTROS abaixo coloque todas classes que deseja ser modelo para criação do banco de dados

                    .addAnnotatedClass(Cliente.class)

                    //MOVIMENTOS

                    .buildSessionFactory();

        } catch (RuntimeException e) {
            e.printStackTrace();
            throw e;
        }
    }
    public static void main(String [] args) {
    }
}

Arquivo DaoGenericoImpl


Nome do arquivo  DaoGenericoImpl( DaoGenericoImpl.java)


package br.com.cliente.utility;


import java.io.Serializable;

import java.lang.reflect.ParameterizedType;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Set;

import org.hibernate.Criteria;

import org.hibernate.HibernateException;

import org.hibernate.LockOptions;

import org.hibernate.criterion.Restrictions;
public class DaoGenericoImpl<T, ID extends Serializable> implements DaoGenerico<T, ID> {
    private final Class<T> oClass;
    public DaoGenericoImpl() {
        this.oClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];

    }
    @Override
    public Class<T> getObjectClass() {
        return this.oClass;
    }
    @Override
    public T save(T objeto) {
        try {
            Object obj = null;
            HibernateUtility.beginTransaction();
            obj = HibernateUtility.getSession().merge(objeto);
            HibernateUtility.commitTransaction();
            HibernateUtility.closeSession();
            return (T) obj;
        } catch (HibernateException hibernateException) {
            cancel();
            throw hibernateException;
        }
    }
    @Override
    public void delete(T objeto) {
        try {
            HibernateUtility.beginTransaction();
            HibernateUtility.getSession().delete(objeto);
            HibernateUtility.commitTransaction();
            HibernateUtility.closeSession();
        } catch (HibernateException hibernateException) {
            cancel();
            throw hibernateException;
        }
    }
    @Override
    public void deleteItem(T objeto) {
        try {
            HibernateUtility.beginTransaction();
            HibernateUtility.getSession().delete(objeto);
        } catch (HibernateException hibernateException) {
            cancel();
            throw hibernateException;
        }
    }
    @Override
    public List<T> list() {
        try {
            List list = HibernateUtility.getSession().createCriteria(oClass).list();
            //HibernateUtility.closeSession();
            return (List<T>) list;
        } catch (HibernateException hibernateException) {
            cancel();
           throw hibernateException;
        }
    }
    @Override
    public T getById(Serializable id) {
        try {
            return (T) HibernateUtility.getSession().get(oClass, id);
        } catch (HibernateException hibernateException) {
            cancel();
            throw hibernateException;
        }

    }
    @Override

    public T getById(Serializable id, boolean lock) {
        try {
            if (lock) {
                return (T) HibernateUtility.getSession().get(oClass, id, LockOptions.UPGRADE);
            } else {
                return (T) HibernateUtility.getSession().get(oClass, id);
            }
        } catch (HibernateException hibernateException) {
           cancel();
            throw hibernateException;
        }
    }
    @Override
    public List<T> listCriterio(String subClazz, Map<String, Object> filtrosConsulta, int tipoConsulta) {
        List<T> lista = new ArrayList<T>();
        Set entradas = filtrosConsulta.entrySet();
        try {
            Criteria crit = HibernateUtility.getSession().createCriteria(oClass);
            if (subClazz == null) {
                for (Iterator it = entradas.iterator(); it.hasNext();) {
                    Entry object = (Entry) it.next();
                    if (object.getValue() instanceof Enum) {
                        crit.add(Restrictions.eq(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 0) {
                        crit.add(Restrictions.ilike(object.getKey().toString(), "%" + object.getValue() + "%"));
                    } else if (tipoConsulta == 1) {
                        crit.add(Restrictions.eq(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 2) {
                        crit.add(Restrictions.gt(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 3) {
                        crit.add(Restrictions.ge(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 4) {
                        crit.add(Restrictions.lt(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 5) {
                        crit.add(Restrictions.le(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 2) {
                        crit.add(Restrictions.ne(object.getKey().toString(), object.getValue()));
                    }
                }
            } else {
                for (Iterator it = entradas.iterator(); it.hasNext();) {
                    Entry object = (Entry) it.next();
                    //crit.createCriteria(subClazz).add(Restrictions.ilike(object.getKey().toString(), "%" + object.getValue() + "%"));
                    if (object.getValue() instanceof Enum) {
                    } else if (tipoConsulta == 0) {
                        crit.createCriteria(subClazz).add(Restrictions.ilike(object.getKey().toString(), "%" + object.getValue() + "%"));
                    } else if (tipoConsulta == 1) {
                        crit.createCriteria(subClazz).add(Restrictions.eq(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 2) {
                        crit.createCriteria(subClazz).add(Restrictions.gt(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 3) {
                        crit.createCriteria(subClazz).add(Restrictions.ge(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 4) {
                        crit.createCriteria(subClazz).add(Restrictions.lt(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 5) {
                        crit.createCriteria(subClazz).add(Restrictions.le(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 2) {
                        crit.createCriteria(subClazz).add(Restrictions.ne(object.getKey().toString(), object.getValue()));

                    }

                }
            }
            crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
            crit.setMaxResults(20);
            lista = (List<T>) crit.list();
            //HibernateUtility.closeSession();
            return lista;
        } catch (HibernateException hibernateException) {
            cancel();
            throw hibernateException;
        }
    }
    @Override
    public List<T> consultaHQL(String consulta) {
        return (List<T>) HibernateUtility.getSession().createQuery(consulta).list();
    }
    @Override
    public void cancel() {
        HibernateUtility.rollbackTransaction();
        HibernateUtility.closeSession();      
    }
}

Arquivo DaoGenerico


Nome do arquivo DaoGenerico (DaoGenerico.java)

package br.com.cliente.utility;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
public interface DaoGenerico<T, ID extends Serializable> {
    public Class<T> getObjectClass();
    public T save(T objeto);
    public void delete(T objeto);
    public void deleteItem(T objeto);
    public List<T> list();
    public List<T> listCriterio(String subClazz, Map<String, Object> filtrosConsulta, int tipoConsulta);
    public T getById(Serializable id);
    public T getById(Serializable id, boolean lock);
    public List<T> consultaHQL(String consulta);
    public void cancel();
}