Tapeçaria Apache - Arquitetura

Tapestry tenta usar os recursos disponíveis do Java tanto quanto possível. Por exemplo, todas as páginas Tapestry são simplesmente POJOs. Ele não impõe nenhuma interface customizada ou classe base para escrever o aplicativo. Em vez disso, ele usa Annotation (uma opção leve para estender a funcionalidade de uma classe Java) para fornecer recursos. É baseado em testes de batalhaJava Servlet APIe é implementado como um filtro de servlet. Ele fornece uma nova dimensão para a aplicação web e a programação é bastante Simples, Flexível, Compreensível e Robusta.

Fluxo de Trabalho

Vamos discutir a seqüência de ação que ocorre quando uma página de tapeçaria é solicitada.

Step 1 - o Java Servletrecebe a solicitação de página. Este Java Servlet é configurado de forma que a solicitação recebida seja encaminhada para a tapeçaria. A configuração é feita noweb.xmlconforme especificado no programa a seguir. A tag Filter and Filter Mapping redireciona todas as solicitações para o Tapestry Filter .

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
   "http://java.sun.com/dtd/web-app_2_3.dtd"> 
<web-app> 
   <display-name>My Tapestry Application</display-name> 
   <context-param> 
      <param-name>tapestry.app-package</param-name> 
      <param-value>org.example.myapp</param-value> 
   </context-param> 
   <filter> 
      <filter-name>app</filter-name> 
      <filter-class>org.apache.tapestry5.TapestryFilter</filter-class> 
   </filter> 
   <filter-mapping> 
      <filter-name>app</filter-name> 
      <url-pattern>/*</url-pattern> 
   </filter-mapping> 
</web-app>

Step 2 - o Tapestry Filter chama o HttpServletRequestHandler Serviço por seu Service() método.

Step 3 - HttpServletRequestHandler armazena a solicitação e resposta em RequestGlobals. Ele também envolve a solicitação e a resposta como um objeto de Solicitação e Resposta e a envia para o RequestHandler.

Step 4 - o RequestHandler é uma abstração em cima de HttpServletRequestda API Servlet. Algumas das características salientes da tapeçaria são feitas emRequestHandlerseção. O recurso de tapeçaria pode ser estendido escrevendo um filtro em RequestHandler. RequestHandler fornece vários filtros integrados, que incluem -

  • CheckForUpdates Filter- Responsável pelo recarregamento da aula ao vivo. Este filtro verifica as classes java para alterações e atualiza o aplicativo conforme necessário.

  • Localization Filter - Identificar a localização do usuário e fornecer suporte de localização para o aplicativo.

  • StaticFiles Filter- Identifica a solicitação estática e aborta o processo. Depois que o processo é abortado, o Java Servlet assume o controle e processa a solicitação.

  • Error Filter - Captura a exceção não capturada e apresenta a página de relatório de exceção.

O RequestHandler também modifica e armazena a solicitação e a resposta no RequestQlobals e chama o serviço MasterDispatcher.

Step 5 - o MasterDispatcheré responsável por renderizar a página chamando vários despachantes em um pedido específico. Os quatro despachantes principais chamados pelo MasterDispatcher são os seguintes -

  • RootPath Dispatcher - Reconhece o caminho raiz “/” da solicitação e processa o mesmo que a página inicial.

  • Asset Dispatcher - Ele reconheceu a solicitação de ativo (ativos Java) verificando o padrão de url / ativos / e envia os ativos solicitados como fluxos de bytes.

  • PageRender Dispatcher- A maioria das operações de tapeçaria são feitas no PageRender Dispatcher e no próximo dispatcher Component Dispatcher. Este despachante reconhece a página específica dessa solicitação e seu contexto de ativação (informações extras). Em seguida, ele renderiza essa página específica e a envia ao cliente. Por exemplo, se o URL da solicitação for / product / 12123434, o expedidor verificará se alguma classe com o nome product / 12123434 está disponível. Se encontrado, ele chama product / 12123434 class, gera a resposta e envia para o cliente. Caso contrário, verifica a classe do produto. Se encontrado, ele chama a classe de produto com a informação extra 121234434, gera a resposta e a envia ao cliente. Essas informações extras são chamadas de Contexto de Ativação. Se nenhuma classe for encontrada, ele simplesmente encaminha a solicitação para o Component Dispatcher.

  • Component Dispatcher- Component Dispatcher corresponde ao URL da página com o padrão - / <class_name> / <component_id>: <event_type> / <activation_context>. Por exemplo, / product / grid: sort / asc representa a classe do produto, o componente da grade, o tipo de evento sort e o contexto de ativação asc. Aqui, event_type é opcional e se nenhum for fornecido, a ação do tipo de evento padrão será disparada. Normalmente, a resposta do distribuidor de componentes é enviar um redirecionamento ao cliente. Geralmente, o redirecionamento corresponderá ao PageRender Dispatcher na próxima solicitação e a resposta adequada será enviada ao cliente.