Melhorando o desempenho de aplicações em JSF

Tamanho: px
Começar a partir da página:

Download "Melhorando o desempenho de aplicações em JSF"

Transcrição

1 capa_ Melhorando o desempenho de aplicações em JSF Aumente a escalabilidade através de configurações e refatorações efetivas Adriano Castro adrianocastro189@gmail.com é formado em Ciência da Computação pela Universidade Federal de Juiz de Fora e atua como desenvolvedor Java pela TO Brasil. Além disso é criador e desenvolvedor dos projetos Checando.com.br e tostring ( / 12

2 Aplicações JSF possuem escalabilidade ameaçada quando utilizado sem o conhecimento básico da especificação do framework ou da implementação escolhida. Muitas vezes não sabemos como proceder diante de um cenário com recursos limitados e a performance da aplicação acaba sendo prejudicada. Este artigo irá mostrar como planejar e refatorar sistemas em JSF de acordo com a disponibilidade de recursos em ambientes de produção. que motiva a escolha do JSF como arquitetura de O referência para uma aplicação Web baseada em Java? Talvez seja a facilidade de desenvolver interfaces gráficas complexas; talvez seja sua capacidade de manter as camadas de modelo, controle e visualização bem separadas e injetáveis por containers, ou até mesmo sua característica orientada a eventos que permite o desenvolvimento de aplicações tão ricas quanto uma aplicação desktop. Mas o que torna o JSF tão robusto pode também o fazer pouco escalável. Segundo Eelco Klaver, na apresentação citada como referência para este artigo, enquanto aplicações web tradicionais servem a centenas de usuários, aplicações JSF podem não suportar 50 usuários. Nesse cenário, os maiores gargalos são o tamanho da sessão, o consumo de CPU e o uso de banda. Mas por que a utilização do JSF é tão custosa? Cada requisição feita a uma aplicação JSF faz com que o container instancie um objeto de contexto responsável por executar o fluxo de fases do framework. Esse objeto não é thread-safe, isto é, ele atende apenas a uma requisição por vez. Dessa forma, cada requisição, por mais que seja um simples post via AJAX, resulta em um grande consumo de processamento e memória no ciclo de vida desse objeto. Detalhado o problema é possível então modelar uma estratégia de otimização que visará diminuir o tempo e o consumo de recursos entre cada requisição e resposta de uma aplicação JSF. Tal estratégia será granularizada nos tópicos seguintes. É importante ressaltar que as decisões de implementação variam de acordo com as peculiaridades de cada sistema. Dessa forma, as estratégias de otimização nem sempre suprem completamente tais peculiaridades. Por isso é muito importante analisar o perfil da aplicação antes de decidir como arquitetá-la ou refatorá-la. Nos primeiros tópicos serão abordados o consumo de memória e processamento pelo JSF para manter o estado dos componentes visuais presentes na view. Você verá como é possível gerenciar a ordem de prioridade de cada um desses recursos em detrimento do outro levando-se em conta os recursos disponíveis no servidor de aplicações utilizado. Você verá também como fazer uso dos conversores e validadores presentes no JSF de uma forma menos impactante e, principalmente, o quanto é importante dizer ao JSF quando utilizá-los. Por fim serão apresentados parâmetros de configuração que podem contribuir em melhorias de desempenho. Espera-se, entretanto, que o leitor tenha um conhecimento mínimo da especificação do Java Server Faces ou que pelo menos esteja familiarizado com seu uso. De qualquer forma, no início de cada tópico será dada uma breve introdução a respeito do que motivou tal otimização. Saving State Method O saving state method (método de armazenamento de estado) foi escolhido para iniciar o processo de otimização de uma aplicação JSF. E não foi por acaso. Ele diz respeito a uma decisão arquitetural que refletirá impactando a aplicação por completo 13 \

3 pois refere-se a um recurso muito poderoso do JSF: a manutenção do estado de seus componentes que pode ser configurada através do parâmetro javax.faces.state_saving_method. Sabe-se que as requisições web são stateless (sem persistência de estado) ao contrário do JSF, que mantém o estado dos componentes entre as requisições. Para controlar os estados de todos os componentes presentes na view, uma árvore de estados gerenciada pelo framework deve ser armazenada em algum local de forma a ser carregada e atualizada. O JSF permite que o desenvolvedor decida onde mantê-la. Para dar suporte a essa escolha o JSF disponibiliza o parâmetro de contexto javax.faces.state_sa- ViNG METHOD que deve ser inserido no arquivo web. xml da aplicação. Os valores aceitos para este parâmetro são: server - valor padrão quando o parâmetro for omitido - e client, como exemplifica a Listagem 1. O que distingue as duas opções pode parecer simples: o método server armazena os estados no servidor enquanto o client os armazena no lado cliente da aplicação. As implicações em termos de consumo, entretanto, diferem muito. O método client faz com que o estado da árvore de componentes seja armazenado no cliente. Em outras palavras, o código da view que será gerado (HTML, por exemplo) passa a conter uma String enorme, codificada em Base64 e que representa o estado dos componentes que fazem parte dela. Com essa String armazenada no cliente, o servidor passa a manter menos informações na sessão do usuário, resultando em economia de memória em detrimento de CPU, já que a cada requisição o estado deve ser decodificado, remontado e codificado novamente para a resposta. Além disso, uma quantidade maior de informações trafega. isto é, abre-se mão de processamento e banda em prol de um menor consumo de memória. A figura 1 demonstra como essa grande String codificada é armazenada no código-fonte HTML de um cadastro simples de usuários com pouco menos de 10 campos. Neste exemplo, o valor do campo hidden cujo id é javax.faces.viewstate é enviado a cada requisição e decodificado para que o JSF possa restaurar o estado do formulário. Listagem 1. Exemplo de configuração do parâmetro. <context-param> <param-name> javax.faces.state_saving_method </param-name> <param-value>client</param-value> </context-param> A performance apresentada por uma aplicação em um determinado ambiente está muito relacionada à quantidade de recursos de processamento, memória e banda do hospedeiro. É necessário ter conhecimento da disponibilidade destes recursos, pois esta informação será relevante na escolha do método. Uma escolha malfeita resultará em desperdício de recursos e, consequentemente, na perda de performance. O processo de otimização se resume em colocar na balança o quanto de recurso se tem disponível e o consumo resultante de acordo com cada opção. O método de armazenamento server faz com que o JSF armazene o estado dos componentes no servidor, resultando em um maior consumo de memória nesse lado e um consumo menor no lado do cliente. Com esta opção, o consumo de banda é menor, já que não há necessidade de armazenar informações a respeito do estado dos componentes já que menos informações trafegam. Para aplicações que fazem uso intenso de ajax, onde o número de requisições é alto, percebe-se uma melhoria no tempo de resposta quando se tem limitações de tráfego por parte do servidor ou quando a conexão do cliente não é das melhores. Figura 1. Armazenamento do estado dos componentes no HTML gerado. Por outro lado, é muito importante analisar o que cada decisão implica em termos de usabilidade e se as consequências de uma opção não interferem no produto final. Por exemplo, a opção server prejudica a funcionalidade de navegação entre históricos do browser, enquanto o método client fornece pouca segurança, já que expõe o estado dos componentes no código gerado ao cliente. Além dessas, existem outras implicações que devem ser levadas em conta que não serão listadas aqui de forma a focar apenas na otimização de aplicações em JSF. Não existe, assim, uma opção melhor que a outra. Existe uma opção que melhor se adapta às necessidades de cada aplicação e essa análise deve ser feita por alguém que, além de conhecê-la por completo também conhece quem a hospedará. Por esse motivo, se a escolha acabar sendo a opção que apresenta a pior performance, deve-se pensar em aumentar a quantidade de recursos disponíveis no hospedeiro. / 14

4 Escopo dos managed beans Todo managed bean gerenciável pelo JSF deve possuir um escopo, ou pelo menos a indicação explícita de que não pertence a escopo algum. Este escopo determina o local onde o bean ficará armazenado e, principalmente, o tempo de vida de suas instâncias. Os escopos disponíveis pelo JSF são Request, View, Session, Application, Custom e None. A indicação do escopo ao bean pode ser feita tanto no faces-config.xml quanto por annotations na própria classe. De uma forma bem resumida - apontando apenas o que interessa para analisá-los em termos de desempenho e consumo de recursos - managed beans com escopo de Request são instanciados pelo JSF no início de uma requisição e morrem após o response ser enviado. Managed beans cujo escopo é o de View nascem quando o JSF cria uma nova view, permanecem vivos enquanto requisições post são realizadas para a mesma página e morrem quando outra view é criada a partir do modelo de navegação do JSF (vide JSF Navigation Model). O escopo de um managed bean, quando omitido, é o Request. É comum não informar o escopo de um bean, muitas vezes por desconhecimento, e isso faz com que todos os managed beans da aplicação sejam criados e eliminados durante uma única requisição. isso resulta em uma carga de processamento muito grande, pois beans que realizam instanciações aninhadas ou que acessam a base de dados em sua inicialização para carregar os dependentes são inicializados a todo o tempo, inclusive em requisições para atualizações parciais, como as em ajax. Outro equívoco cometido com frequência é a utilização do escopo View em todos os managed beans por manter os valores dos objetos de modelo vivos entre requisições para a mesma página ou por que eles são mais compatíveis com componentes de terceiros que envolvem paginação e estados mais complexos. Um bean cujo escopo é View pode ficar alocado na memória do servidor durante um longo período de tempo. Para grandes beans e muitos usuários o consumo de memória se torna absurdo. Managed beans cujo escopo é Session permanecem vivos enquanto a sessão do usuário estiver ativa e o escopo Application mantém os beans vivos enquanto a aplicação estiver viva. Por fim, o escopo Custom será detalhado no final deste tópico e o None significa que o bean tem seu escopo determinado pelo bean que o mantém. Selecionar bem o escopo dos managed beans de uma aplicação é crucial para seu desempenho. Quanto menos deles houver associados à sessão ou à aplicação melhor. Escolha com cuidado o escopo de seus beans Beans cujo escopo é Application, Session ou View podem ocupar significantemente grande parte da memória em ambientes acessados por grandes quantidades de usuários e por isso devem ser evitados. É recomendável guardar nestes beans somente os componentes ou as informações que realmente necessitam ser persistidas entre as requisições. Há quem critique o uso de mais de um bean por view, mas, em determinados casos, isso pode ser necessário, já que um dos beans pode ser usado apenas para os objetos que realmente precisam sobreviver a estas requisições e o outro para objetos que podem ser descartados após a resposta. Ao mesmo tempo é recomendável evitar que beans responsáveis por consultas ao banco tenham escopo de request quando a página possuir renderizações parciais. Requisições realizadas dentro desta página com o objetivo de renderizar porções da mesma, como, por exemplo, as feitas em ajax para popular combos ou preencher componentes, resultarão em uma nova instanciação dos beans e, consequentemente, uma nova consulta ao banco. Dessa forma, é necessário analisar, bean por bean, quais deles merecem ou não ter um escopo mais custoso, em termos de memória e processamento. Utilize o CustomScope com mais frequência Este subtópico foi baseado no livro Java Server Faces The Complete Reference, escrito por um dos desenvolvedores da especificação do JSF, Ed Burns. O escopo Request é muito utilizado em aplicações JSF por ser uma ponte de passagem de dados entre requisições e, principalmente, por ter um tempo de vida curto. Este escopo, entretanto, faz parte da especificação de Servlets e, por esse motivo, atende a seus contratos. Entre os termos deste contrato incluem-se as notificações de listeners que podem ou não ser registrados. independentemente de nenhum, um, ou até mais de um listener é possível perceber impactos na performance de cada requisição. Para dar base à otimização desses beans, voltamos à definição de escopos, onde apresentamos o CustomScope. Ele permite ao desenvolvedor definir, criar ou utilizar escopos personalizados ou fornecidos à parte. Tal escopo recebe como parâmetro uma EL que deve apontar para um objeto que implementa java.util.map. Dessa forma o tempo de vida do bean passará a depender do tempo de vida do mapa utilizado. Utilizar o CustomScoped com um escopo criado e gerenciado por você é uma tarefa trabalhosa e pode trazer ganhos ao desempenho se bem-feito, mas não 15 \

5 é a criação de escopo que será sugerida aqui, e sim a utilização de um escopo introduzido na versão 2.0 do JSF cujo tempo de vida é sutilmente reduzido e não tem seu desempenho impactado pelos motivos citados anteriormente. Este novo escopo é chamado de FacesContext attributes scope e tem o tempo de vida definido pelo tempo de vida da invocação do FacesServlet. Seu acesso é realizado através de uma EL como no exemplo abaixo: #{facescontext.attributes Recomenda-se, a partir daí, usar o CustomScoped apontando para este mapa de atributos do FacesContext como alternativa ao RequestScoped de forma a ter ganhos de desempenho para beans cujo objetivo foi citado no início = #{facescontext.attributes ) public class UmBeanQualquer { Otimizando as validações e conversões Converters e validators - conversores e validadores, respectivamente - são dois recursos muito poderosos do JSF e estão presentes nas primeiras fases do ciclo de vida de uma requisição. É através deles que os valores preenchidos nos clientes são convertidos de String para os tipos do modelo da aplicação e validados de acordo com as regras de negócio de cada um. Mais detalhes a respeito do ciclo de vida serão vistos no próximo tópico. É recomendável sempre utilizar os conversores e validadores presentes na implementação do JSF utilizada, pois eles atendem a maioria dos casos e já são otimizados. De qualquer forma, o JSF fornece interfaces que permitem aos desenvolvedores criar e reutilizar implementações próprias destes recursos. Quando componentes personalizados por demandas peculiares de uma aplicação são construídos é quase certo que eles acompanharão um conversor e, pelo menos, um validador, também personalizados. A forma mais comum de se implementar um conversor é criando uma classe que implementa a interface javax.faces.convert.converter e configurando o JSF através de entradas no faces-config.xml ou através de anotações para permitir ao container injetar instâncias destes recursos na aplicação. Estes dois passos já bastam, mas as boas práticas na criação de conversores e validadores serão omitidas por não fazer parte do escopo deste artigo. As Listagens 2 e 3 contêm um conversor e como eles são utilizados, respectivamente. Para isso será adotado um exemplo de cadastro de veículos. Listagem 2. Criação do conversor. package cadastroplacas; import javax.faces.bean.applicationscoped; import javax.faces.bean.managedbean; import javax.faces.component.uicomponent; import javax.faces.context.facescontext; import javax.faces.convert.converter; import = cadastroplacas. ConversorPlaca ) public class ConversorPlaca implements Converter { public ConversorPlaca() { System.out.println( Instância de ConversorPlaca criada. public Object getasobject(facescontext context, UIComponent component, String value) { return new Placa(value.substring(0, 3), public String getasstring(facescontext context, UIComponent component, Object value) { Placa placa = (Placa) value; return placa.getprefixo().touppercase() placa.getnumero(); Listagem 3. Utilização do conversor de placas. <h:body> <h:form> <h:panelgrid columns= 2 > <h:outputlabel value= Placa: /> <h:inputtext value= #{cadastroplacabean.placa converter= cadastroplacas.conversorplaca /> <h:outputtext value= /> <h:commandbutton value= Cadastrar /> </h:panelgrid> </h:form> </h:body> Foram omitidos também os outros campos que possivelmente seriam relevantes a um cadastro de veículos, assim como o bean de cadastro de placas, pois não queremos entrar no mérito da funcionalidade, mas sim no consumo de recursos dos conversores. / 16

6 Para se ter uma ideia dos efeitos causados na aplicação, colocamos uma chamada à saída padrão do Java no construtor de ConversorPlaca, pois iremos focar este tópico na instanciação desnecessária de conversores para casos onde eles são consumidos da maneira convencional. No momento em que a tela é carregada, assim como em cada evento disparado pelo botão Cadastrar, uma nova instância de ConversorPlaca é criada. isso acontece, pois no início o JSF busca o objeto do modelo para convertê-lo e exibi-lo no campo. Já durante o evento do botão, o valor do campo preenchido é convertido para ser validado e atualizado no modelo. É possível perceber esse comportamento pela escrita da frase instância de ConversorPlaca criada inúmeras vezes na saída padrão do Java enquanto se utiliza o cadastro - estamos utilizando a saída padrão apenas para simplificar o código, mas recomenda-se apontar sempre para o log da aplicação em questão. Sabe-se que a instanciação desnecessária e descontrolada de objetos é um fator que compromete o desempenho. No exemplo acima estamos falando apenas de um conversor e duas requisições, mas em ambientes reais pode haver uma grande quantidade deles em conjunto com um número maior de usuários e eventos. Cada instância criada deste conversor será descartada ao final da requisição e o coletor de lixo provavelmente cuidará dela, por isso não se preocupe, você não vai ter problemas de estouro de memória por culpa dos conversores de sua aplicação. Entretanto por que não reduzir essa quantidade de instanciações já que é possível? Você poupará a JVM de um trabalho desnecessário com apenas algumas modificações. Os beans cujo escopo é Application já foram descritos em tópicos anteriores e este escopo será utilizado para manter apenas uma instância do conversor durante o tempo de vida da aplicação. Para isso, o conversor será tratado a partir de agora como um managed bean e o JSF cuidará de sua instanciação antes de começar a atender às requisições. A única alteração necessária na classe do conversor está presente na Listagem 4. Listagem 4. Alterações no = cadastroplacas. ConversorPlaca = public class ConversorPlaca implements Converter { A partir de agora, sempre que a aplicação iniciar, uma instância de ConversorPlaca será criada e mantida até que a aplicação não esteja mais em execução. A Listagem 5 mostra como o componente deve consumir essa única instância do conversor. Listagem 5. Como a tela deverá passar a consumir o componente. <h:outputlabel value= Placa: /> <h:inputtext value= #{cadastroplacabean.placa converter= #{conversorplaca /> Com essa simples alteração economiza-se memória, já que menos objetos do conversor serão instanciados para cada requisição, além de evitar processamento desnecessário. Uso de immediate nos campos e eventos Como dito no início do artigo, uma de nossas metas será reduzir o tempo gasto em um request. O JSF processa cada requisição em um fluxo de seis fases. Explicar detalhadamente cada fase não faz parte do escopo do artigo, mas um entendimento superficial é necessário para otimizar as requisições que se aplicam a este tópico. Restore View é a primeira das seis fases. É aqui que o JSF obtém ou cria a view em que o usuário se encontra. Esta view é mantida através de componentes em estrutura de árvore. Logo após executada, se a requisição se trata de um post, as próximas fases serão executadas, caso contrário ele irá diretamente para a última delas. Considerando então uma requisição post, a segunda fase, Apply Request Values, recupera os valores preenchidos no formulário submetido em formato de String e que serão convertidos nos tipos corretos de acordo com a associação dos campos com os objetos em seu managed bean. Em seguida, a fase Process Validation realiza as validações dos campos e se todos os campos forem válidos, Update Model Values aplica os valores no modelo. Por fim invoke Application executa os eventos associados à requisição e Render Response atualiza a view a ser retornada para o usuário. Cada campo presente em um formulário passa por todas estas fases e não é possível ignorá-las. É possível, entretanto, aperfeiçoar parte do processo. Existem muitos casos onde um formulário possui procedimentos internos que o modifica à medida que o usuário o preenche. Para facilitar o entendimento imagine um exemplo de cadastro de usuários onde, na seção de endereço, há uma caixa de seleção de cidade cujo preenchimento depende do que foi selecionado previamente na caixa de seleção de estado. Este campo permanece vazio e é preenchido no momento em que um estado é selecionado. O evento que pre- 17 \

7 enche a caixa de cidades pode ser executado por uma requisição em ajax ou não, mas o que importa é que ela será executada seguindo o fluxo do JSF. Considere agora que esse formulário contém não somente os campos de UF e cidade, mas todos os campos relevantes de um cadastro de usuário completo como nome, data de nascimento etc. Qualquer evento no campo UF enviará todos os valores preenchidos nos campos e as fases do JSF se aplicarão a todos eles. Nestes casos há um desperdício de recursos, pois o formulário inteiro está sendo processado pelo fluxo do JSF quando o que importa ali é obter a UF selecionada e carregar uma lista de cidades para preencher o campo. A Listagem 6 ilustra esse exemplo. Listagem 6. Exemplo de uma tela de cadastro de usuários. <h:panelgrid columns= 2 > <h:outputlabel value= Nome: /> <h:inputtext value= #{flash.nome /> <h:outputlabel value= Data de nascimento: /> <h:inputtext value= #{flash.datanascimento /> <h:outputlabel value= Logradouro: /> <h:inputtext value= #{flash.logradouro /> <h:outputlabel value= Número: /> <h:inputtext value= #{flash.numero /> <h:outputlabel value= Complemento: /> <h:inputtext value= #{flash.complemento /> <h:outputlabel value= UF: /> <h:selectonemenu value= #{flash.estado onchange= this.form.submit() valuechangelistener= #{cidades.atualizarlistacidades > <f:selectitems itemlabel= #{estado itemvalue= #{estado value= #{cidades.estados var= estado /> </h:selectonemenu> <h:outputlabel value= Cidade: /> <h:selectonemenu value= #{flash.cidade > <f:selectitems itemlabel= #{cidade itemvalue= #{cidade value= #{cidades.cidades var= cidade /> </h:selectonemenu> <h:outputtext value= /> <h:commandbutton action= sucesso value= Cadastrar /> </h:panelgrid> Repare que foram omitidos muitos outros campos relevantes ao cadastro de usuários de forma a facilitar o entendimento das alterações que serão realizadas. Outro detalhe importante é a ausência de um managed bean para o usuário. Foi utilizado um tipo especial de memória chamada Flash em JSF que serve apenas como uma ponte para passagem de valores através de uma requisição. Um bean de cidades foi criado com a simples tarefa de retornar uma lista de acordo com a UF selecionada, mas ele será omitido, pois depende muito de como as camadas de negócio são implementadas em cada aplicação. O exemplo da Listagem 6 é uma prática ruim em JSF, pois, como dito anteriormente, há o desperdício de recursos na conversão e validação de todos os campos no evento disparado pela lista de estados. Dessa forma, para aperfeiçoar esta requisição precisaremos dizer ao JSF que eventos gerados a partir da lista de estados se tratam apenas de atualizações parciais em nossa view e não representam a ação de cadastro. É possível alcançar esse comportamento a partir do atributo immediate. Este atributo garante ao componente que sua conversão e validação, assim como os eventos dos botões, se darão na primeira fase Apply Request Values. Com isso, percorre-se um atalho no fluxo de fases somente com as informações que interessam para aquela requisição. E este atalho reduz o tempo do ciclo de vida da requisição, dando lugar à próxima requisição mais rapidamente (lembre-se que cada requisição é executada unitariamente pelo JSF, pois o Faces Context não é thread-safe). Voltando ao exemplo da Listagem 6, iremos adicionar o atributo immediate= true no campo que irá disparar o evento e adicionar um novo botão, também com este atributo, que irá disparar o request pegando o atalho discutido anteriormente. Não iremos adicionar o atributo no botão Cadastrar, pois não queremos que o formulário inteiro tenha este comportamento. Vamos otimizar somente o que dá pra otimizar aqui. Por fim alteraremos o evento onchange para chamar o novo botão criado. A Listagem 7 mostra como ficará o código. Listagem 7 Aplicação do atributo immediate= true no cadastro <h:panelgrid columns= 2 > <h:outputlabel value= Nome: /> <h:inputtext required= true value= #{flash.nome /> <h:outputlabel value= Data de nascimento: /> <h:inputtext value= #{flash.datanascimento /> <h:outputlabel value= Logradouro: /> <h:inputtext value= #{flash.logradouro /> <h:outputlabel value= Número: /> <h:inputtext value= #{flash.numero /> <h:outputlabel value= Complemento: /> <h:inputtext value= #{flash.complemento /> / 18

8 <h:outputlabel value= UF: /> <h:selectonemenu immediate= true value= #{flash.estado onchange= document. getelementbyid( form:atualizarcidades ).click() valuechangelistener= #{cidades.atualizarlistacidades > <f:selectitems itemlabel= #{estado itemvalue= #{estado value= #{cidades.estados var= estado /> </h:selectonemenu> <h:outputlabel value= Cidade: /> <h:selectonemenu value= #{flash.cidade > <f:selectitems itemlabel= #{cidade itemvalue= #{cidade value= #{cidades.cidades var= cidade /> </h:selectonemenu> <h:outputtext value= /> <h:commandbutton action= sucesso value= Cadastrar /> </h:panelgrid> <h:commandbutton style= visibility: hidden id= atualizarcidades value= atualizarcidades immediate= true /> Para grandes formulários é possível notar uma diferença significativa - em questão de milissegundos - nos eventos disparados em ajax que passam a usar o immediate como forma de não submetê-los por completo ao fluxo de fases do JSF. É necessário lembrar que este recurso não se restringe a requisições em ajax, mas também para requisições convencionais que envolvam o refresh da página por completo. Recomenda-se que, para aplicações em processo de otimização, todos os formulários sejam revistos e, sempre que houver atualizações parciais em sua estrutura, o atributo immediate= true seja utilizado nos campos e em botões com a finalidade única de realizar a requisição do evento. As requisições terminarão mais rapidamente e o JSF irá suportar uma quantidade maior delas em um dado espaço de tempo. Configurações adicionais A especificação do JSF traz uma série de parâmetros de inicialização que permitem aos desenvolvedores configurá-la. Quanto maior for o conhecimento desses parâmetros e do perfil da aplicação maior serão a qualidade e o desempenho do produto gerado. Além desses parâmetros há também os parâmetros específicos de cada implementação do JSF. Cada implementação pode ainda fornecer valores padrões para estes parâmetros. Descrever cada um dos parâmetros tornaria este artigo enorme, por isso serão fornecidos dois exemplos de como é possível obter melhores resultados em uma aplicação a partir de pré-configurações. Estas configurações deverão ser aplicadas no web.xml de sua aplicação. Project Stage O JSF 2.0 introduziu um parâmetro responsável por manter referência à fase atual da aplicação representado pelo enum javax.faces.application. ProjectStage. Os valores de fase permitidos são Development, UnitTest, SystemTest e Production. Para não fugir ao escopo deste artigo não serão detalhados os comportamentos da aplicação de acordo com cada fase disponível. Basta saber que o JSF consome mais recursos quando a aplicação está em fase de desenvolvimento, pois ele trabalhará focado em fornecer aos desenvolvedores facilidades como mensagens de erro mais detalhadas e possibilidades de diagnóstico da aplicação maximizadas, tudo isso a custo de processamento e memória. Um detalhe que passa despercebido é que algumas ides adicionam, por conta própria, o valor Development para este parâmetro no momento da criação de novos projetos. Muitas vezes este valor é mantido nos ambientes de produção após a publicação por descuido ou por desconhecimento do parâmetro, o que é prejudicial ao desempenho. Veja o exemplo da Listagem 8 que contém um trecho do web.xml gerado automaticamente pelo NetBeans quando da criação de uma nova aplicação web: Listagem 8. Exemplo de configuração automática do NetBeans. <context-param> <param-name>javax.faces.project_stage </param-name> <param-value>development</param-value> </context-param> De acordo com a especificação do JSF, o valor default de PROJECT_STAGE é Production, por isso remova esta tag de seu web.xml antes de cada publicação. Mantenha este valor somente em seu ambiente local de desenvolvimento. Facelets Refresh Period Durante a fase de desenvolvimento de uma aplicação, por questões de produtividade, é desejável que as alterações nos arquivos físicos das páginas sejam compiladas em tempo de execução para que elas fiquem disponíveis no browser sem que haja a necessidade de um restart no servidor. E para que isso seja possível o Facelets verifica se há alterações nestas páginas periodicamente. Essa varredura consome re- 19 \

9 Conheça mais sua implementação Fabricantes de implementações da especificação JSF geralmente fornecem parâmetros de inicialização adicionais que permitem ajustar ainda mais sua aplicação. Por isso não se limite a conhecer somente a especificação do JSF, mas também a documentação da implementação utilizada. Até a data desta publicação, o The Apache Software Foundation fornecia em seu site oficial ( myfaces.apache.org) uma seção chamada Web Context Parameters contendo a lista de parâmetros presentes no JSF e os valores padrões adotados pelo MyFaces - uma das implementações do JSF disponíveis - além de seus parâmetros específicos. Há uma categorização dos parâmetros e uma das categorias é performance. Dê uma atenção especial a ela. Espera-se que cada fabricante forneça essas informações, por isso é recomendável que você estude e trace um plano de configuração de acordo com o perfil de sua aplicação. cursos e muitos não sabem, mas é possível aumentar seu período de execução ou até mesmo desativá-la. A utilidade dessa recompilação automática se restringe ao ambiente de desenvolvimento. Afinal de contas, a frequência com que uma aplicação é publicada em ambientes de produção não justifica manter o recurso ativado. Além disso, em muitos casos, publicações acompanham arquivos.java e sua atualização requer o restart do servidor. Quando omitido, o período de atualização padrão do Facelets depende da implementação do JSF utilizada JSF é uma especificação e não uma implementação - e recomenda-se desligá-lo antes de cada publicação. Para desabilitar este recurso basta armazenar o valor -1 em seu parâmetro de inicialização correspondente, como mostra a Listagem 9, que é um trecho do web. xml de uma aplicação web. Listagem 9. Desativação do recurso de atualização do Facelets. <context-param> <param-name> javax.faces.facelets_refresh_period </param-name> <param-value>-1</param-value> </context-param> Considerações Finais Não existe uma receita de bolo a ser seguida para otimizar suas aplicações. Como você pode ter percebido fizemos uso apenas da especificação do JSF de forma a selecionar as decisões arquiteturais de acordo com os recursos que temos disponíveis para hospedar uma aplicação. A árdua tarefa de otimizar aplicações complexas requer paciência, mas também requer que você saiba o que está fazendo. Parte-se do princípio que ela já atende a seus clientes, mas pode atender melhor. Um bom trabalho de otimização exige que você conheça bem sua aplicação e o framework utilizado. Por isso recomendo que leiam a especificação do JSF e pelo menos um livro de referência completo. Muita coisa já poderá ser óbvia pra você, mas sempre é possível extrair detalhes pequenos que refletem melhorias no produto final. Além disso, recomendo utilizar ferramentas de perfil para que você possa observar as melhorias consequentes das modificações e se o caminho seguido está correto. /referências > Java Server Faces The Complete Reference, Ed Burns, Chris Schalk; > Tuning JSF Applications - Session size matters: sessions/00017/; > JSF Best Practices: > JSF 2.0 Reminder: Project Stage: blog/driscoll/archive/2009/09/28/jsf-20-reminder-projectstage / 20

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Tiago Peres Souza 1, Jaime Willian Dias 1,2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil tiagop_ti@hotmail.com 2 Universidade

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

Parte I. Demoiselle Mail

Parte I. Demoiselle Mail Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework

Leia mais

02 - Usando o SiteMaster - Informações importantes

02 - Usando o SiteMaster - Informações importantes 01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,

Leia mais

Manual do Publicador. Wordpress FATEA Sistema de Gerenciamento de Conteúdo Web

Manual do Publicador. Wordpress FATEA Sistema de Gerenciamento de Conteúdo Web Manual do Publicador Wordpress FATEA Sistema de Gerenciamento de Conteúdo Web Sumário Painel de Administração... 3 1 - Inserção de post... 5 2 Publicação de post com notícia na área headline (galeria de

Leia mais

Procedimentos para Reinstalação do Sisloc

Procedimentos para Reinstalação do Sisloc Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...

Leia mais

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO

Leia mais

Guia Site Empresarial

Guia Site Empresarial Guia Site Empresarial Índice 1 - Fazer Fatura... 2 1.1 - Fazer uma nova fatura por valores de crédito... 2 1.2 - Fazer fatura alterando limites dos cartões... 6 1.3 - Fazer fatura repetindo última solicitação

Leia mais

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO AGOSTO DE 2013 SUMÁRIO STI/UFF - Sistema de Gerenciamento de Projetos do PDI SUMÁRIO... 2 1 Introdução... 3 1.1 O que é e qual a finalidade

Leia mais

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho vi http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Administração de Redes de Computadores Resumo de Serviços em Rede Linux Controlador de Domínio Servidor DNS

Leia mais

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA FERRAMENTAS DE COLABORAÇÃO CORPORATIVA Manual de Utilização Google Grupos Sumário (Clique sobre a opção desejada para ir direto à página correspondente) Utilização do Google Grupos Introdução... 3 Página

Leia mais

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade do Sistema Índice Página 1. Como acessar o sistema 1.1 Requisitos mínimos e compatibilidade 03 2. Como configurar o Sistema 2.1 Painel de Controle 2.2 Informando o nome da Comissária 2.3 Escolhendo a Cor

Leia mais

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET I Sumário 1. Objetivo do Documento... 1 2. Início... 1 3. Cadastro de Pessoa Física... 3 3.1. Preenchimentos Obrigatórios.... 4 3.2. Acesso aos Campos

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Pag: 1/20. SGI Manual. Controle de Padrões

Pag: 1/20. SGI Manual. Controle de Padrões Pag: 1/20 SGI Manual Controle de Padrões Pag: 2/20 Sumário 1 Introdução...3 2 Cadastros Básicos...5 2.1 Grandezas...5 2.2 Instrumentos (Classificação de Padrões)...6 3 Padrões...9 3.1 Padrão Interno...9

Leia mais

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. Manual de Instruções ECO Editor de Conteúdo Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. O ECO é um sistema amigável e intui?vo, mas abaixo você pode?rar eventuais dúvidas e aproveitar

Leia mais

Manual de Utilização

Manual de Utilização Manual de Utilização Versão 1.0 18/01/2013 Sempre consulte por atualizações deste manual em nossa página. O Cotação Web está em constante desenvolvimento, podendo ter novas funcionalidades adicionadas

Leia mais

INTRODUÇÃO À TECNOLOGIA SERVLETS

INTRODUÇÃO À TECNOLOGIA SERVLETS PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO À TECNOLOGIA SERVLETS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o conceito aplicações orientada a serviços via web Apresentar o papel dos contentores

Leia mais

Software. Gerenciamento de Manutenção

Software. Gerenciamento de Manutenção Software Gerenciamento de Manutenção Tutorial Passo a Passo Do Cadastro de Serviço à Consulta de Serviços Realizados Tutorial Recomendações AsinformaçõesutilizadasnestetutorialsãoasmesmasquevocêtemnoseuBancodeDados

Leia mais

Manual do Visualizador NF e KEY BEST

Manual do Visualizador NF e KEY BEST Manual do Visualizador NF e KEY BEST Versão 1.0 Maio/2011 INDICE SOBRE O VISUALIZADOR...................................................... 02 RISCOS POSSÍVEIS PARA O EMITENTE DA NOTA FISCAL ELETRÔNICA.................

Leia mais

2013 GVDASA Sistemas Cheques 1

2013 GVDASA Sistemas Cheques 1 2013 GVDASA Sistemas Cheques 1 2013 GVDASA Sistemas Cheques 2 AVISO O conteúdo deste documento é de propriedade intelectual exclusiva da GVDASA Sistemas e está sujeito a alterações sem aviso prévio. Nenhuma

Leia mais

Ajuda ao SciEn-Produção 1. 1. O Artigo Científico da Pesquisa Experimental

Ajuda ao SciEn-Produção 1. 1. O Artigo Científico da Pesquisa Experimental Ajuda ao SciEn-Produção 1 Este texto de ajuda contém três partes: a parte 1 indica em linhas gerais o que deve ser esclarecido em cada uma das seções da estrutura de um artigo cientifico relatando uma

Leia mais

MANUAL DE UTILIZAÇÃO DO SISTEMA GLPI

MANUAL DE UTILIZAÇÃO DO SISTEMA GLPI MANUAL DE UTILIZAÇÃO DO SISTEMA GLPI PERFIL TÉCNICO Versão 2.0 DEPARTAMENTO DE INFORMÁTICA E TELECOMUNICAÇÕES PREFEITURA DE GUARULHOS SP 1 Objetivo: Esse manual tem como objetivo principal instruir os

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

Tópicos de Ambiente Web. Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres

Tópicos de Ambiente Web. Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres Tópicos de Ambiente Web Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres Roteiro Motivação Desenvolvimento de um site Etapas no desenvolvimento de software (software:site) Analise

Leia mais

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE Renan Leme Nazário, Ricardo Rufino Universidade Paranaense (Unipar) Paranavaí PR - Brasil renazariorln@gmail.com, ricardo@unipar.br Resumo. Este artigo

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

Projeto SIGA-EPT. Manual do usuário Módulo Requisição de Almoxarifado SISTEMA INTEGRADO DE GESTÃO ACADÊMICA

Projeto SIGA-EPT. Manual do usuário Módulo Requisição de Almoxarifado SISTEMA INTEGRADO DE GESTÃO ACADÊMICA Projeto SIGA-EPT Manual do usuário Módulo Requisição de Almoxarifado SISTEMA INTEGRADO DE GESTÃO ACADÊMICA Versão setembro/2010 Requisição de Almoxarifado Introdução Requisição é uma solicitação feita

Leia mais

MÓDULO Programação para Web 2

MÓDULO Programação para Web 2 MÓDULO Programação para Web 2 USANDO O JSF Continuação Interdependência e Injeção Instâncias de Managed Beans podem conversar entre si para dividir o processamento das requisições dos usuários de acordo

Leia mais

Scriptlets e Formulários

Scriptlets e Formulários 2 Scriptlets e Formulários Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Permitir ao aluno aprender a criar um novo projeto Java para web no Netbeans IDE,

Leia mais

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma: 1 Introdução A utilização de frameworks como base para a construção de aplicativos tem sido adotada pelos desenvolvedores com três objetivos básicos. Primeiramente para adotar um padrão de projeto que

Leia mais

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet. 1. Descrição Geral Este manual descreve as operações disponíveis no módulo VTWEB Client, cuja finalidade é gerenciar cadastros de funcionários, realização de pedidos e controle financeiro dos pedidos.

Leia mais

Manual do sistema SMARsa Web

Manual do sistema SMARsa Web Manual do sistema SMARsa Web Módulo Gestão de atividades RS/OS Requisição de serviço/ordem de serviço 1 Sumário INTRODUÇÃO...3 OBJETIVO...3 Bem-vindo ao sistema SMARsa WEB: Módulo gestão de atividades...4

Leia mais

CONSTRUÇÃO DE BLOG COM O BLOGGER

CONSTRUÇÃO DE BLOG COM O BLOGGER CONSTRUÇÃO DE BLOG COM O BLOGGER Blog é uma abreviação de weblog, qualquer registro frequênte de informações pode ser considerado um blog (últimas notícias de um jornal online por exemplo). A maioria das

Leia mais

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva 1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade

Leia mais

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

AJAX no GASweb. Mas e afinal, para que usamos o AJAX? Nível - Avançado AJAX no GASweb Por: Pablo Hadler AJAX (Asynchronous Javascript and XML) foi criado com o princípio de ser uma maneira rápida e otimizada de podermos fazer requisições Web, sendo esta totalmente

Leia mais

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1 MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento Toledo PR Página 1 INDICE 1. O QUE É O SORE...3 2. COMO ACESSAR O SORE... 4 2.1. Obtendo um Usuário e Senha... 4 2.2. Acessando o SORE pelo

Leia mais

SISTEMA INTEGRADO DE GESTÃO ACADÊMICA

SISTEMA INTEGRADO DE GESTÃO ACADÊMICA MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO TRIÂNGULO MINEIRO SISTEMA INTEGRADO DE GESTÃO ACADÊMICA MÓDULO PROTOCOLO MANUAL DO USUÁRIO VERSÃO: SETEMBRO/2010 SUMÁRIO Introdução...

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

DarkStat para BrazilFW

DarkStat para BrazilFW DarkStat para BrazilFW ÍNDICE Índice Página 1 O que é o DarkStat Página 2 DarkStat e a inicialização do sistema Página 2 DarkStat e a finalização do sistema Página 2 Tela Principal do DarkStat Página 3

Leia mais

Gerenciamento de Contatos

Gerenciamento de Contatos Gerenciamento de Contatos O objetivo deste módulo é ajudar a gerenciar todos os contatos da empresa. Além dos dados mais importantes, o módulo permite cadastrar anotações e relacionar as tarefas e eventos

Leia mais

1.2) Na tela seguinte, o primeiro item a ser selecionado é o Unidade Acumuladora1.

1.2) Na tela seguinte, o primeiro item a ser selecionado é o Unidade Acumuladora1. MANUAL DA NOVA VERSÃO DE ARQUIVAMENTO DO CPROD Na nova versão de Arquivamento que está sendo implementada no CPROD, antes de realizarmos o Arquivamento do Processo ou Documento em si, temos que criar no

Leia mais

Manual do Google agenda. criação e compartilhamento de agendas

Manual do Google agenda. criação e compartilhamento de agendas Manual do Google agenda criação e compartilhamento de agendas 1 O que é o Google Agenda? Google Agenda é um serviço de agenda on line gratuito do Google, onde você pode anotar compromissos e tarefas, organizando

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

Leia mais

Trecho retirando do Manual do esocial Versão 1.1

Trecho retirando do Manual do esocial Versão 1.1 Trecho retirando do Manual do esocial Versão 1.1 A rotina de acesso direto ao XML do S-1000, o usuário pode encontrar na opção de cadastro de Empresas do SIP. Sempre que o usuário localizar a figura ao

Leia mais

Como Usar o DriverMax

Como Usar o DriverMax Como Usar o DriverMax Este programa é uma mão na roda para proteger os drivers dos componentes de um computador. Veja porquê. O DriverMax é uma ferramenta que faz cópias de segurança de todos os drivers

Leia mais

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados Tutorial Plone 4 Manutenção de Sites Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados Sumário Introdução 1 Como fazer a autenticação do usuário 1.1 Através do

Leia mais

Manual do Ambiente Moodle para Professores

Manual do Ambiente Moodle para Professores UNIVERSIDADE FEDERAL DA FRONTEIRA SUL Manual do Ambiente Moodle para Professores Tarefas Versão 1.0b Setembro/2011 Direitos Autorais: Essa apostila está licenciada sob uma Licença Creative Commons 3.0

Leia mais

Faculdade de Tecnologia SENAC Goiás. Disciplina: Gerenciamento de Rede de Computadores. Goiânia, 16 de novembro de 2014.

Faculdade de Tecnologia SENAC Goiás. Disciplina: Gerenciamento de Rede de Computadores. Goiânia, 16 de novembro de 2014. Faculdade de Tecnologia SENAC Goiás Disciplina: Gerenciamento de Rede de Computadores : Goiânia, 16 de novembro de 2014. Faculdade de Tecnologia SENAC Goiás Professor: Marissol Martins Alunos: Edy Laus,

Leia mais

Gerenciamento de Projetos

Gerenciamento de Projetos Gerenciamento de Projetos O objetivo do módulo de Gerenciamento de Projetos é ajudar a empresa a gerenciar com mais eficiência os seus projetos. Controle dos prazos, das tarefas, dos eventos, da quantidade

Leia mais

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC Módulo 5 No módulo anterior adaptamos nosso projeto para persistir as informações no banco de dados utilizando as facilidades da extensão demoiselle-jpa. Experimentamos o controle transacional do Framework

Leia mais

Orientação a Objetos

Orientação a Objetos Orientação a Objetos 1. Sobrecarga (Overloading) Os clientes dos bancos costumam consultar periodicamente informações relativas às suas contas. Geralmente, essas informações são obtidas através de extratos.

Leia mais

AULA 1 Iniciando o uso do TerraView

AULA 1 Iniciando o uso do TerraView 1.1 AULA 1 Iniciando o uso do TerraView Essa aula apresenta a interface principal do TerraView e sua utilização básica. Todos os arquivos de dados mencionados nesse documento são disponibilizados junto

Leia mais

QUALIDATA Soluções em Informática. Módulo CIEE com convênio empresas

QUALIDATA Soluções em Informática. Módulo CIEE com convênio empresas FM-0 1/21 ÍNDICE 1. MÓDULO DESKTOP(SISTEMA INSTALADO NO CIEE)... 2 Cadastro de Ofertas de Empregos:... 2 Cadastro de Eventos:... 3 Cadastro de Instituições do Curriculum:... 5 Cadastro de Cursos do Curriculum:...

Leia mais

Manual de configuração do sistema

Manual de configuração do sistema Manual de configuração do sistema (v.1.5.x Beta) Rua México, 119 Sala 2004 Centro Rio de Janeiro, RJ www.doctors-solution.com.br www.simdoctor.com.br contato@simdoctor.com.br Sumário 1. Fazendo seu primeiro

Leia mais

SERVICE DESK MANAGER SDM. Manual do Sistema - DPOI

SERVICE DESK MANAGER SDM. Manual do Sistema - DPOI SERVICE DESK MANAGER SDM Manual do Sistema - DPOI Conteúdo SERVICE DESK MANAGER SDM... 1 Manual do Sistema - DPOI... 1 INTRODUÇÃO... 4 ACESSO AO SISTEMA... 5 OPÇÕES DO SISTEMA... 6 SISTEMA... 7 Pesquisar

Leia mais

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO 10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE

Leia mais

Sistema de Recursos Humanos

Sistema de Recursos Humanos Sistema de Recursos Humanos Projeto 1 O objetivo desse sistema é gerenciar a admissão e a demissão de funcionários. Esse funcionário pode ou não ter dependentes. Esse funcionário está alocado em um departamento

Leia mais

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul JSF e PrimeFaces Professor: Ricardo Luis dos Santos IFSUL 2015 Agenda Introdução Desenvolvimento Web Java Server Faces Exercício 2 Introdução Ao longo dos anos diversas linguagens de programação foram

Leia mais

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO Antes de criarmos um novo Banco de Dados quero fazer um pequeno parênteses sobre segurança. Você deve ter notado que sempre

Leia mais

Especificação de Requisitos

Especificação de Requisitos Projeto/Versão: Versão 11.80 Melhoria Requisito/Módulo: 000552 / Conector Sub-Requisito/Função: Multas Tarefa/Chamado: 01.08.01 País: Brasil Data Especificação: 13/05/13 Rotinas Envolvidas Rotina Tipo

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

Notas de Aula 05: Aplicação de um caso de uso

Notas de Aula 05: Aplicação de um caso de uso Notas de Aula 05: Aplicação de um caso de uso Objetivos da aula: Aprender a aplicar a técnica de casos de uso em um pequeno problema real Identificar as variáveis relevantes a serem consideradas Modelar

Leia mais

Sistema de Controle de Solicitação de Desenvolvimento

Sistema de Controle de Solicitação de Desenvolvimento Sistema de Controle de Solicitação de Desenvolvimento Introdução O presente documento descreverá de forma objetiva as principais operações para abertura e consulta de uma solicitação ao Setor de Desenvolvimento

Leia mais

TRANSMISSOR ECF. Sistema de transmissão de arquivos Nota Fiscal Paulista. Manual de Utilização

TRANSMISSOR ECF. Sistema de transmissão de arquivos Nota Fiscal Paulista. Manual de Utilização TRANSMISSOR ECF Sistema de transmissão de arquivos Nota Fiscal Paulista Manual de Utilização 1. Histórico de alterações Data Versão Alteração 04/12/2012 1 Criação do documento 28/02/2013 2 Revisão 2. Proposta

Leia mais

OI CONTA EMPRESA MANUAL DO USUÁRIO

OI CONTA EMPRESA MANUAL DO USUÁRIO OI CONTA EMPRESA MANUAL DO USUÁRIO 1 Bem-vindo ao Oi Conta Empresa! A Oi tem o orgulho de lançar mais um produto para nossos clientes corporativos, o Oi Conta Empresa. Nele, nossos clientes poderão acessar

Leia mais

Procedimentos para Instalação do Sisloc

Procedimentos para Instalação do Sisloc Procedimentos para Instalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Instalação do Sisloc... 3 Passo a passo... 3 3. Instalação da base de dados Sisloc... 16 Passo a passo... 16 4. Instalação

Leia mais

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando

Leia mais

Este tutorial está publicado originalmente em http://www.baboo.com.br/absolutenm/anmviewer.asp?a=30405&z=300

Este tutorial está publicado originalmente em http://www.baboo.com.br/absolutenm/anmviewer.asp?a=30405&z=300 WinRAR: Conheça este excelente compactador de arquivos Introdução: É fato que a Internet está mais rápida com a popularização da banda larga, mas os compactadores de arquivos ainda apresentam muita utilidade

Leia mais

1) MANUAL DO INTEGRADOR Este documento, destinado aos instaladores do sistema, com informações de configuração.

