segunda-feira, 11 de março de 2013

INSTALAÇÃO DO POSTGRESQL 9.2 E USO NO JBOSS AS 7.


INTRODUÇÃO

Nesse artigo vamos demostrar como instalar o banco de dados Postgresql versão 9.2 e configurar o servidor de aplicações JBOSS AS 7 para ter acesso a esse banco de dados.


INSTALAÇÃO DO POSTGRESQL NO UBUNTU

1 – Fazer o download do postgresql nesse site:

Nesse site temos o instalador gráfico que será usado nesse artigo, mas pode-se baixar o PostgreSQL
nesse site também:


2 – Execute os seguintes comandos:

// Dando permissão para o arquivo poder ser executado.
chmod a+x postgresql-9.2.3-1-linux.run

// Executando o arquivo de instalação.
sudo ./postgresql-9.2.3-1-linux.run

Depois, será aberto um instalador gráfico no estilo “wizard” (assistente) que guiará o processo de instalação do postgresql. Veja nas figuras a seguir esse processo.







































CONFIGURAÇÃO DO POSTGRESQL

Nessa seção, vamos criar o banco de dados e algumas tabelas.
Para isso, vamos usar a ferramenta “pgAdmin III”.
Nas figuras a seguir, será ilustrado o processo de criação do banco de dados dentro do Postgresql.




















CRIAÇÃO DE TABELAS

Vamos criar tabelas através de uma ferramenta gráfica para criação de script dentro desse gerenciador gráfico. Para isso, veja nas figuras a seguir.












SCRIPTS SQL USADOS NAS FIGURAS

DROP TABLE IF EXISTS USUARIO;
CREATE TABLE IF NOT EXISTS USUARIO (
id integer,
roleId integer,
nome varchar(80),
PRIMARY KEY (id)
);

DROP TABLE IF EXISTS ROLE;
CREATE TABLE IF NOT EXISTS ROLE (
id integer,
nome varchar(80),
PRIMARY KEY(id)
);

ALTER TABLE USUARIO ADD FOREIGN KEY (roleId) REFERENCES ROLE(id);

INSERT INTO ROLE (id, nome) values (1,'ADMIN');
INSERT INTO ROLE (id, nome) values (2, 'CONVIDADO');

INSERT INTO USUARIO (id, roleId, nome) values (1, 1, 'ADMINSTRADOR_SISTEMA');
INSERT INTO USUARIO (id, roleId, nome) values (2, 2, 'CONVIDADO');
INSERT INTO USUARIO (id, roleId, nome) values (3, 1, 'OUTRO_ADMIN');

Na figura a seguir, será mostrado o uso do comando select para verificar tabelas criadas.






CONFIGURAÇÃO NO JBOSS AS 7


Até agora configuramos o banco de dados PostgreSQL, agora precisamos configurar o servidor JBOSS AS 7 para usar esse banco de dados. Primeiramente, na instalação do PostgreSQL, escolhermos instalar uma extensão adicional que o driver JDBC do PostgreSQL. Esse driver está localizado dentro do diretório “pgJDBC” dentro do diretório home do PostgreSQL. Nessa instalação, o PostgreSQL ficou instalado no diretório “/usr/local/PostgreSQL”. Com esse driver, vamos criar um módulo dentro do JBoss AS 7 para que o driver fique disponível para ser usado por todo o servidor.

Crie as pastas:

$JBOSS_HOME/modules/org/postgresql
$JBOSS_HOME/modules/org/postgresql/jdbc
$JBOSS_HOME/modules/org/postgresql/jdbc/main

Copie o driver (postgresql-9.1.901.jdbc4.jar) para a pasta “main”.

Crie um arquivo chamado “module.xml” dentro da pasta “main” e com o seguinte conteúdo.



<module xmlns="urn:jboss:module:1.1" name="org.postgresql.jdbc">

    <resources>
        <resource-root path="postgresql-9.1-901.jdbc4.jar"/>
        <!-- Insert resources here -->
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
     </dependencies>
</module>



Esse arquivo configura o módulo do JBoss AS 7, nesse arquivo podemos configurar as dependências entre módulos, exclusões de pacotes, etc. Note que informamos o jar do driver nesse arquivo e definimos o nome do módulo (org.postgresql.jdbc) que será usado dentro do arquivo standalone.xml para configurar o servidor JBoss AS 7 para usar esse módulo. E também, o nome definido no módulo deve seguir o caminho do diretório do módulo. Isto é, “org.postgresql.jdbc” indica módulo dentro da pasta “main” (padrão e obrigatório e não dá para alterar o nome dessa pasta, senão, o módulo não é carregado) que por sua vez está dentro da pasta “jdbc” que está dentro da pasta “postgresql” e que está dentro da pasta “org”. Ou seja, a nomenclatura dos módulos do JBoss AS 7 é análoga a nomenclatura de pacotes na linguagem Java, sempre associando os nomes entre pontos (“.”) com diretórios.

Depois disso, precisamos incluir essa informação “services/java.sql.Driver” no jar, para isso, execute o seguinte comando.

jar -uf postgresql-9.1-901.jdbc4.jar META-INF/services/java.sql.Driver

Pronto, o novo módulo do driver JDBC do PostgreSQL foi criado dentro do JBoss AS 7, só executar o servidor, se existir erros, o log do servidor reportará.

Altere o arquivo standalone.xml para criar drivers e datasources apartir do driver JDBC do postgresql instalado dentro do JBoss AS 7 na forma de módulos. Altere as seguintes linhas:


<subsystem xmlns="urn:jboss:domain:datasources:1.1">
            <datasources>
               <datasource jndi-name="java:jboss/postgresDS" pool-name="postgresDS" jta="false" enabled="true" use-java-context="true" use-ccm="false">
<connection-url>jdbc:postgresql://127.0.0.1:5432/mybd</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<driver>postgresql-driver</driver>
<pool>
    <min-pool-size>2</min-pool-size>
    <max-pool-size>50</max-pool-size>
</pool>
<security>
            <user-name>postgres</user-name>
             <password>postgresql</password>
</security>
<validation>
<check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
<background-validation-millis></background-validation-millis>
</validation>
<statement>
<prepared-statement-cache-size>0</prepared-statement-cache-size>
<share-prepared-statements>false</share-prepared-statements>
</statement>

</datasource>
     <drivers>
        <driver name="postgresql-driver" module="org.postgresql.jdbc">
<xa-datasource-class>org.postgresql.xa.PGXADatasource</xa-datasource-class>
   </driver>
</drivers>
</datasources>
</subsystem>


Depois de iniciar o servidor JBOSS AS 7, entre no console do servidor:


Se não tiver usuário cadastrado no JBoss AS 7, terá que rodar o script “addUser” que está dentro da pasta $JBOSS_HOME/bin. Nesse script adicionamos os usuários com suas respectivas senhas para poder acessar o console do servidor JBoss.

Nas figuras a seguir, serão mostrados os passos para entrar no console, acessar datasources e testá-los.












CONCLUSÃO

Nesse artigo mostramos como configurar o acesso do JBoss AS 7 ao banco de dados PostgreSQL. Com isso, podemos usar esse datasource para configurações de segurança, uso em arquivos implantados como EAR, WAR, etc.



REFERÊNCIAS