Oi pessoal!
Hoje a dica é sobre Application Module Configuration. Como vocês sabem, toda a camada de fachada do ADF BC é baseada nos Application Modules. Eles são responsáveis por controlar os acessos aos Data Sources, manter o controle transacional, instanciar os View Objects (e por consequência, os Entity Objects e suas queries) e controlar o fluxo da aplicação como um todo. Portanto, a correta configuração dos parâmetros dos AMs é fundamental para o bom desempenho e estabilidade da aplicação ADF como um todo.
Podemos acessar as configurações dos application modules clicando com o botão direito sobre eles no JDeveloper e selecionando o item "Configurations". Podemos por exemplo criar mais de um configuration, um Local (para uso com o Connection JDBC local) e um Remoto (Para uso dentro do App Server usando um Data Source).
Vamos hoje tratar portanto de um dos principais aspectos do ajuste de configurações: Pooling.
Assim como os Data Sources no Servidor J2EE são responsáveis por manter um pool de conexões de banco para melhorar a performance do acesso a dados, o chamado Connection Pooling, os Application Modules no ADF Runtime são responsáveis por manter um pool de AMs para servir mais rapidamente as aplicações ADF, chamado de AM Pooling. E da mesma maneira que os pools de conexão, podemos "tunar" a performance diminuindo o tempo que o runtime mantém uma instância do Application Module no ar ou aumentando o número de AM instances em memória para aguentar uma maior carga de usuários.
Para fazê-lo, selecionamos a configuração desejada dentro das Configurations e clicamos em "Edit", navegando para a aba "Pooling and Scalability". Nesta aba, temos a seção "Application Pool", onde podemos definir:
1) Initial Pool Size: Qual o tamanho inicial do meu pool de instâncias AM. Se colocarmos um valor muito baixo, cada usuário que se conectar demandará a instanciação de um AM, e por consequência, uma solicitação de conexão ao Data Source. Porém, se for muito alto, podemos estar esbanjando memória do servidor.
2) Maximum Pool Size: Qual o maior tamanho possível do pool. Segue a mesma lógica do Initial Pool Size, mas tem o efeito reverso.
3) Minimum Available Size: Número mínimo de instâncias que devem estar DISPONÍVEIS para uso.
Como o processo de instanciação é bem intensivo em uso de recursos, devemos planejar estes parâmetros levando em consideração o número de usuários logados ao mesmo tempo na aplicação. Para uma aplicação que, por exemplo, tenha no mínimo 2 usuários conectados a qualquer momento, seria interessante colocar o parâmetro Initial Pool Size como 2. O estudo destes parâmetros pode fazer a diferença na experiência do usuário.
Abraços!
sexta-feira, 29 de agosto de 2008
sexta-feira, 15 de agosto de 2008
Criando Templates com Oracle Bpel
A nossa dica de hoje, é referente ao Oracle Bpel.
É muito comum criarmos templates para criação de diversas aplicações, no Oracle Bpel não é diferente.
Como o desenvolvimento do Oracle Bpel pode ser um pouco complexo, principalmente na criação de (Logs, emails e validações), temos a opção de criação de diversos templates, veja como:
Abra o Jdeveloper e crie uma nova aplicação Bpel, adicionando os componentes que deverão servir como Template.

Após a definição dos padrões, salve a aplicação e clique com o botão direito no Objeto. Abrirá a opção de "Mark as Template".

Feito isso, o template foi criado com sucesso.
Para testar crie um novo projeto "Bpel" que irá aparecer o template criado acima, conforme imagem.