1) MANUAL DO INTEGRADOR Este documento, destinado aos instaladores do sistema, com informações de configuração. O software de tarifação é uma solução destinada a rateio de custos de insumos em sistemas prediais, tais como shopping centers. O manual do sistema é dividido em dois volumes: 1) MANUAL DO INTEGRADOR Este

Leia mais

Adapti - Technology Solutions www.adapti.net Leonor cardoso nº 331 Fone : (041) 8844-7805 81240-380 Curitiba - PR MANUAL DO USUÁRIO

Adapti - Technology Solutions www.adapti.net Leonor cardoso nº 331 Fone : (041) 8844-7805 81240-380 Curitiba - PR MANUAL DO USUÁRIO MANUAL DO USUÁRIO 1 Índice Administração de Documentos...2 Lista de documentos criados...3 Criando um novo documento...3 Barra de ferramentas do editor...4 Editando um documento...7 Administrando suas

Leia mais

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

SUMÁRIO Acesso ao sistema... 2 Atendente... 3 SUMÁRIO Acesso ao sistema... 2 1. Login no sistema... 2 Atendente... 3 1. Abrindo uma nova Solicitação... 3 1. Consultando Solicitações... 5 2. Fazendo uma Consulta Avançada... 6 3. Alterando dados da

Leia mais

