sexta-feira, 13 de dezembro de 2013

Preparando Aplicações ADF Fusion com Oracle JDeveloper 12c para Glashfish 3.1.2

Objetivo

O objetivo deste tutorial é apresentar passo a passo o necessário para criar uma aplicação ADF Fusion no Oracle JDeveloper 12c para o servidor de aplicação Glassfish 3.1.2.
Requisitos

Necessário ter o Glassfish 3.1.2 instalado e configurado para utilização de aplicação com ADF Framework.

Criando aplicação de Teste

Abra o JDeveloper e selecione o menu File > New > Application para criar uma nova aplicação. Siga o passo a passo das Figuras 1 a 6 para criar um projeto ADF Fusion.





Figura 1 - Criando aplicação ADF Fusion


Figura 2 - Definindo nome da aplicação

Figura 3 - Definindo projeto camada de dados


Figura 4 - Definindo projeto camada de dados


Figura 5 - Definindo projeto web (front end)


Figura 6 - Definindo projeto web (front web)
Após a criação do projeto utilizando o assistente do JDeveloper, crie a conexão com o banco de dados. Neste tutorial estamos utilizando o HR Schema disponibilizado pela própria Oracle para estudo do ADF framework.
Veja Figura 7 para entender como configurar a conexão.
Figura 7 - Criando conexão com banco de dados
Caso a aba Databases não esteja disponível acesse o menu Window > Database > Databases. Observe que na Figura 7 a conexão HRConn-DSV aparece de baixo do projeto AppTestJeeAdfGlassfish. Após criar a conexão clique e arraste a mesma para o projeto AppTestJeeAdfGlassfish, associando assim o projeto a conexão recém criada.
Uma vez que o projeto estiver associado à conexão com banco de dados crie a entidade Employee conforme o passo a passo das Figuras 8 a 11.
Figura 8 - Identificando as tabelas do banco de dados



Figura 9 - Escolhendo tabelas


Figura 10 - Criando modulo de controle da entidade
Uma vez finalizado este processo serão criados os arquivos referentes à entidade Employee e também o Data Control AppModuleDataControl que será usado posteriormente para gerar o formulário de manutenção dos dados da entidade Employee.
Nota
Verifique a sessão Data Controls para verificar a existência do AppModuleDataControl, caso  o mesmo não apareça utilize a ícone refresh.


Para finalizar, abra o arquivo AppModule do pacote module no projeto Model e altere o valor do JDNI para jdbc/HRConn-DSVDS conforme apresentado na Figura 11 e na Figura 12.
Figura 11 - Alterando valor do recurso JDBC
Figura 12 - Alterando valor do recurso JDBC


Clique com o botão direito no projeto Web e acesse o menu New > Page. Crie a pagina index.jspx conforme a Figura 13.
Figura 13 - Criando welcome page
Abra o arquivo web.xml e configure a tag welcome-file-list para faces/index.jspx. Faça isso editando diretamente o conteúdo do arquivo ou utilizando a sessão Pages da visualização overview conforme Figura 14.
Figura 14 - Configurando welcome page
Conforme a Figura 15 acesse a sessão Data Controls da aba Applications, selecione EmployeeView1 e arreste para o arquivo index.jspx e então clique em ADF Form.
Figura 15 - Criando ADF Form
Monte o formulário conforme a Figura 16. Verifique a Figura 17 para conferir o resultado.
Figura 16 - Configurando formulário
Figura 17 - Formulário criado


Configurando a aplicação para deploy no Glassfish


Clique com o botão direito no projeto Model > Project Properties e então acesse a sessão Deployment e remova o profile AppTestJeeAdfGlassfish_Project_adflib conforme Figura 18.
Figura 18 - Configurando projeto Model
Clique com o botão direito no projeto Web > Project Properties e então acesse a sessão Deployment. Selecione o profile AppTestJeeAdfGlassfish_Project1_webapp (Web Module) clique no botão Edit e altere a propriedade Default Plataform para Glassfish 3.1 conforme Figura 19.
Figura 19 - Alterando Default Plataform
Nota
Alterar a propriedade Default Plataform para Glassfish 3.1 faz com que o JDeveloper crie o arquivo glassfish-web.xml seja gerado no momento de empacotar o projeto em um arquivo WAR.


