• Nenhum resultado encontrado

Objetos Distribuído com CORBA e JEE

No documento 14785589987745587 (páginas 89-112)

Exercícios de fixação

Questão 1 - D

Justificativa: O padrão Proxy é adotado, já que são utilizados stubs e skeletons na comunicação entre cliente e servidor. Os demais padrões: Front Control é utilizado na camada de visualização para direcionamento de requisições apenas; Flyweight é utilizado nos pools de objetos; DAO trabalha na camada de dados, concentrando o acesso ao banco; e Request Dispatcher efetua redirecionamentos para visualizações específicas.

Questão 2 - E

Justificativa: No ambiente CORBA o serviço de nomes e diretórios para localização de componentes é denominado COS Naming, ou Common Object Service Naming Services.

Questão 3 - B

Justificativa: Criado pelo OMG (Object Management Group), o CORBA (Common Object Request Broker Architecture) trata de uma arquitetura padrão com o objetivo de estabelecer e simplificar a troca de dados entre sistemas distribuídos heterogêneos baseados em objetos.

Questão 4 - D

Justificativa: O formato COM server para arquivos binários compatíveis com a interface interoperável de componentes Microsoft. Para utilizar objetos distribuídos seria adotada uma tecnologia similar, porém com suporte ao ambiente distribuído, denominada DCOM.

Questão 5 - A

Justificativa: Os passos para colocar um sistema RMI sob o IIOP segue os mesmos passos de um RMI padrão, porém, para que a implementação esteja

compatível com o CORBA, segundo o protocolo IIOP, deve ser utilizado um descendente de PortableRemoteObject na criação da classe de negócios.

Questão 6 - B

Justificativa: Incialmente, a descrição de serviços para os EJBs utiliza Java, e não CORBA-IDL. O padrão proxy é apenas o modelo de comunicação baseado em stubs, e o uso de Java ou JNDI não traz qualquer compatibilidade com o ambiente CORBA. O protocolo RMI-IIOP é o que traz esta compatibilidade. Questão 7 - E

Justificativa: Para que este EJB seja utilizado a partir de um Servlet bastaria acrescentar um atributo do tipo da interface escolhida (remota ou local), anotado com @EJB. As demais anotações estão relacionadas à criação SessionBeans e suas interfaces.

Questão 8 - D

Justificativa: Os EntityBeans eram utilizados para persistência, mas foram substituídos pelo JPA no JEE5 por questões de performance. Quanto ao EntityManager, ele se refere à gestão de entidades anotadas do JPA. Os SessionBeans trabalham com processos de negócios síncronos, e os MDBs trabalham com recepção de mensagerias.

Questão 9 - C

Justificativa: Segundo o padrão Abstract Factory, toda a funcionalidade básica de integração com o framework fica pronta, enquanto o desenvolvedor especializa apenas para a fábrica concreta e interface concreta os detalhes referentes a regras de negócio próprias do aplicativo. Quanto ao Proxy, é utilizado na comunicação, o Flyweight na gestão dos pools de EJBs, o SessionFacade seria um Session encapsulando as chamadas aos EntityBeans ou JPA, e finalmente o DAO poderia ser utilizado para organizar as funções de persistência.

Questão 10 - E

Justificativa: Todas as afirmativas estão corretas. Particularmente quanto à afirmativa III, no JEE5 a adoção de anotações como @EJB acabou eliminando a necessidade de utilizar o Service Locator.

Introdução

O formato de transferência de dados que foi adotado mundialmente como padrão, devido a características como transparência aos firewalls e facilidade de escrita, é o da sintaxe XML.

Como a sintaxe XML não define regras sobre os dados envolvidos, a definição de gramáticas torna-se necessária para aplicações de domínio específico, o que leva ao surgimento do DTD e do XSD.

Por fim, muitas vezes é necessário transformar o XML de origem para outro formato, seja para visualização ou para compatibilização entre saídas e entradas, tornando-se úteis nesse contexto linguagens como XSLT e XSL-FO. Objetivo:

1. Apresentar a sintaxe XML e definição de gramáticas; 2. Apresentar as linguagens de transformação.

Conteúdo

Sintaxe XML

Apesar de tratar apenas de uma maneira de representar a informação, a sintaxe XML (eXtensible Markup Language) acabou se tornando base para a maioria dos recursos de configuração e conectividade das ferramentas disponíveis do mercado, bem como elemento essencial para a troca de dados entre plataformas distintas.

A história do XML começou com uma iniciativa da IBM que, nos anos 70, para definir uma metodologia de armazenamento de grandes quantidades de informações, criou o GML (General Markup Language), a qual foi padronizada pela ISO (International Organization for Standardzation) em 1986, dando origem ao SGML (Standard Generalized Markup Language).

A própria linguagem HTML (Hypertext Markup Language), base para a criação de qualquer página da Internet, foi criada com base no SGML, sendo seu surgimento em 1989.

Com a criação da W3C (World Wide Web Consortium), em 1994, as regras para criação de HTML foram formalizadas, padronizando a codificação das páginas, mas o simples uso de HTML não cumpria com todas as necessidades da Internet.

Surgindo em 1996, a sintaxe XML foi publicada como uma recomendação da W3C, em 1998, sendo revisada em 2000, e tornou-se um padrão de grande utilização até mesmo na criação de páginas, como no uso de XHTML (eXtensible Hypertext Markup Language).

A sintaxe XML não é uma linguagem específica, com comandos definidos, e nem define uma gramática, mas apenas as regras mínimas de escrita. Entre as regras de escrita do XML encontram-se:

(figura representativa da sintaxe XML)

• Todo elemento tem que apresentar etiqueta de fechamento.

• Valores de atributos devem ser colocados entre aspas ou apóstrofes.

• A nomenclatura de elementos e atributos diferencia maiúsculas e minúsculas. • Os nomes podem conter qualquer caractere alfanumérico ou ideograma, ponto, hífen e sublinhado, mas não podem começar por ponto, hífen ou número.

• Não é permitido o uso de espaços no nome do elemento ou atributo.

• Nós de texto não podem utilizar caracteres reservados, como sinais de menor e maior.

• Os elementos devem estar corretamente aninhados. • Qualquer documento apresenta apenas um elemento raiz.

(Quadro representativo do correto e do incorreto sobre a sintaxe XM)

Documento XML

Todo documento XML pode ser interpretado como uma árvore composta de um elemento raiz, elementos derivados, nós de texto, além de atributos para determinados elementos. Além destes, encontram-se na estrutura do XML os seguintes componentes:

Instruções de processamento, utilizadas apenas por processadores específicos de XML, sendo ignoradas por aqueles que não as utilizam. Uma instrução de processamento tipicamente presente é o prólogo do XML.

Comentários, os quais seguem a mesma sintaxe do HTML, e são ignorados pelos diversos processadores de XML.

Seções CDATA, as quais não são interpretadas segundo as regras sintáticas do XML, se comportando como texto corrido.

Entidades, utilizadas para a representação de caracteres especiais, aparecem em qualquer lugar do XML e são substituídas no processamento do mesmo. São extremamente úteis na substituição de caracteres especiais para os nós de texto.

Entidades

As entidades seguem a sintaxe &ENTIDADE; podem representar caracteres especiais ou elementos da tabela ASCII, como pode ser observado a seguir:

É comum nos arquivos XML haver a necessidade de diferenciar elementos com nomes iguais, mas que se aplicam a contextos diferenciados, e para tal deve ser utilizado o ferramental denominado Namespace.

Para o uso de um Namespace é utilizado na tag de abertura de um elemento a sintaxe xmlns:namespace prefix="namespace", onde namespace-prefix será o prefixo utilizado para diferenciar os elementos no XML, e Namespace propriamente dito se refere a uma URI, conforme especificado pela W3C.

Exemplo da W3C

Utilizando o exemplo fornecido pela própria W3C, considere os dois trechos XML seguintes:

Fragmento de informação constituinte de uma tabela HTML