Manual de Utilização ZENDESK. Instruções Básicas

Manual de Utilização ZENDESK. Instruções Básicas Manual de Utilização ZENDESK Instruções Básicas Novembro/2013 SUMÁRIO 1 Acesso à ferramenta... 3 2 A Ferramenta... 4 3 Tickets... 8 3.1 Novo Ticket... 8 3.2 Acompanhamentos de Tickets já existentes...

Leia mais

APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo) APOSTILA DE EXEMPLO (Esta é só uma reprodução parcial do conteúdo) 1 Índice Aula 1 - Área de trabalho e personalizando o sistema... 3 A área de trabalho... 3 Partes da área de trabalho.... 4 O Menu Iniciar:...

Leia mais

Processo de Controle das Reposições da loja

Processo de Controle das Reposições da loja Processo de Controle das Reposições da loja Getway 2015 Processo de Reposição de Mercadorias Manual Processo de Reposição de Mercadorias. O processo de reposição de mercadorias para o Profit foi definido

Leia mais

1 Sumário... 2. 2 O Easy Chat... 3. 3 Conceitos... 3. 3.1 Perfil... 3. 3.2 Categoria... 3. 4 Instalação... 5. 5 O Aplicativo... 7 5.1 HTML...

1 Sumário... 2. 2 O Easy Chat... 3. 3 Conceitos... 3. 3.1 Perfil... 3. 3.2 Categoria... 3. 4 Instalação... 5. 5 O Aplicativo... 7 5.1 HTML... 1 Sumário 1 Sumário... 2 2 O Easy Chat... 3 3 Conceitos... 3 3.1 Perfil... 3 3.2 Categoria... 3 3.3 Ícone Específico... 4 3.4 Janela Específica... 4 3.5 Ícone Geral... 4 3.6 Janela Geral... 4 4 Instalação...

