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 é 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 (www.tostring.com.br). / 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 (http:// 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

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

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

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

Boas Práticas de Desenvolvimento Seguro

Boas Práticas de Desenvolvimento Seguro Boas Práticas de Desenvolvimento Seguro Julho / 2.012 Histórico de Revisões Data Versão Descrição Autor 29/07/2012 1.0 Versão inicial Ricardo Kiyoshi Página 2 de 11 Conteúdo 1. SEGURANÇA DA INFORMAÇÃO

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

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

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

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

Java Server Faces 2.0 Rich Faces 4.0

Java Server Faces 2.0 Rich Faces 4.0 DEPARTAMENTO DE INFORMÁTICA - DI Java Server Faces 2.0 Rich Faces 4.0 Quais as novidades e alterações nas novas versões das tecnologias? Pablo Bruno de Moura Nóbrega Analista de Sistemas pablo.nobrega@uece.br

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

Anotações e Navegação no JSF 2.0

Anotações e Navegação no JSF 2.0 1/16 Anotações e Navegação no JSF 2.0 Simplifique a navegação e a configuração XML com o JSF 2.0 Aprenda a utilizar anotações e navegações implícita e condicional em suas aplicações JSF 2.0 MARCEL TOKARSKI

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

5 Detalhes da Implementação

5 Detalhes da Implementação Detalhes da Implementação 101 5 Detalhes da Implementação Neste capítulo descreveremos detalhes da implementação do Explorator que foi desenvolvido usando o paradigma MVC 45 e o paradigma de CoC 46 (Convention

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

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

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

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

Sistema Gerenciador de Hotel. Adriano Douglas Girardello. Ana Paula Fredrich. Tiago Alexandre Schulz Sippert

Sistema Gerenciador de Hotel. Adriano Douglas Girardello. Ana Paula Fredrich. Tiago Alexandre Schulz Sippert UNIOESTE Universidade Estadual do Oeste do Paraná CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Colegiado de Informática Curso de Bacharelado em Informática Sistema Gerenciador de Hotel Adriano Douglas Girardello

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

Leia mais

Minha primeira aplicação utilizando Java Server Faces + Glassfish

Minha primeira aplicação utilizando Java Server Faces + Glassfish Minha primeira aplicação utilizando Java Server Faces + Glassfish Este tutorial apresenta de forma simples, como iniciar no desenvolvimento com o framework Java Server faces 1.2, utilizando-se o servidor

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

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS Edi Carlos Siniciato ¹, William Magalhães¹ ¹ Universidade Paranaense (Unipar) Paranavaí PR Brasil edysiniciato@gmail.com,

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

Portal Contador Parceiro

Portal Contador Parceiro Portal Contador Parceiro Manual do Usuário Produzido por: Informática Educativa 1. Portal Contador Parceiro... 03 2. Acesso ao Portal... 04 3. Profissionais...11 4. Restrito...16 4.1 Perfil... 18 4.2 Artigos...

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 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

PROJETO PEDAGÓGICO DE CURSOS

PROJETO PEDAGÓGICO DE CURSOS 1 de 6 PROJETO PEDAGÓGICO DE CURSOS BURITREINAMENTOS MANAUS-AM MARÇO / 2015 2 de 6 PACOTES DE TREINAMENTOS BURITECH A Buritech desenvolveu um grupo de pacotes de treinamentos, aqui chamados de BuriPacks,

Leia mais

Experiência em missão crítica de missão crítica

Experiência em missão crítica de missão crítica 2 / 49 Experiência em missão crítica de missão crítica Pioneira no ensino de Linux à distância Parceira de treinamento IBM Primeira com LPI no Brasil + de 30.000 alunos satisfeitos Reconhecimento internacional

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

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS Emanuel M. Godoy 1, Ricardo Ribeiro Rufino 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil godoymanel@gmail.com,

Leia mais

Documento de Análise e Projeto VideoSystem

Documento de Análise e Projeto VideoSystem Documento de Análise e Projeto VideoSystem Versão Data Versão Descrição Autor 20/10/2009 1.0 21/10/2009 1.0 05/11/2009 1.1 Definição inicial do documento de análise e projeto Revisão do documento

Leia mais

Anexo III Funcionamento detalhado do Sistema Montador de Autoria

Anexo III Funcionamento detalhado do Sistema Montador de Autoria 1 Sumário Anexo III Funcionamento detalhado do Sistema Montador de Autoria Anexo III Funcionamento detalhado do Sistema Montador de Autoria... 1 1 Sumário... 1 2 Lista de Figuras... 5 3 A Janela principal...

Leia mais

Portal AEPQ Manual do utilizador

Portal AEPQ Manual do utilizador Pedro Gonçalves Luís Vieira Portal AEPQ Manual do utilizador Setembro 2008 Engenharia Informática - Portal AEPQ Manual do utilizador - ii - Conteúdo 1 Introdução... 1 1.1 Estrutura do manual... 3 1.2 Requisitos...

Leia mais

3.5. Cuidado com o modelo anêmico

3.5. Cuidado com o modelo anêmico 3.5. Cuidado com o modelo anêmico public Periodo adiaumasemana() { Calendar novofim = (Calendar) this.fim.clone(); novofim.add(calendar.day_of_month, 7); return new Periodo(inicio, novofim); E, com uma

Leia mais

Fóruns em Moodle (1.6.5+)

Fóruns em Moodle (1.6.5+) (1.6.5+) Ficha Técnica Título Fóruns em Moodle Autor Athail Rangel Pulino Filho Copyright Creative Commons Edição Agosto 2007 Athail Rangel Pulino 2 Índice O que são Fóruns 4 Criando um fórum 5 Nome do

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

7 Utilização do Mobile Social Gateway

7 Utilização do Mobile Social Gateway 7 Utilização do Mobile Social Gateway Existem três atores envolvidos na arquitetura do Mobile Social Gateway: desenvolvedor do framework MoSoGw: é o responsável pelo desenvolvimento de novas features,

Leia mais

Índice. Para encerrar um atendimento (suporte)... 17. Conversa... 17. Adicionar Pessoa (na mesma conversa)... 20

Índice. Para encerrar um atendimento (suporte)... 17. Conversa... 17. Adicionar Pessoa (na mesma conversa)... 20 Guia de utilização Índice Introdução... 3 O que é o sistema BlueTalk... 3 Quem vai utilizar?... 3 A utilização do BlueTalk pelo estagiário do Programa Acessa Escola... 5 A arquitetura do sistema BlueTalk...

Leia mais

INTRODUÇÃO 2 ACESSO AO SIGTECWEB 3 TEMPO DE CONEXÃO 5 NAVEGAÇÃO 7 BARRA DE AÇÕES 7 COMPORTAMENTO DOS BOTÕES 7 FILTROS PARA PESQUISA 8

INTRODUÇÃO 2 ACESSO AO SIGTECWEB 3 TEMPO DE CONEXÃO 5 NAVEGAÇÃO 7 BARRA DE AÇÕES 7 COMPORTAMENTO DOS BOTÕES 7 FILTROS PARA PESQUISA 8 ÍNDICE INTRODUÇÃO 2 ACESSO AO SIGTECWEB 3 TEMPO DE CONEXÃO 5 NAVEGAÇÃO 7 BARRA DE AÇÕES 7 COMPORTAMENTO DOS BOTÕES 7 FILTROS PARA PESQUISA 8 ACESSO ÀS FERRAMENTAS 9 FUNÇÕES 12 MENSAGENS 14 CAMPOS OBRIGATÓRIOS

Leia mais

Manual Easy Chat Data de atualização: 20/12/2010 16:09 Versão atualizada do manual disponível na área de download do software.

Manual Easy Chat Data de atualização: 20/12/2010 16:09 Versão atualizada do manual disponível na área de download do software. 1 - Sumário 1 - Sumário... 2 2 O Easy Chat... 3 3 Conceitos... 3 3.1 Perfil... 3 3.2 Categoria... 4 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

Ano III - Número 16. Versão 4.6.4

Ano III - Número 16. Versão 4.6.4 Versão 4.6.4 Sexta-feira, 08 de fevereiro de 2008 ÍNDICE 3 4 EDITORIAL NOVAS FUNCIONALIDADES 4 12 13 14 15 16 Novo Cronograma 4 5 5 6 7 8 8 9 9 10 10 Edição Rápida do Cronograma Recurso de Arrastar e Soltar

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

GUIA DE BOAS PRÁTICAS

GUIA DE BOAS PRÁTICAS GUIA DE BOAS PRÁTICAS Sumário Requisitos para um bom funcionamento...3 Menu Configurações...7 Como otimizar o uso da sua cota...10 Monitorando o backup...8 Manutenção de arquivos...12 www.upbackup.com.br

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 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

Aula 03 - Projeto Java Web

Aula 03 - Projeto Java Web Aula 03 - Projeto Java Web Para criação de um projeto java web, vá em File/New. Escolha o projeto: Em seguida, na caixa Categorias selecione Java Web. Feito isso, na caixa à direita selecione Aplicação

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

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

GANHE DINHEIRO FACIL GASTANDO APENAS ALGUMAS HORAS POR DIA

GANHE DINHEIRO FACIL GASTANDO APENAS ALGUMAS HORAS POR DIA GANHE DINHEIRO FACIL GASTANDO APENAS ALGUMAS HORAS POR DIA Você deve ter em mente que este tutorial não vai te gerar dinheiro apenas por você estar lendo, o que você deve fazer e seguir todos os passos

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

WebSphere MQ Everyplace V2.0.2

WebSphere MQ Everyplace V2.0.2 WebSphere MQ Everyplace V2.0.2 ii WebSphere MQ Everyplace V2.0.2 Índice Configurando Comunicações..... 1 Considerações sobre o Sistema Operacional....1 Atributos...............1 Mensagens...............1

Leia mais

Capítulo 04: Persistência com SQLite

Capítulo 04: Persistência com SQLite Capítulo 04: Persistência com SQLite Instrutor Programador desde 2000 Aluno de doutorado Mestre em informática pelo ICOMP/UFAM Especialista em aplicações WEB FUCAPI marcio.palheta@gmail.com sites.google.com/site/marcio

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

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

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart.

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. 16/08/2013 BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. Versão 1.0 19/12/2014 Visão Resumida Data Criação 19/12/2014 Versão Documento 1.0 Projeto

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

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

[MANUAL DE INTEGRAÇÃO PARA SITES DE MEMBROS]

[MANUAL DE INTEGRAÇÃO PARA SITES DE MEMBROS] 2011 [MANUAL DE INTEGRAÇÃO PARA SITES DE MEMBROS] Destinado a usuários que desejam vender conteúdo premium, disponível em sites de membros, através da plataforma Hotmart. Versão do documento: 1.0, 11/04/2011.

Leia mais

Além do JSF: Matriz de Campos com Recursos e Práticas Incomuns

Além do JSF: Matriz de Campos com Recursos e Práticas Incomuns Décio Heinzelmann Luckow (decioluckow@gmail.com): é bacharel em Sistemas de Informação pela Univille e pósgraduando em Gestão de Projetos pela Sustentare Escola de Negócios. Já trabalhou com as linguagens

Leia mais

ARQUITETURA DO SISTEMA ERP PEGASUS

ARQUITETURA DO SISTEMA ERP PEGASUS ARQUITETURA DO SISTEMA ERP PEGASUS Elaborado por: Bruno Duarte Nogueira Arquiteto de Software Data: 05/03/2012 1 Sumário 1. Introdução... 3 2. Tecnologias... 3 2.1. Web Tier... 3 2.1.1. Facelets 1.1.14...

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

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira ENTERPRISE JAVABEANS 3 Msc. Daniele Carvalho Oliveira Apostila Servlets e JSP www.argonavis.com.br/cursos/java/j550/index.html INTRODUÇÃO Introdução Enterprise JavaBeans é um padrão de modelo de componentes

Leia mais

JSF2 e AJAX. Desenvolvimento Web com. Construa aplicações Web mais interativas e elegantes

JSF2 e AJAX. Desenvolvimento Web com. Construa aplicações Web mais interativas e elegantes Desenvolvimento Web com JSF2 e AJAX Construa aplicações Web mais interativas e elegantes Wagner Borges (wagner@quebrandoparadigmas.com): é formado em Sistemas de Informação pela FACID e especializado em

Leia mais

Introdução. Templates. Configurações. Componentes. Prof. Enzo Seraphim

Introdução. <facelets> Templates. Configurações. Componentes. Prof. Enzo Seraphim Introdução Templates Configurações Componentes Prof. Enzo Seraphim Definição Linguagem de descrição de páginas (PDL Page Description Language) criada para JSF. Estabelece templates que suportam

Leia mais

Conecta S_Line. 2.2 Downloads Para instalar o Conecta S_Line, basta acessar www.sline.com.br/downloads.aspx

Conecta S_Line. 2.2 Downloads Para instalar o Conecta S_Line, basta acessar www.sline.com.br/downloads.aspx 1 Introdução O Conecta S_Line permite que o laboratório envie à Central S_Line os resultados de exames gerados pelo Sistema de Informação Laboratorial (LIS) em forma de arquivos digitais. Todo o processo

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 do Usuário 2013

Manual do Usuário 2013 Manual do Usuário 2013 MANUAL DO USUÁRIO 2013 Introdução Um ambiente virtual de aprendizagem é um programa para computador que permite que a sala de aula migre para a Internet. Simula muitos dos recursos

Leia mais

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Por quê JSP? Com Servlets é fácil Ler dados de um formulário Recuperar dados de uma requisição Gerar informação de resposta Fazer gerenciamento

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

Manual do Usuário. Sistema/Ferramenta: Spider-ACQ. Versão do Sistema/Ferramenta: 1.0. www.spider.ufpa.br

Manual do Usuário. Sistema/Ferramenta: Spider-ACQ. Versão do Sistema/Ferramenta: 1.0. www.spider.ufpa.br Manual do Usuário Sistema/Ferramenta: Spider-ACQ Versão do Sistema/Ferramenta: 1.0 www.spider.ufpa.br Histórico de Revisões Data Versão Descrição Autor 27/05/2011 1.0 Criação da seção de instalação/configuração

Leia mais

Manual de Utilização do Zimbra

Manual de Utilização do Zimbra Manual de Utilização do Zimbra Compatível com os principais navegadores web (Firefox, Chrome e Internet Explorer) o Zimbra Webmail é uma suíte completa de ferramentas para gerir e-mails, calendário, tarefas

Leia mais

Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina

Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina Programação para Internet Rica 1 Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina Objetivo: Identificar as principais características de uma Aplicação Internet Rica.

Leia mais

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso de Aprendizado Industrial Desenvolvedor WEB Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Modelo Cliente- Servidor Modelo de Aplicação Cliente-servidor Os

Leia mais

Desenvolvendo para WEB

Desenvolvendo para WEB Nível - Básico Desenvolvendo para WEB Por: Evandro Silva Neste nosso primeiro artigo vamos revisar alguns conceitos que envolvem a programação de aplicativos WEB. A ideia aqui é explicarmos a arquitetura

Leia mais

Manual 2010 Webmaster

Manual 2010 Webmaster Manual 2010 Webmaster Menu 1. Acesso ao sistema 2. Campanhas 2.1 Ver Campanhas Disponíveis 2.2 Minhas Campanhas 3. Formatos 3.1 Banners Automáticos 3.2 Banners Manuais 3.3 E-mail Marketing 3.4 Vitrines

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

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP 2ª Edição Juliano Niederauer Novatec Copyright 2009, 2011 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução

Leia mais

MANUAL DO ADMINISTRADOR

MANUAL DO ADMINISTRADOR WinShare Proxy admin MANUAL DO ADMINISTRADOR Instalação do WinShare Índice 1. Instalação 2. Licenciamento 3. Atribuindo uma senha de acesso ao sistema. 4. Configurações de rede 5. Configurações do SMTP

Leia mais

FAQ REGISTRO DE INTERAÇÕES

FAQ REGISTRO DE INTERAÇÕES Sumário 1. O que são interações?... 3 2. Posso registrar uma interação com um parceiro?... 3 3. Posso registrar interações para empresas?... 3 4. Quando converso informalmente com um cliente, parceiro

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

Acessando um Banco de Dados

Acessando um Banco de Dados Acessando um Banco de Dados Introdução Agora que você já está craque em JSP e já instalou seu servidor, vamos direto para a parte prática! Neste tutorial vamos aprender a acessar um banco de dados. Para

Leia mais

DESENVOLVENDO APLICAÇÕES UTILIZANDO JAVASERVER FACES E MVC

DESENVOLVENDO APLICAÇÕES UTILIZANDO JAVASERVER FACES E MVC DESENVOLVENDO APLICAÇÕES UTILIZANDO JAVASERVER FACES E MVC Felipe Moreira Decol Claro 1, Késsia Rita da Costa Marchi 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil felipe4258@hotmail.com, kessia@unipar.br

Leia mais

Etapas de uma campanha de e-mail marketing

Etapas de uma campanha de e-mail marketing Etapas de uma campanha de e-mail marketing Conheça as principais etapas de uma campanha de e-mail marketing, desde o planejamento de ações, até a análise das métricas de resultados. Ao contrário do que

Leia mais

MANUAL DO USUÁRIO. Ferramenta de Fidelização Eletrônica ÁGUA DOCE SABORES DO BRASIL. Interface de OPERAÇÃO (no caixa)

MANUAL DO USUÁRIO. Ferramenta de Fidelização Eletrônica ÁGUA DOCE SABORES DO BRASIL. Interface de OPERAÇÃO (no caixa) MANUAL DO USUÁRIO Ferramenta de Fidelização Eletrônica ÁGUA DOCE SABORES DO BRASIL Interface de OPERAÇÃO (no caixa) http://abf.e-deploy.com.br/operacao/ Versão 1.0 Conteúdo Sobre o programa fidelidade

Leia mais

think with técnicas infalíveis para ter o melhor 25site mobile

think with técnicas infalíveis para ter o melhor 25site mobile think with técnicas infalíveis para ter o melhor 25site mobile A internet no celular é uma realidade gigantesca no Brasil. Basta dizer que 72% dos usuários de smartphones acessam a web todos os dias em

Leia mais

II Semana TI. Curso ASP.NET AJAX. Raphael Zanon Rodrigues zanonr@gmail.com. UNIVEM - Prof. Elvis Fusco

II Semana TI. Curso ASP.NET AJAX. Raphael Zanon Rodrigues zanonr@gmail.com. UNIVEM - Prof. Elvis Fusco II Semana TI Curso ASP.NET AJAX Raphael Zanon Rodrigues zanonr@gmail.com UNIVEM - Prof. Elvis Fusco Apresentação O que é o AJAX? AJAX e o desenvolvedor AJAX para ASP.NET AJAX prático O que é AJAX? AJAX

Leia mais

Desenvolvendo aplicações desktop em Java: presente e futuro

Desenvolvendo aplicações desktop em Java: presente e futuro Desenvolvendo aplicações desktop em Java: presente e futuro Michael Nascimento Santos Conexão Java 2006 Michael Nascimento Santos 7 anos de experiência com Java Expert nas JSRs 207, 250, 270 (Java 6),

Leia mais

Millennium ECO 2.0 (beta)

Millennium ECO 2.0 (beta) MILLENNIUM NETWORK Millennium ECO 2.0 (beta) Documentação Técnica (draft) 10/2013 Este documento contém as instruções para a utilização da biblioteca Millenium_Eco que se presta à comunicação de aplicativos

Leia mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

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

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 08 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir como definir

Leia mais

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. Rodrigo Hjort. Robson Ximenes

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. <marlon.carvalho@gmail.com> Rodrigo Hjort. <rodrigo.hjort@gmail.com> Robson Ximenes Demoiselle Report Guide Demoiselle Report Marlon Carvalho Rodrigo Hjort Robson Ximenes Demoiselle Report... v 1. Configuração

Leia mais

Programa de Hematologia e Oncologia Pediátricos Diagnóstico Imunomolecular. Manual do sistema (Médico)

Programa de Hematologia e Oncologia Pediátricos Diagnóstico Imunomolecular. Manual do sistema (Médico) Programa de Hematologia e Oncologia Pediátricos Diagnóstico Imunomolecular Manual do sistema (Médico) ÍNDICE 1. O sistema... 1 2. Necessidades técnicas para acesso ao sistema... 1 3. Acessando o sistema...

Leia mais

Documento de Arquitetura

Documento de Arquitetura Documento de Arquitetura A2MEPonto - SISTEMA DE PONTO ELETRÔNICO A2MEPonto - SISTEMA DE PONTO ELETRÔNICO #1 Pág. 1 de 11 HISTÓRICO DE REVISÕES Data Versão Descrição Autor 28/10/2010 1 Elaboração do documento

Leia mais

Eduardo Bezerra. Editora Campus/Elsevier

Eduardo Bezerra. Editora Campus/Elsevier Princípios de Análise e Projeto de Sistemas com UML 2ª edição Eduardo Bezerra Editora Campus/Elsevier Capítulo 11 Arquitetura do sistema Nada que é visto, é visto de uma vez e por completo. --EUCLIDES

Leia mais

SOFTWARE DE INTERNET PARA DEFICIENTES VISUAIS

SOFTWARE DE INTERNET PARA DEFICIENTES VISUAIS SOFTWARE DE INTERNET PARA DEFICIENTES VISUAIS Aluno: Bruno Levy Fuks Orientador: Marcos da Silveira Introdução No Brasil, é evidente o pouco comprometimento da sociedade com o deficiente. Para se ter uma

Leia mais

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44 Armazenando Dados em Aplicações Java Parte 2 de 3: Apresentando as opções Hua Lin Chang Costa, hualin@cos.ufrj.br, COPPE/UFRJ. Leonardo Gresta Paulino Murta, leomurta@ic.uff.br, IC/UFF. Vanessa Braganholo,

Leia mais

Manual de Gerenciamento de Conteúdo

Manual de Gerenciamento de Conteúdo Manual de Gerenciamento de Conteúdo 1 Sumário 1) O que é um Gerenciador de Conteúdo...3 2) Como o Site está Estruturado...3 3) Como Gerenciar o Conteúdo do Site...5 3.1) Adicionar Itens no Menu de Navegação...6

Leia mais

ROTEIRO SOBRE NOTAS DE IMPORTAÇÃO CONTROLLER

ROTEIRO SOBRE NOTAS DE IMPORTAÇÃO CONTROLLER Inicialmente, o mais importante O objetivo deste material é apresentar como deve-se proceder em todas as fases, o cadastramento de uma Nota de Importação no Controller. Este material abordará os tópicos

Leia mais