Acesse o menu Application > Application Properties e então acesse a sessão Deployment. Selecione o profile AppTestJeeAdfGlassfish_Project1_AppTestJeeAdfGlassfish (Application Module) e clique no botão Edit. Altere a propriedade Default Plataform para Glassfish 3.1 do mesmo modo realizado no projeto Web.
Marque os profiles dos projetos Model e Web conforme Figura 20.
Figura 20 - Selecionado deployment profiles
Desmarque o arquivo weblogic-application.xml na sessão File Groups conforme Figura 21.


Figura 21 - Remover weblogic-application.xml
Para gerar o EAR acesse o menu Application > Deploy > AppTestJeeAdfGlassfish_Project1_AppTestJeeAdfGlassfish... e então selecione Deploy to EAR e clique no botão Finish conforme Figura 22.


Figura 22 - Gerando EAR
O EAR AppTestJeeAdfGlassfish_Project1_AppTestJeeAdfGlassfish.ear será gerado no diretório deploy dentro do diretório da aplicação.


Configurando JDBC Data Source no Glassfish


Antes de realizar o deploy do EAR no servidor é necessário configurar a conexão com o banco de dados.
Acesse o console administrativo (provavelmente no endereço https://localhost:4848/), e no menu Commom Tasks > Resources > JDBC Connection Pools clique no botão New e preencha as conforme a Figuras 23 e 24.
Figura 23 - Configurando conexão JDBC


Figura 24 - Configurando conexão JDBC
Na sessão Additional Properties configure as propriedades da conexão conforme Figura 25.
Figura 25 - Configurando propriedades da conexão
Para finalizar é necessário configurar um JBDC Resource para a conexão HRConn-DSV. Acesse o menu Commom Tasks > Resources > JDBC Resources clique em New e preencha as conforme a Figura 26.
Figura 26 - Configuração JDBC Resource



Realizando deploy do EAR no Glassfish
Acesse o console administrativo novamente e selecione a ação Deploy an Application conforme Figura 27.
Figura 27 - Realizar deploy
Selecione o arquivo EAR e faça o deploy conforme Figura 28.
Figura 28 - Escolhendo arquivo EAR
Após o deploy vá até o detalhamento da aplicação conforme Figura 29.
Figura 29 - Selecionado detalhamento da aplicação
Clique no link Lunch como apresentado na Figura 30 para ir até página de acesso dos links da aplicação. Na aba Descriptor serão apresentados os arquivos application.xml, web.xml e glassfish-web.xml gerados automaticamente para o deploy no Glasshfish conforme as configuração realizadas no JDeveloper.
Figura 30 - Acessando links de acesso à aplicação
No navegador deve ser apresentada uma página conforme a Figura 31. Clique em qualquer um dos links para acessar a aplicação.


Figura 31 - Acessando aplicação


That is all folks!!!

quinta-feira, 12 de dezembro de 2013

Preparando Glassfish 3.1.2 para aplicações ADF com Oracle JDeveloper 12c

Objetivo

O objetivo deste tutorial é apresentar passo a passo o necessário para configurar o servidor de aplicações Glassfish 3.1.2 fazendo o mesmo suportar o deploy de aplicações JEE com ADF framework.

Obtendo artefatos necessários

Baixe o Glassfish 3.1.2 (Full Platform - EN) no link Glassfish na área links deste tutorial. É muito importante que a versão seja Full Platform, pois a versão Web Profile não possui características necessárias ao framework ADF.

Baixe também o adf-essentials.zip (conjunto de jars necessário para rodar aplicações ADF) no link ADF Essentials na área links deste tutorial.

Segue abaixo a lista de jars presentes no adf-essentials.zip:

·      oracle.adf.share.ca_11.1.1/adf-share-base.jar
·      oracle.adf.share.ca_11.1.1/adf-share-ca.jar
·      oracle.adf.share_11.1.1/commons-el.jar
·      oracle.adf.share_11.1.1/adf-share-support.jar
·      oracle.adf.share_11.1.1/adfsharembean.jar
·      oracle.adf.share_11.1.1/jsp-el-api.jar
·      oracle.adf.share_11.1.1/adflogginghandler.jar
·      oracle.adf.share_11.1.1/oracle-el.jar
·      oracle.mds_11.1.1/mdsrt.jar
·      oracle.bali.share_11.1.1/share.jar
·      oracle.xmlef_11.1.1/xmlef.jar
·      oracle.javatools_11.1.1/resourcebundle.jar
·      oracle.javatools_11.1.1/javamodel-rt.jar
·      oracle.javatools_11.1.1/javatools-nodeps.jar
·      oracle.adf.security_11.1.1/adf-share-security.jar
·      oracle.adf.security_11.1.1/adf-controller-security.jar
·      oracle.xdk_11.1.0/xmlparserv2_sans_jaxp_services.jar
·      oracle.xdb_11.1.0.jar
·      oracle.jrf_11.1.1/jrf-api.jar
·      oracle.jdbc_11.1.1/ojdbc6dms.jar
·      oracle.dms_11.1.1/dms.jar
·      oracle.odl_11.1.1/ojdl.jar
·      oracle.odl_11.1.1/ojdl2.jar
·      oracle.jmx_11.1.1/jmxframework.jar
·      oracle.jmx_11.1.1/jmxspi.jar
·      oracle.classloader_11.1.1.jar
·      oracle.logging-utils_11.1.1.jar
·      oracle.web-common_11.1.1.jar
·      oracle.webservices_11.1.1/oc4j-ws-support.jar
·      org.apache.bcel_5.1.jar
·      oracle.nlsrtl_11.2.0/orai18n-mapping.jar

Instalando o Glassfish

Execute o instalador como administrador. Siga as instruções do assistente de instalação e desmarque a opção Instalar Ferramenta de Atualização conforme Figura 1.

Figura 1 - Instalando Glassfish

Ao final da instalação, será gerado o diretório c:\glassfish3 (doravante chamado GLASSFISH_HOME).

Configurando Glassfish

Acesse o prompt de comando e vá até o diretório GLASSFISH_HOME/bin e então execute o arquivo asadmin.bat para ter acesso ao prompt de administração do Glassfish. Pare a execução do domínio padrão com a instrução stop-domain domain1 e em seguida remova-o com a instrução delete-domain domain1 conforme Figura 2.
Figura 2 - Remove domínio padrão

Em seguida crie um novo domínio com a instrução create-domain adfdomain. NÃO tecle “Enter” para aceitar o usuário padrão admin, digite um usuário e senha a sua escolha conforme Figura 3. Neste tutorial utilizaremos usuário e senha admin/admin respectivamente.

Figura 3 - Criando domínio adfdomain

Inicialize o novo domínio com a instrução start-domain adfdomain e execute instrução enable-secure-admin. A após a mensagem de falha e autenticação digite a senha para o usuário criado anteriormente. Vide Figura 4.

Figura 4 - Habilitando Segurança

Reinicialize o domínio com as instruções stop-domain adfdomain e start-domain adfdomain. Acesse o console administrativo https://localhost:4848/.
Na área Common-Tasks > Configurations > server-config > JVM Settings acesse a aba JVM Options. Altere a propriedade ‑XX:MaxPermSize=192m para -XX:MaxPermSize=512m e adicione a propriedade -Doracle.mds.cache=simple e então clique no botão Save conforme Figura 5.

Figura 5 - Configurando JVM Options

Após configurar as variáveis da JVM pare a execução do domain com a instrução stop-domain adfdomain. Descompacte o zip (Ignorando a estrutura de diretórios) que contem os jars do adf-essentials e copie os jars para o diretório GLASSFISH_HOME/glassfish/domains/adfdomains/lib.

Voialá, o domínio adfdomain do Glassfish esta pronto para deploy de aplicações JEE com ADF framework.

ADF-ESSENTIALS IMPORTANTE

É provável que o arquivo adf-essentials.zip não possua todos os jars apresentados na sessão Obtendo Artefatos Necessários. Os jars que estiverem faltando podem ser encontrados dentro do diretório oracle_commom da instalação do JDeveloper.

DESCOMPACTAR IGNORANDO ESTRUTURA DE DIRETORIOS

Existem softwares com Winzip, Winrar, 7zip que podem realizar esta tarefa sem dificuldade. Contudo, existe uma maneira muito simples de realizar esta tarefa via prompt de comando no Windows.

Baixe o unzip.exe no link Unzip na área links deste tutorial e mova-o para o diretório C:\Windows\System32.

Execute a seguinte instrução unzip -d adf-essentials-unziped -j adf-essentials.zip no prompt de comando, dentro do diretório que possui o arquivo adf-essentials.zip. O conteúdo do mesmo será descompactado no diretório adf-essentials-unziped ignorando a estrutura de diretórios do arquivo zip.

 LINKS
Glassfish
ADF Essentials
Unzip


quinta-feira, 28 de novembro de 2013

Obtendo endereço no formato MS-DOS

As vezes precisamos obter o endereço de uma pasta no formato MS-DOS em um arquivo .bat par iniciar uma aplicação Java.

Endereços como C:\Program Files\Java\jdk1.7.0_45\jre não são válidos para promt MS-DOS, na maioria das vezes apenas colocamos este endereço entre aspas (") para que o mesmo seja válido. Contudo, à casos em que precisamos informar o endereço no formato do MS-DOS, neste caso o endereço seria C:\PROGRA~1\Java\JDK17~1.0_4\jre.

Para obter este tipo de endereço, siga os passos abaixo:
  • Abra o prompt de comando
  • Utilize o comando cd para entrar no diretório (cd C:\Program Files\Java\jdk1.7.0_45\jre)
  • Então utilize a instrução for %I in (.) do echo %~sI
  • O resultado exibido pelo prompt será C:\PROGRA~1\Java\JDK17~1.0_4\jre

Recuperar Primeira Exception do Stacktrace

O Código abaixo recupera à primeira excessão de um stacktrace, ou seja, a excessão que deu origem ao erro.
    private Throwable getRootException(Throwable ex) {
        Throwable rtEx = null;
        if ((rtEx = ex.getCause()) == null) {
            return ex;
        } else {
            return getRootException(rtEx);
        }
    }

Este código é util para desvendar um erro que é propagado por muitas camadas.

quarta-feira, 7 de agosto de 2013

Desabilitando Log Excessivo no Web Sphere

Vamos a uma dica rápida porém muito útil para quem trabalha com o servidor de aplicação IBM Web Sphere. 

Nós, desenvolvedores, já vimos no console do RAD (IDE baseada em eclipse) são apresentadas diversas informações que muitas vezes não são uteis ao processo de desenvolvimento. Caso isto não fosse o suficiente para querer remove-las, muitas vezes estas informações causam lentidão no processo de deploy. Problema este que pode ser agravado quando existem muitas aplicações na mesma instância do Web Sphere, chegando até a causar o "nosso amigo" Error: Java Heap Space.

Abaixo apresento uma maneira de reduzir consideravelmente o log desnecessário do Web Sphere.

Acesse o console administrativo (endereço padrão: http://localhost:9060/ibm/console) e acesse a área Troubleshooting > Logging and Tracing > server 1 > JVM Logs. Desabilite as opções Show application print statements como apresentado na Figura 1.

Figura 1
Como essa configuração desablitada toda e qualquer informação apresentada por meio de System.out ou System.err não será apresentada no console do Eclipse.

That is all folks!