Colocando os dois trechos em um mesmo arquivo ocorreria o conflito de nomes com relação ao elemento table, onde o significado de cada um é distinto. Isso é resolvido com a utilização de Namespace.

Embora o Namespace seja definido a partir de uma URI, os parsers não irão acessar o endereço especificado na hora de interpretar o XML. Essa URI serve basicamente para tornar o identificador do Namespace único.

Outra opção de escrita, inclusive a mais adotada, seria a definição dos Namespaces no elemento raiz.

Formas gramaticais em XML

Um documento XML bem formado é aquele que segue todas as regras de escrita. Em termos práticos, se não é bem formado não é XML. No entanto, um documento bem formado pode não ser útil, ou válido, para determinado contexto de aplicativo, pois o mesmo certamente exigirá um formato de dados compatível, segundo uma gramática específica, ou domínio do sistema. São duas as formas para definir gramáticas em XML:

DTD

• Apresenta uma sintaxe bastante simples, mas não segue o padrão do XML. • Não permite o uso de namespaces.

• Não permite a definição de estruturas de dados complexas. XSD

• Apresenta uma sintaxe mais complexa, dentro das regras do XML. • Permite a utilização de namespaces.

• Permite a definição de estruturas de dados complexas. Formas gramaticais em XML

Exemplo de DTD apresentado pela W3C (http://www.w3schools.com/dtd/):

<?xml version="1.0"?> <!DOCTYPE note [

<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)>

<!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]>

<note>

<to>Tove</to> <from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend</body> </note>