Leia mais

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Satélite Manual de instalação e configuração CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Índice Índice 1.Informações gerais 1.1.Sobre este manual 1.2.Visão geral do sistema 1.3.História

Leia mais

Microsoft Access XP Módulo Um

Microsoft Access XP Módulo Um Microsoft Access XP Módulo Um Neste primeiro módulo de aula do curso completo de Access XP vamos nos dedicar ao estudo de alguns termos relacionados com banco de dados e as principais novidades do novo

Leia mais

Fox Gerenciador de Sistemas

Fox Gerenciador de Sistemas Fox Gerenciador de Sistemas Índice 1. FOX GERENCIADOR DE SISTEMAS... 4 2. ACESSO AO SISTEMA... 5 3. TELA PRINCIPAL... 6 4. MENU SISTEMAS... 7 5. MENU SERVIÇOS... 8 5.1. Ativação Fox... 8 5.2. Atualização

Leia mais

MÓDULO 5 Movimentações

MÓDULO 5 Movimentações MÓDULO 5 Movimentações Bem-vindo(a) ao quinto módulo do curso. Agora que você já conhece as entradas no HÓRUS, aprenderá como são feitas as movimentações. As movimentações do HÓRUS são: Requisição ao Almoxarifado:

Leia mais

Manual do usuário. v1.0