Selecione o template "OracleTechTips Templates" e o novo projeto estará com os componentes definidos acima.
(Obs.: É possível criar o número de templates necessários).
Abraços e até a próxima.
É muito comum criarmos templates para criação de diversas aplicações, no Oracle Bpel não é diferente.
Como o desenvolvimento do Oracle Bpel pode ser um pouco complexo, principalmente na criação de (Logs, emails e validações), temos a opção de criação de diversos templates, veja como:
Abra o Jdeveloper e crie uma nova aplicação Bpel, adicionando os componentes que deverão servir como Template.
Após a definição dos padrões, salve a aplicação e clique com o botão direito no Objeto
Feito isso, o template foi criado com sucesso.
Para testar crie um novo projeto "Bpel" que irá aparecer o template criado acima, conforme imagem.
Selecione o template "OracleTechTips Templates" e o novo projeto estará com os componentes definidos acima.
(Obs.: É possível criar o número de templates necessários).
Abraços e até a próxima.
sexta-feira, 18 de julho de 2008
Como Construir um SelectOneChoice Hierarquico no ADF Faces RC.
Galera essa dica é para aqueles que iniciaram suas pesquisas com o Jdeveloper 11g.
Nosso case, foi desenvolvido por Frank Nimphius.
O exemplo abaixo, iremos construir um DropDown com o componente SelectOneChoice, onde o mesmo irá listar os "Departamentos" e seus "Empregados" em forma de hierarquia, como a imagem abaixo.
Para a implementação do lista, é preciso criar um View Object (VO) hirarquico, baseado no "departamento" e "empregado". O VO pode ser arrastado ou criado manualmente para a tela, em forma de SelectOneChoice. O código deve ficar da seguinte forma:
<af:selectOneChoice id="selectBox" label="Choose Employee" valuePassThru="true"
styleClass="employeeSelectBox"unselectedLabel="Choose Employee">
<af:forEach items="#{bindings.DepartmentsView1.children}" var="departments">
<af:selectItem label="#{departments.DepartmentName}" disabled="true"/>
<af:forEach items="#{departments.children}" var="employees">
<af:selectItem label="#{employees.LastName}" value="employees.EmployeeId"/>
</af:forEach>
</af:forEach>
Note que o primeiro "forEach" é baseado no VO de departamentos e exibe o atributo DepartamentName. O segundo "forEach" é baseado no Filho do VO de departamentos como
#{departaments.children}.
Para aplicar a cor a lista, é utilizado o css, onde o selectOneChoice tem sua propriedade styleClass.
Para quem quiser fazer o download do projeto, acesse:
http://www.oracle.com/technology/products/jdev/tips/fnimphius/selectonechoicegroups/HierarchicalSelectOneChoice.zip
Até a próxima.
segunda-feira, 7 de julho de 2008
Estratégia: Como modernizar aplicações em Forms para SOA
Olá pessoal!
Post rápido para vocês: Segue um link muito interessante da Oracle sobre estratégias de modernização de aplicações Forms, que mostra como migrar e/ou modernizar aplicações em forms utilizando tecnologias SOA como o ADF e o BPEL:
http://otn.oracle.com/goto/formsmodernize
Abraços!
Thiago
Post rápido para vocês: Segue um link muito interessante da Oracle sobre estratégias de modernização de aplicações Forms, que mostra como migrar e/ou modernizar aplicações em forms utilizando tecnologias SOA como o ADF e o BPEL:
http://otn.oracle.com/goto/formsmodernize
Abraços!
Thiago
terça-feira, 1 de julho de 2008
Adicionando controles ao JSF baseado em Switcher
O componente "Switcher" é bastante utilizado para condições de exibições entre componentes JSF como: Controlar CommandLink e OutputText dentro de Tree ou Table. Um cenário bastante comum é a criação de uma Tree, onde seus "nós" podem ser coloridos ou mesmo em forma de Link ou em forma de Texto comum como a Imagem abaixo:

Obs.: O Switcher pode ser utilizado dentro de qualquer componente ADF Faces (Tree, Table, Panel e etc...).
Um grande abraço e até a próxima.
Para conseguir esse tipo de controle, precisamos ter um atributo de controle, onde será feito nosso controle.
Adionar o "Switcher" como o código abaixo:
Adionar o "Switcher" como o código abaixo:
* Switcher com o facetName = (atributo de controle Mostra) e o valor defaut = "N".
Se o facet for igual a "N" a página irá exibir o componente OutputText com o valor desejado.
Se o facet for igual a "S" a pa´gina irá exibir o componente CommandLink com outro "Switcher".
* Switcher com o facetName = (atributo de controle Associado) e o valor defaut = "S".
Se o facet for igual a "S" o link será exibido na cor "Preto".
Caso contrário o link será exibido na cor "Vermelho".
Baseado no exemplo acima, podemos notar que se aplica a varios cenários de nosso dia-a-dia.
Obs.: O Switcher pode ser utilizado dentro de qualquer componente ADF Faces (Tree, Table, Panel e etc...).
Um grande abraço e até a próxima.
Assinar:
Postagens (Atom)