A seguir, um exemplo de XSD (XML Schema Datatype) apresentado pela W3C (http://www.w3schools.com/schema/):

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note">

<xs:complexType> <xs:sequence>

<xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence>

</xs:complexType> </xs:element>

</xs:schema>

Em termos gerais, devido à sua flexibilidade, o uso de XSD foi mais difundido, sendo utilizado em várias plataformas tecnológicas da atualidade, como nos webservices.

Linguagens de transformação

Outra preocupação com relação aos dados presentes nos arquivos XML, além da definição de vocabulários adequados, é a possibilidade de transformar esses dados para algum outro formato de visualização ou exportação. Nesse ponto surgem as linguagens de transformação, como XSLT e XSL-FO, ambas seguindo a sintaxe XML para efetuar as transformações nos arquivos XML de origem. Hoje em dia, com a advento das mais diversas plataformas de acesso à web, como smartphones, tablets e TVs digitais, o conceito de design responsivo tem sido um elemento muito explorado no mercado. Como a mesma informação deve ser apresentada de diferentes formas, em diferentes dispositivos, as linguagens de transformação acabam fornecendo uma ótima solução para

evitar o retrabalho na construção de múltiplas interfaces para o mesmo software.

XSLT

O uso de XSLT é muito comum no controle da aparência visual de arquivos XML, quando disponibilizados em navegadores para web, como ocorre para os recursos de notícias RSS.

Uma estrutura comum nos sites da atualidade é composta de linguagem de dados XML, linguagem de estruturação XHTML ou HTML 5, linguagem de transformação XSLT e linguagem de formatação CSS, além das ações da página providas por Java Script e JSON, muitas vezes ainda apoiado em bibliotecas como JQuery UI. Os dados XML são transformados via XSLT para uma visualização XHTML-CSS ou HTML5-CSS.

Considere o arquivo XML a seguir:

Com a utilização de um arquivo XSL apropriado, como o apresentado a seguir, é possível controlar sua visualização no navegador.

XSLT

Os comandos do XSLT normalmente utilizam o prefixo xsl, porém nada impediria de se utilizar outro prefixo. A tabela seguinte apresenta alguns dos comandos disponíveis na sintaxe do XSLT.

Comando Utilização Exemplo

Output Define o formato de

saída

<xsl:output method="html" version="4.0"

encoding="UTF-8"/>

template Define o modelo a ser

aplicado quando determinado tipo de nó for encontrado <xsl:template match="/"> apply- template Aplica um modelo ao elemento corrente ou nós filhos do mesmo

<xsl:template match="message">

<h1>

<xsl:apply-templates select="*" mode="big"/>

</h1>

</xsl:template>

value-of Retorna o valor do nó <xsl:value-of select="title"/>

Variable Declara uma variável

local

<xsl:variable name="header">

<tr><th>Element</th><th>Description</th></tr>

</xsl:variable>

copy-of Copia o valor do nó <xsl:copy-of select="$header" />

for-each Repete para cada nó

do conjunto selecionado

<xsl:for-each select="catalog/cd">

Sort Ordena a saída para

um conjunto for-each

<xsl:for-each select="catalog/cd">

<xsl:sort select="artist">

If Testa uma condição

para o elemento corrente

<xsl:if test="price &gt; 10">

<li><xsl:value-of select="title"/></li>

</xsl:if>

choose, when e otherwise

Trabalham em

conjunto, iniciado por choose, e definindo qual ação executar quando satisfeita a condição de when, e o que fazer quando nada for satisfeito através de otherwise

<xsl:choose>

<xsl:when test="price &gt; 10">

<td bgcolor="#ff00ff"> Preço normal </td> </xsl:when> <xsl:otherwise> <td>Oferta!</td> </xsl:otherwise> </xsl:choose>

Uma listagem completa dos comandos do XSLT está disponível no endereço <http://www.w3schools.com/xsl/xsl_w3celementref.asp>.

XSL-FO

Quanto ao XSL-FO (XML Stylesheet Language - Formatting Objects), este destina-se à criação de documentos em formatos voltados para plataformas específicas, como arquivos PDF, por exemplo.

A sintaxe XSL-FO apresenta um conjunto muito rico de opções para formatação, paginação e tipografia de documentos.

O nó raiz da árvore de objetos de formatação deve ser um fo:root. Os filhos possíveis do fo:root são um único fo:layout-master-set, opcionalmente

fo:declarations e fo:bookmark-tree, e uma sequência de um ou mais elementos fo:page-sequence-wrapper e fo:page-sequence. Enquanto fo:layout-master-set define a geometria e sequenciamento das páginas; os filhos do fo:page- sequence, que são chamados de fluxos (contidos em fo:flow e fo:static- content), fornecem o conteúdo que é distribuído nas páginas.

Os comandos anteriores fazem parte do aspecto de paginação e formatação do XSL-FO, sendo a árvore completa apresentada a seguir.

Também são utilizados vários atributos que permitem justificar o texto ou alterar a fonte e caracteres (internacionalização), como font-selection-strategy, font-weight e country.

Também são utilizados vários atributos que permitem justificar o texto ou alterar a fonte e caracteres (internacionalização), como font-selection-strategy, font-weight e country. Um exemplo de arquivo de transformação XSL-FO é apresentado a seguir. <?xml version="1.0" encoding="UTF-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="HelloWorld"> <fo:region-body/> </fo:simple-page-master>

</fo:layout-master-set>

<fo:page-sequence master-reference="HelloWorld"> <fo:flow flow-name="xsl-region-body">

<fo:block font-family="Arial" font-size="18pt"> 1. Primeiro Exemplo

</fo:block>

<fo:block margin-left="10mm" font-family="Arial" font-size="18pt"> 2. Segundo Exemplo

</fo:block>

<fo:block margin-left="10mm" margin-top="20mm" font-family="Times New Roman" font-size="24pt"> 3. Terceiro Exemplo </fo:block> </fo:flow> </fo:page-sequence> </fo:root>

Normalmente, esse tipo de documento é gerado com o uso de XSLT, isso devido às informações dinâmicas providas via XML, como no pequeno trecho de código abaixo: <xsl:template match="/"> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:apply-templates /> </fo:root> </xsl:template>

Através de um aplicativo como o FOP (Formatting Objects Processor), desenvolvido em Java e hoje conhecido como Apache FOP, é possível a conversão das fontes FO (Formatting Objects) em formatos diversos, entre eles: PDF, ASCII, PostScript, SVG e RTF.

Outras tecnologias XML

Vários outros exemplos de uso de XML podem ser encontrados no mercado, incluindo tecnologias que foram absorvidas pelo HTML 5 na concepção de páginas segundo o foco da Web 2.0. Algumas dessas tecnologias são apresentadas a seguir:

 SVG (Scalable Vector Graphics), para a construção de gráficos vetoriais

em XML;

 XMI (XML Metadata Interchange), utilizado para troca de informações de

metadados entre ferramentas de modelagem UML (Unified Modeling Language);

 MathML, utilizado na representação de modelos matemáticos;

 SOAP (Simple Object Access Protocol), protocolo de transmissão de

dados utilizado por Web Service;

 SMIL (Synchronized Multimedia Integration Language), para a

construção de apresentações multimídia interativas;

 CML (Chemical Markup Language), para a formulação de elementos

químicos.

Atividade proposta

Como atividade de fixação, crie uma página XSLT para apresentar o XML seguinte no formato visual desejado.

Referências

Morrison, M. Brownell, D. Boumphrey, F. XML Unleashed, Editora Sams. 1999.

Berglund, A. Extensible Stylesheet Language (XSL) Version 1.1. 2006. http://www.w3.org/TR/xsl/

Valentine, C. Dykes, L. Tittel, E. Understanding XML Schema, SYBEX, 2001. http://www.eyrolles.com/Chapitres/9780782140453/chap05.pdf

Exercícios de fixação

Questão 1

"Elemento do XML que não é interpretado segundo as regras sintáticas do mesmo, se comportando como texto corrido."

Esta é a definição de que componente da sintaxe XML? a) Nó de texto b) Seção CDATA c) Atributo d) Comentário e) Instrução de Processamento Questão 2