Manual do usuário. v1.0 Manual do usuário v1.0 1 Iniciando com o Vivo Gestão 1. como fazer login a. 1º acesso b. como recuperar a senha c. escolher uma conta ou grupo (hierarquia de contas) 2. como consultar... de uma linha a.

Leia mais

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Construtor de sites SoftPixel GUIA RÁPIDO - 1 - GUIA RÁPIDO - 1 - Sumário Introdução...3 Por que utilizar o Construtor de Sites?...3 Vantagens do Construtor de Sites...3 Conceitos básicos...3 Configuração básica do site...5 Definindo o layout/template

Leia mais

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR 1 Índice: 01- Acesso ao WEBMAIL 02- Enviar uma mensagem 03- Anexar um arquivo em uma mensagem 04- Ler/Abrir uma mensagem 05- Responder uma mensagem

Leia mais

02. O software ainda permite instalar a barra de ferramentas do Google como recurso extra. Faça a escolha desejada e continue a instalação.

02. O software ainda permite instalar a barra de ferramentas do Google como recurso extra. Faça a escolha desejada e continue a instalação. Contra-ataque os spywares com o Spyware Doctor! Antigamente, a única preocupação dos usuários em termos de segurança era os vírus. Hoje existem tantas palavras relacionadas a softwares maliciosos que qualquer