Uma forma de definir gramáticas XML com sintaxe bastante simples, porém sem uso de namespaces e sem a possibilidade de trabalhar com estruturas de dados complexas, seria através de:

a) CSS b) XSD c) XSL d) DTD e) RPC Questão 3

Quando há, nos arquivos XML, a necessidade de diferenciar elementos com nomes iguais, mas que se aplicam a contextos diferenciados, qual componente deverá ser utilizado?

a) Entidade b) Comentário c) Nó de Texto d) Atributo e) NameSpace

Questão 4

As entidades seguem a sintaxe &ENTIDADE; e podem representar caracteres especiais ou elementos da tabela ASCII. Qual das entidades abaixo não está corretamente descrita em termos do que representa?

a) &amp;#65; significa "espaço" b) &amp;lt; significa "menor que" c) &amp;gt; significa "maior que" d) &amp;amp; significa "&"

e) &amp;apos; significa "apóstrofe" Questão 5

Uma forma de definir gramáticas XML com uso da própria sintaxe XML e namespaces, e com a possibilidade de trabalhar com estruturas de dados complexas, seria através de:

a) CSS b) XSD c) XSL d) DTD e) RPC Questão 6

Qual o comando do XSL utilizado de forma a repetir um determinado trecho para cada nó do conjunto correntemente selecionado?

a) for-each b) select c) if d) choose e) when Questão 7

Qual o nome da tecnologia utilizada para a construção de gráficos vetoriais em XML?

a) MathML b) CML c) XMI d) SMIL e) SVG Questão 8

Tecnologia preparada para a geração de arquivos binários, destinada à criação de documentos em formatos voltados para plataformas específicas, como PDF: a) XSLT b) CML c) XSL-FO d) MathML e) SVG Questão 9

Para que serve o comando template no XSL? a) Define o formato da saída.

b) Define o modelo a ser utilizado para determinado tipo de nó. c) Aplica um modelo ao elemento corrente ou filhos do mesmo. d) Retorna o valor do nó.

e) Declara uma variável. Questão 10

Os elementos que efetivamente fornecem o conteúdo a ser distribuídos nas páginas, segundo o XSL-FO seriam:

a) fo:root e fo:layout-master-set

b) fo:page-sequence e fo:bookmark-tree c) fo:layout-master-set e fo:declarations d) fo:root e fo:sequence

No documento 14785589987745587 (páginas 89-112)