Leia mais

Manual Operacional SIGA

Manual Operacional SIGA SMS - ATTI Julho -2012 Conteúdo Sumário... 2... 3 Consultar Registros... 4 Realizar Atendimento... 9 Adicionar Procedimento... 11 Não Atendimento... 15 Novo Atendimento... 16 Relatórios Dados Estatísticos...

Leia mais

Smart Laudos 1.9. A Forma Inteligente de Criar seus Laudos Médicos. Manual do Usuário

Smart Laudos 1.9. A Forma Inteligente de Criar seus Laudos Médicos. Manual do Usuário Smart Laudos 1.9 A Forma Inteligente de Criar seus Laudos Médicos Manual do Usuário Conteúdo 1. O que é o Smart Laudos?... 3 2. Características... 3 3. Instalação... 3 4. Menu do Sistema... 4 5. Configurando

Leia mais

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. 1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. Editando um Artigo 4.3. Excluindo um Artigo 4.4. Publicar

Leia mais

Portal Sindical. Manual Operacional Empresas/Escritórios

Portal Sindical. Manual Operacional Empresas/Escritórios Portal Sindical Manual Operacional Empresas/Escritórios Acesso ao Portal Inicialmente, para conseguir acesso ao Portal Sindical, nos controles administrativos, é necessário acessar a página principal da

Leia mais

A barra de menu a direita possibilita efetuar login/logout do sistema e também voltar para a página principal.

A barra de menu a direita possibilita efetuar login/logout do sistema e também voltar para a página principal. MANUAL DO SISCOOP Sumário 1 Menu de Navegação... 3 2 Gerenciar País... 5 3- Gerenciamento de Registro... 8 3.1 Adicionar um registro... 8 3.2 Editar um registro... 10 3.3 Excluir um registro... 11 3.4

Leia mais

Java para Desenvolvimento Web

Java para Desenvolvimento Web Java para Desenvolvimento Web Servlets A tecnologia Servlet foi introduzida pela Sun Microsystems em 1996, aprimorando e estendendo a funcionalidade e capacidade de servidores Web. Servlets é uma API para

Leia mais

Índice. Tenho uma conta pessoal e uma conta da instituição em que dou aula, porém não consigo acessar a conta da escola. O que fazer?

Índice. Tenho uma conta pessoal e uma conta da instituição em que dou aula, porém não consigo acessar a conta da escola. O que fazer? Índice Acesso ao Super Professor Web Como recuperar a senha de acesso? Tenho uma conta pessoal e uma conta da instituição em que dou aula, porém não consigo acessar a conta da escola. O que fazer? Selecionando

Leia mais

OI CONTA EMPRESA MANUAL DO USUÁRIO (exceto Administradores de Conta)

OI CONTA EMPRESA MANUAL DO USUÁRIO (exceto Administradores de Conta) OI CONTA EMPRESA MANUAL DO USUÁRIO (exceto Administradores de Conta) 1 Bem-vindo ao Oi Conta Empresa! A Oi tem o orgulho de lançar mais um produto para nossos clientes corporativos, o Oi Conta Empresa.

Leia mais

SMS Corporativo Manual do Usuário

SMS Corporativo Manual do Usuário NEXTEL SMS Corporativo Manual do Usuário Conteúdo 2 CAPÍTU LO 1 Introdução 3 CAPÍTU LO 2 Funcionalidades 1 Copyright Curupira S/A TakeNET INTRODUÇÃO A FERRAMENTA O SMS Corporativo é um serviço criado para

Leia mais

Editor de Questões E24H

Editor de Questões E24H Editor de Questões E24H Conteúdo: Apresentação O que é o Editor de Questões Objetivos Potencialidades Vantagens adicionais Visualização no site (Quem acessa o Editor de Questões) (não Para quem o Editor

Leia mais