Alavancando o pureXML em um Aplicativo Flex de Microblog, Parte 1: Ativando serviços da Web com o DB2 pureXML

Configure o banco de dados para o aplicativo de microblog de amostra com IBM DB2 Express-C e IBM Data Studio

Os recursos pureXML® do IBM DB2® permitem que você armazene XML na forma nativa em um banco de dados, sem nenhuma modificação, e que aplicativos Adobe Flex leiam XML diretamente e usem os dados para preencher as interfaces com o usuário do Flex. Nesta série de artigos de três partes, você criará um aplicativo de microblog que tira vantagem do pureXML, serviços da Web e Adobe Flex; e também permitirá que você publique suas atualizações do microblog no Twitter.

Joe Lennon, Software developer, Core International

Joe Lennon photoJoe Lennon, 24 anos, é desenvolvedor de software em Cork, Irlanda. Autor do livro Beginning CouchDB da Apress (ainda não publicado), tem colaborado com o IBM developerWorks com diversos artigos técnicos e tutoriais. Em seu tempo livre, Joe gosta de jogar futebol, mexer em pequenos mecanismos e bater seus recordes em seu Xbox 360.


nível de autor Contribuidor do
        developerWorks

03/Nov/2009 (Primeira publicação 06/Out/2009)

Sobre esta série

Acrônimos usados frequentemente

  • API: Application program interface
  • DVD: Digital Versatile Disc ou Digital Video Disc
  • HTML: Hypertext Markup Language
  • HTTP: Hypertext Transfer Protocol
  • IDE: Integrated Development Environment
  • JRE: Java™ Runtime Environment
  • MXML: Minimal XML
  • REST: REpresentational State Transfer
  • RSS: Really Simple Syndication, ou Organização Bem Simples
  • SDK: Software Development Kit
  • SQL: Structured Query Language
  • URL: Uniform Resource Locator
  • XML: Extensible Markup Language, ou Linguagem de Marcação Extensível

A Parte 1 aborda os serviços da Web e como ativá-los usando DB2 pureXML enquanto você configura o DB2® Express-C 9.7 em um sistema Microsoft® Windows®. Neste artigo, você criará um banco de dados, especificamente, o banco de dados por trás do aplicativo de microblog de amostra. A seguir, você descobrirá como apresentar os dados no banco de dados do microblog como um serviço da Web usando pureXML. Por fim, verá como usar um navegador da Web para testar se o serviço da Web funciona.

Na Parte 2, você aprenderá sobre o Adobe® Flex e como ele se comporta com os dados apresentados como XML pelos serviços da Web. Você instalará o Flex SDK em um ambiente Windows e aprenderá os fundamentos de MXML e ActionScript, e como compilá-los para compor um aplicativo Flex. Verá como criar uma interface com o usuário do aplicativo de microblog usando os componentes do Flex, e como testá-la com alguns dados XML de amostra. Depois de concluir a interface com o usuário, você a integrará com o serviço da Web do DB2 pureXML criado na Parte 1.

O Flex é um método excelente para criar aplicativos da Internet complexos, porém, e se você quiser apresentar visualizações diferentes dos seus dados? Na Parte 3, você aprenderá a usar os serviços da Web do pureXML para publicar entradas de microblog em uma página HTML. A organização é um aspecto importante de qualquer aplicativo de mídia social, assim, você descobrirá como publicar entradas do microblog com um feed RSS. Por fim, aprenderá a integrar o aplicativo de microblog com o Twitter, permitindo que suas atualizações sejam publicadas no Twitter e no seu próprio aplicativo.

Até o final desta série, você terá as ferramentas e o conhecimento necessário para construir um aplicativo de microblog com diversos recursos que possa ser facilmente expandido ou modificado para atender aos requisitos da sua organização.


Pré-requisitos

Instalar o servidor de banco de dados DB2—a edição Express-C do DB2. Para obter informações sobre como fazer download e instalar o DB2 Express-C, consulte Recursos no final deste artigo. Você também utilizará o IBM® Data Studio e o WebSphere® Application Server Community Edition (doravante denominado Community Edition) para implementar os serviços em um servidor da Web. Consulte Recursos para obter informações sobre download.


Introdução ao DB2 pureXML

O IBM DB2 é um sistema de gerenciamento de banco de dados relacional que executa em uma ampla variedade de dispositivos e sistemas operacionais. Está disponível em várias edições, desde o banco de dados Express-C no nível da entrada até a Enterprise Server Edition. Neste artigo, você utilizará a edição Express-C, devido à sua simplicidade de instalação e configuração, e de estar disponível como um download ser gratuito. O DB2 Express-C é muito similar em conceito com o Oracle Database XE (Express Edition) e o Microsoft SQL Server Express. Diferente da concorrência, no entanto, o DB2 Express-C não inclui restrições sobre o número de usuários do banco de dados ou o tamanho do banco de dados.

Embora o DB2 Express-C seja o banco de dados básico no nível de produção da família de produtos do DB2, ele não inclui suporte para pureXML—um recurso do DB2 que permite armazenar dados XML nativamente no banco de dados. O aspecto importante do pureXML é que ele armazena, no banco de dados, XML na sua forma nativa, em vez de convertê-lo ou armazená-lo como texto simples. E faz tudo isso de modo transparente, assim não é necessário se preocupar sobre com se os dados de trabalho são armazenados em tipos de dados SQL tradicional ou XML. Além disso, todos os dados XML são protegidos pela mesma segurança e controles de integridade de dados que protegem os dados relacionais tradicionais. Isso permite rápido desenvolvimento dos aplicativos que requerem dados XML, dados relacionais ou um conjunto híbrido de dados XML e relacionais.


Introdução aos serviços da Web do DB2

Aplicativos modernos são frequentemente implementados usando uma service-oriented architecture (SOA) com serviços da Web que fornecem meios padronizados e independentes de plataforma/tecnologia para expor a lógica comercial por meio da Internet ou intranet. Os serviços da Web são disponibilizados, na maioria das vezes, usando:

  • Simple Object Access Protocol (SOAP), um broker de mensagens baseado em XML,
  • Web Services Description Language (WSDL), uma linguagem de descrição de Interface XML padronizada
  • Universal Description Discovery and Integration (UDDI), uma estrutura de diretórios de serviço da Web

É possível usar o IBM WebSphere Studio para criar serviços da Web que apresentem os dados em um banco de dados DB2. O WebSphere Studio apresenta ferramentas para criar interfaces WSDL para dados DB2 e publicar serviços da Web diretamente para um registro UDDI. Esses serviços da Web podem ser implementados na Web por meio do IBM WebSphere Application Server. Felizmente, a infraestrutura dos serviços da Web do DB2 cuida de todo o código Java Database Connectivity (JDBC) necessário para interagir com os dados DB2.

O DB2 Web services Object Runtime Framework (WORF) ativa a geração automática de interfaces WSDL para um conjunto de operações do banco de dados definidas em um arquivo Document Access Definition Extension (DADx). Esse arquivo DADx é implementado, junto com o servidor Apache Axis SOAP, em um servidor de aplicativos adequado, por exemplo, o WebSphere Application Server. Depois de implementado, é possível acessar o serviço da Web usando qualquer cliente que possa consumir serviços da Web. Na Parte 2 desta série de artigos, você utilizará a plataforma Adobe Flex para consumir alguns serviços da Web do DB2.


Configurando o banco de dados do microblog

Uma vez concluída a instalação e fechado o instalador, o aplicativo DB2 First Steps será iniciado. Antes de abrir, no entanto, é possível que solicite a criação de perfil de navegador a fim de ativar o JavaScript e acesso a arquivos locais do DB2. Se você for solicitado a fazer isso, pressione Create profile. O aplicativo DB2 First Steps é parecido com a captura de tela na Figura 1.

Figura 1. Primeiras etapas do DB2
Screen capture of First steps for DB2 Database for Linux, UNIX, and Windows

Se desejar configurar o banco de dados de amostra, sinta-se à vontade. É possível usar o botão "Create new database" para iniciar um assistente para criação de bancos de dados DB2. Você não o utilizará, no entanto, visto ser necessário criar um banco de dados ativado por XML, que não pode ser criado usando o assistente. Ao terminar com o aplicativo DB2 First Steps, ele pode ser fechado. Em seguida, você criará um banco de dados DB2 para o seu aplicativo de microblog.

Para criar um novo banco de dados DB2, abra o DB2 Command Editor. Navegue para Start>Programs>IBM DB2>DB2COPY1 (Default)>Command Line Tools>Command Editor e, ao concluir o carregamento, você deve ver o DB2 Command Editor, como o ilustrado na Figura 2.

Figura 2. DB2 Command Editor
Screen capture of DB2 Command Editor with editor and result areas

Na área principal do editor (o espaço vazio abaixo da barra de ferramentas com os botões Play e Stop), insira a instrução a seguir e pressione Execute (o botão com o ícone de reprodução): create database mblog using codeset UTF-8 territory us.

Esse processo pode levar um minuto ou mais até ser concluído, assim, seja paciente. Depois da criação do banco de dados, você verá a mensagem "DB20000I The CREATE DATABASE command completed successfully" na janela de resultados. Agora que você criou o banco de dados, informe o DB2 Command Editor para conectar-se a ele. Insira o que segue na área do editor e pressione Execute novamente: connect to mblog

Se tudo correr bem, você obterá uma mensagem como "A JDBC connection to the target has succeeded", indicando que está conectado ao banco de dados mblog. Agora, crie uma nova tabela denominada status_updates, para armazenar as atualizações do aplicativo de microblog no formato XML. Insira a instrução na Listagem 1 na janela do editor e pressione Execute.

Listagem 1. Criando a tabela status_updates
create table status_updates (
    data        xml
)

Você receberá uma confirmação de que o comando SQL foi concluído com êxito, como na Figura 3.

Figura 3. Comando SQL concluído com êxito
Screen capture of result for successfully completed SQL command

Tente, agora, inserir alguns dados XML no banco de dados. Insira a instrução INSERT da Lista 2 na janela do editor no DB2 Command Editor.

Listagem 2. Inserindo uma atualização de status XML
insert into status_updates values (
    '<update display="true">
        <date_created>2009-08-06T21:20:19</date_created>
        <text>Hello World!</text>
    </update>'
)

Agora, pressione Execute e, mais uma vez, deverá obter uma resposta informando que o comando foi concluído com êxito.

Um dos problemas com a não inserção desses dados nas colunas RDBMS regulares é a ausência de regras definidas—não há tipos de dados, identificadores NOT NULL, e assim por diante. É possível inserir com a mesma facilidade um documento XML sem qualquer relevância e ele seria aceito. É aí que entra o esquema XML. Um esquema XML pode definir um formato aceitável para os dados XML. Você pode validá-los, então, em relação a esse esquema ao executar uma instrução insert.

Para criar um esquema XML, simplesmente abra um editor de texto simples (como o Bloco de notas) e crie um novo arquivo. O local para salvar é importante e, para fins de simplicidade, salve o esquema na pasta C:\xmlschemas\updates.xsd. Se você escolher um local diferente, não se esqueça de refletir essa alteração quando registrar o esquema. Insira o código da Listagem 3 no seu arquivo e salve-o.

Listagem 3. O esquema XML - updates.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="update">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="date_created" type="dateTime"/>
        <xs:element name="text" type="normalizedString"/>
      </xs:sequence>
      <xs:attribute name="display" type="xs:boolean" default="true"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

O esquema na Listagem 3 define um elemento update, que é um elemento composto que integra dois subelementos:

  • date_created - Um elemento dateTime
  • text - Um elemento normalizedString

Uma cadeia de caracteres normalizada simplesmente informa o processador XML para remover qualquer espaço em branco extra desnecessário que envolva a cadeia durante o processamento de dados.

Agora que você tem o esquema XML armazenado em um arquivo, precisará registrá-lo no DB2 de modo que ele saiba como validar os dados XML quando eles forem inseridos no banco de dados. Na área do editor do DB2 Command Editor, insira a instrução da Listagem 4.

Listagem 4. Registro do esquema XML com o DB2
register xmlschema 'http://mblog.example.com' from 
'C:/xmlschemas/updates.xsd' as mblog.status_update complete

Se o esquema XML estiver registrado corretamente, você receberá a resposta: "DB20000I The REGISTER XMLSCHEMA command completed successfully", como ilustrado na Figura 4.

Figura 4. Esquema XML registrado com êxito
Screen capture of result for successfully registered XML schema

A esta altura, é bom mencionar que definir um esquema XML e registrá-lo no banco de dados não significa que qualquer dado XML inserido será validado automaticamente em relação a esse esquema. Em outras palavras, é necessário validar manualmente o XML ao executar um comando INSERT. Faça isso com a função XMLVALIDATE como na Listagem 5.

Observação: Como alternativa, é possível criar um acionador de banco de dados para capturar cada INSERT na tabela e informá-lo para validar os dados como XML usando a função XMLVALIDATE antes de executar o INSERT. Neste artigo, você estará envolvido apenas com validação usando suas próprias instruções INSERT.

Listagem 5. Validação dos dados XML em relação ao esquema XML
insert into status_updates values (
    xmlvalidate(xmlparse(document('
    <update display="true">
        <date_created>2009-08-09T21:09:10</date_created>
        <text>This should validate!</text>
    </update>
    ')) according to xmlschema id mblog.status_update)
)

Porque o XML na Listagem 5 é válido de acordo com o seu esquema, você deverá receber uma resposta de que o comando SQL foi concluído com êxito. Agora veja o que acontece se você tentar inserir alguns dados inválidos. Na Listagem 5, altere o texto entre as tags <date_created> e </date_created> para This is not a valid datetime. Agora, tente executar a instrução novamente. Desta vez, você obterá a mensagem de erro "SQL16105N Incorrect XML data". O DB2 fornece algumas informações úteis sobre o erro e um caminho sugerido para corrigi-lo—neste caso, "Correct the XML document and try the operation again". Agora que você validou os dados XML no seu banco de dados, descubra o que fazer para consultá-los.

É possível consultar os dados XML armazenados em um banco de dados DB2 9 usando duas linguagens: SQL (SQL/XML) e XQuery. É possível inclusive usar consultas híbridas que combinam expressões SQL e XQuery. Primeiro, execute uma consulta SQL para obter os conteúdos da tabela status_updates de volta. No DB2 Command Editor, insira a seguinte instrução SQL: select data from status_updates.

Quando você pressiona Execute, o Command Editor alterna para a visualização da guia Query Results e exibe uma estrutura tabular, com a coluna Data, um campo com o texto XML e um botão com três pontos. Esse botão está em realce na caixa na Figura 5.

Figura 5. Visualização dos resultados da consulta do DB2 Command Editor
Screen capture of the DB2 Command Editor Query Results View

Clique neste botão com três pontos para abrir o XML Document Viewer, como na Figura 6. Na guia Tree View, os dados XML são apresentados em uma estrutura em árvore e deve ser possível ver o atributo display e os dois subelementos date_created e text (expandidos de modo a exibir seus valores).

Figura 6. DB2 XML Document Viewer
Screen capture of the DB2 XML document viewer displaying values for date_created and text elements

O problema principal com o uso de instruções SQL para recuperar dados XML é que não é possível filtrar cláusulas (como a cláusula WHERE) para filtrar os dados XML. Também não é possível realizar agregações e junções nesses dados usando SQL. No entanto, é possível usar SQL com extensões XML (SQL/XML) para esses tipos de consultas.

Como seria de se esperar, o SQL/XML tem como objetivo ser um meio de estender a linguagem de consulta SQL para trabalhar com dados XML de maneira que as expressões SQL tradicionais não poderiam. Por exemplo, é possível usar o SQL/XML para pesquisar linhas na tabela, nas quais determinado elemento XML armazenado em uma coluna XML tenha um valor específico. Suponhamos que você queira executar uma contagem das linhas em que a coluna de dados XML possui um texto de elemento com o valor This should validate!. Se ele estiver armazenado em uma coluna VARCHAR típica na sua tabela DB2, será possível usar a seguinte instrução SQL da Listagem 6.

Listagem 6. Instrução SQL
select count(*) from status_updates
where text = 'This should validate!'

No entanto, como você armazena os dados text em um documento XML armazenado em uma coluna XML, não será possível usar essa instrução. Em vez disso, você pode usar a instrução SQL/XML da Listagem 7.

Listagem 7. Usando SQL/XML para filtrar dados XML
select count(*) from status_updates
where xmlexists('$u/update[text="This should validate!"]'
passing status_updates.data as "u")

A execução dessa instrução deve retornar um resultado igual a 1 na janela Query Results, como ilustrado na Figura 7.

Figura 7. Resultado da instrução SQL/XML
Screen capture of result for the SQL/XML statement

Para executar um teste simples nessa consulta, tente alterar o texto para algo incorreto e execute a consulta novamente. Desta vez, você obterá um resultado igual a zero. Agora, use o SQL/XML para retornar os elementos dos documentos XML do mesmo modo que uma tabela SQL tradicional poderia ser representada. Para fazer isso, use a função XMLTABLE. Insira a instrução na Listagem 8 na janela Command Editor.

Listagem 8. Utilizando XMLTABLE para formatar consultas SQL/XML
select t.date_created, t.text from status_updates su, 
xmltable('$u/update' passing su.data as "u"
columns date_created varchar(100) path 'date_created',
  text varchar(500) path 'text') as t

Executar essa consulta deverá retornar o resultado ilustrado na Figura 8. Na guia Query Results, você verá os valores dos elementos DATE_CREATED e TEXT.

Figura 8. Resultado da consulta XMLTABLE
Screen capture of the result of XMLTABLE query with values for DATE_CREATED and TEXT elements

Por fim, veja como é possível usar XQuery para recuperar os dados da sua tabela. Insira novamente a seguinte instrução na janela do editor de comandos: xquery db2-fn:xmlcolumn('STATUS_UPDATES.DATA').

É importante que a tabela e a coluna estejam em letras maiúsculas, ou a consulta não funcionará. Pressione Execute para retornar o resultado da consulta na área de resultados do comando, como ilustrado na Figura 9.

Figura 9. Resultado da instrução XQuery
Screen capture of the result of the XQuery statement for date_created and text elements

Antes de concluir esta seção, use XQuery para filtrar os dados XML e retornar um elemento específico apenas. Neste caso, você retornará apenas o elemento de texto, e ele será filtrado pelo elemento date_created (consulte Listagem 9).

Listagem 9. Filtrando XML usando XQuery
xquery
for $y in db2-fn:xmlcolumn('STATUS_UPDATES.DATA')/update
where $y/date_created="2009-08-09T21:09:10"
return $y/text

É possível ver o resultado esperado dessa consulta na Figura 10.

Figura 10. Resultado da filtragem da instrução XQuery
Screen capture of result of filtering XQuery statement for text elements

Assim, agora que você tem a configuração do banco de dados do microblog e adquiriu alguma experiência inserindo e recuperando dados XML, é possível avançar e criar alguns serviços da Web que trabalhem com esses dados.


Apresentando os dados do microblog usando os serviços da Web

Para criar serviços da Web, você usará o IBM Data Studio e o WebSphere Application Server Community Edition para implementar esses serviços em um servidor da Web. Primeiro, instale a Community Edition. Acesse http://www.ibm.com/developerworks/downloads/ws/wasce/ e clique em Download now para fazer download do archive de configuração. Será necessário usar o seu ID IBM para se conectar e fazer download do pacote. Faça download da versão correta para o seu sistema operacional (instalei no Windows para os fins deste artigo).

Quando o instalador carregar, pressione Next para ir para a tela License Agreement. Leia a licença, selecione I accept the terms of the License Agreement e pressione Next para continuar. Aceite o diretório de instalação padrão e pressione Next. Revise o resumo da instalação e clique em Install para começar a instalação. Quando a configuração for concluída, pressione Done para sair do instalador. Neste ponto, isso é tudo que você necessita fazer com a Community Edition. O Data Studio cuidará da ativação do Application Server posteriormente quando você implementar seus serviços da Web.

Agora que a Community Edition está instalada, instale o Data Studio (consulte Recursos para obter o link de download. Faça download do pacote IDE como realçado na Figura 11. Esse pacote inclui todos os recursos necessários para criar e implementar serviços da Web.

Figura 11. Download do pacote IDE do Data Studio
Screen capture of URL to Download Data Studio IDE package

Para acessar a área Downloads, efetue login com o seu ID IBM. Na página de download, selecione a oferta correspondente ao seu sistema operacional (Windows foi usado neste artigo) e clique em Continue. É possível que você receba uma solicitação para informar alguns detalhes descrevendo como pretende usar o software. Depois de preenchê-los, na tela subsequente, marque a caixa ao lado de IBM Data Studio (IDE) Install e pressione no botão Download Now para iniciar o processo de download. O arquivo tem 687 megabytes, assim, será necessário ter uma conexão com a Internet de alta velocidade (ou muita paciência!).

Quando o download for concluído, extraia o archive e execute o arquivo setup.exe para ativar o instalador do Data Studio. Na tela inicial, selecione o idioma de instalação e pressione OK para abrir o aplicativo Launchpad.

Na tela subsequente, navegue pelas informações fornecidas em cada uma das seções à esquerda e, quando estiver pronto, clique em Install Product para executar o Installation Manager. Na tela Install Packages, aceite as seleções padrão e pressione Next para continuar (veja a Figura 12).

Figura 12. IBM Installation Manager - pacotes de instalação
Screen capture of IBM Installation Manager - Install Packages

Agora você será solicitado a ler os Contratos de Licença. Quando estiver pronto para continuar, selecione a opção I accept the terms in the license agreements e clique em Next. Na tela Location, aceite as opções padrão e pressione Next para continuar. Na tela subsequente, aceite a opção padrão (Create a new package group) e o diretório de instalação e clique em Next. Você terá a oportunidade de optar por estender uma instalação do Eclipse IDE existente, caso haja alguma disponível. Deixe as opções como estão e pressione Next.

Na seção Features, primeiro você será consultado sobre que Traduções deseja instalar. Inglês é a seleção padrão e não pode ser desmarcada. Para instalar idiomas adicionais, marque todos os que desejar. Caso contrário, simplesmente clique em Next. Agora, você terá a opção de selecionar que recursos instalar. Novamente, deixe como está e pressione em Next para continuar. Finalmente, você chegou à tela Installation Summary na Figura 13. Este é o momento de revisar suas seleções e voltar e alterar quaisquer itens necessários. Quando estiver pronto, pressione em Install para iniciar o procedimento de instalação.

Figura 13. IBM Installation Manager - Resumo
Screen capture of IBM Installation Manager - Summary with selected packages

Quando a instalação estiver concluída, você verá uma tela (como a ilustrada na Figura 14) indicando que a instalação foi bem-sucedida. Pressione Finish para iniciar o IBM Data Studio.

Figura 14. IBM Installation Manager - Instalação concluída
Screen capture of IBM Installation Manager - Installation Complete

Quando o Data Studio iniciar, você poderá ser solicitado a selecionar uma área de trabalho. Selecione a opção Use this as the default and do not ask again e pressione OK (veja a Figura 15).

Figura 15. IBM Data Studio - Ativador da área de trabalho
Screen capture of IBM Data Studio - Workspace Launcher

A primeira tela exibida no Data Studio será a Welcome. Clique no ícone seta, na parte superior central da tela (em realce na Figura 16) para fechar a tela e entrar na área de desenvolvimento principal.

Figura 16. IBM Data Studio - Tela de boas-vindas
Screen capture of IBM Data Studio - Welcome Screen

Na área inferior esquerda da tela principal do Data Studio, você verá o Data Source Explorer, que exibe no momento as conexões de banco de dados disponíveis. Se você acompanhou este artigo desde o princípio, o banco de dados MBLOG deve aparecer nessa área. Clique com o botão direito do mouse na conexão MBLOG para abrir o menu de contexto e selecione Connect. Uma nova janela, com as propriedades da conexão do banco de dados, será exibida e você será solicitado a inserir um nome de usuário. Insira o nome do usuário e a senha do banco de dados (os mesmos que você criou na tabela status_updates). Selecione a caixa de opções Save password e pressione Test Connection. Se a conexão estiver funcionando corretamente, você verá a mensagem "Ping succeeded!", como ilustrado na Figura 17.

Figura 17. Configurando a conexão do banco de dados
Screen capture of the Driver Properties window afte you configure and test the database connection

Pressione OK para fechar a janela Properties. Agora, o Data Studio iniciará uma conexão com o banco de dados MBLOG e ele expandirá a conexão com o banco de dados com duas novas opções: Instance e MBLOG. Clique no ícone de expansão à esquerda da opção MBLOG para exibir os diferentes tipos de objetos no banco de dados (Buffer Pools, Groups, etc.). Agora que você estabeleceu uma conexão com o banco de dados, é necessário criar um novo projeto de desenvolvimento.

Selecione File>New>Data Development Project para abrir a janela de diálogo New Project. Você será solicitado a informar o nome do projeto, informe Microblog e pressione Next. Na tela subsequente, você será solicitado a selecionar uma conexão de banco de dados existente ou criar uma nova conexão. Selecione a conexão MBLOG e pressione Finish para fechar o diálogo (veja a Figura 18).

Figura 18. Seleção da conexão do banco de dados
Screen capture of the Select connection window with MBLOB selected

Agora você será levado de volta à área de trabalho principal do Data Studio. No alto à esquerda, você verá que Microblog agora é uma opção na área de janela Data Project Explorer. Clique no ícone de expansão à esquerda dessa opção para exibir as diferentes partes do projeto (pacotes PL/SQL, scripts SQL, etc.).

Agora, você criará um script SQL que simplesmente consultará a tabela status_updates e retornará os dados XML armazenados em cada coluna de dados da linha. Nas opções que você acabou de expandir, clique com o botão direito em SQL Scripts e selecione New>SQL or XQuery Script. Isso abrirá uma janela de diálogo solicitando o nome do script e como você deseja editá-lo. Insira getAllUpdates como nome e pressione Finish.

O arquivo getAllUpdates.sql será criado e aberto na janela principal do editor. Digite a seguinte instrução nessa janela: select data from "MBLOG".status_updates

Selecione File -> Save para salvar o arquivo. Para testar a instrução SQL, pressione F5 para executar o script. Os resultados serão exibidos na guia SQL Results na parte inferior da tela.

Em seguida, crie um procedimento armazenado que será utilizado para inserir uma nova linha na sua tabela de banco de dados. Na área de janela Data Project Explorer, na parte superior esquerda da janela, clique com o botão direito do mouse em Stored Procedures abaixo do projeto Microblog. Selecione New>Stored Procedure para abrir a janela de diálogo e criar um novo procedimento armazenado. Atribua-lhe o nome insert_update, selecione PL/SQL na lista suspensa Language e pressione Finish (veja a Figura 19).

Figura 19. Novo procedimento armazenado
Screen capture showing new stored procedure, insert_update

Na tela Parameters, clique no botão Add para adicionar um novo parâmetro. Na janela pop-up, deixe o modo Parameter como In e atribua-lhe um nome text. Ele deve ter o tipo PL/SQL VARCHAR com o comprimento igual a 500. Pressione Add para adicionar o parâmetro ao procedimento.

O procedimento INSERT_UPDATE será salvo na seção Stored Procedures e aberto na janela Editor. Modifique o código de modo que ele fique idêntico ao exibido na Listagem 10. Não se esqueça de substituir MBLOG pelo esquema em que a tabela status_updates está armazenada.

Listagem 10. Código do procedimento armazenado INSERT_UPDATE
CREATE OR REPLACE PROCEDURE INSERT_UPDATE(IN c_text VARCHAR(500), IN display VARCHAR(5))
LANGUAGE SQL
BEGIN
    INSERT INTO "MBLOG".status_updates(data) VALUES(
    XMLDOCUMENT(XMLELEMENT(
        name "update",
        XMLATTRIBUTES(display as "display"),
        XMLFOREST(
        replace(varchar_format(current timestamp, 'YYYY-MM-DD HH24:MI:SS'), 
' ', 'T') as "date_created",
        text as "text"
)
    ))
    );
    RETURN 1;
END

Agora, implemente o procedimento armazenado no banco de dados para testá-lo. Clique com o botão direito do mouse na opção INSERT_PROCEDURE, na área de janela Data Project Explorer e selecione Deploy. No banco de dados Target, selecione Use current database e verifique se o esquema Target correto está selecionado. Pressione Finish para compilar o procedimento. No Data Source Explorer, navegue para baixo no esquema até localizar Stored Procedures e o procedimento INSERT_UPDATE que você acabou de compilar. Clique com o botão direito do mouse e selecione Run. Isso abrirá a caixa de diálogo Specify Parameter Values. No parâmetro c_text, insira o valor Testing procedure, e no parâmetro c_display, insira true. Pressione OK para compilar o procedimento. Se você seguiu este plano, receberá a mensagem "Run completed". Agora, alterne para o script SQL getAllUpdates e pressione F5 novamente. Desta vez, você verá a linha recentemente incluída que você acabou de criar usando o procedimento armazenado.

Você está pronto para criar alguns serviços da Web. No Data Project Explorer, clique com o botão direito do mouse em Web Services e selecione New Web Service. Isso abrirá a caixa de diálogo New Web Service na Figura 20. Verifique se o projeto Microblog está selecionado, atribua-lhe o nome StatusUpdates e altere o Namespace URI para urn:updates.

Figura 20. Novo serviço da Web
Screen capture of of the Edit Web Service window with a new Web service

Agora, você incluirá o script SQL getAllUpdates.sql no serviço da Web. No Data Project Explorer, selecione o script SQL getAllUpdates.sql e arraste-o para o serviço da Web StatusUpdates. Isso criará uma operação getAllUpdates dentro do serviço da Web StatusUpdates. Em seguida, capture o procedimento armazenado INSERT_UPDATE e solte no mesmo lugar. Você deve ter, agora, duas operações no serviço da Web StatusUpdates: getAllUpdates e INSERT_UPDATE. (veja a Figura 21)

Figura 21. Operações do serviço da Web StatusUpdates
Screen capture of StatusUpdates Web Service operations

Seu próximo passo é criar uma instância de servidor da Web em que seja possível implementar o serviço da Web recentemente criado. No Data Studio, selecione Window>Show View>Other e, na caixa de diálogo Show View, selecione Server e então Servers. Agora, pressione OK e a guia Servers será exibida na sua área de trabalho (veja a Figura 22).

Figura 22. Exibição da visualização Servers
Screen capture of Show view for servers

A guia Servers agora deve estar ativa na parte inferior da janela Data Studio. Clique com o botão direito em uma área vazia e selecione New>Server para abrir o assistente New Server. Na primeira tela do assistente, aceite as opções padrão como listado na Figura 23.

Figura 23. Janela Define a New Server
Screen capture of Define a New Server window with defalult options selected

As opções padrão para o servidor são:

  • host name: localhost
  • server type: IBM WASCE v2.1 Server
  • name: IBM WASCE v2.1 Server at localhost

Pressione Avançar. Na janela New Server - New IBM WASCE v2.1 Runtime, você será solicitado a selecionar o local de instalação do JRE e do WASCE. Selecione os valores apropriados e pressione Next (veja a Figura 24).

Figura 24. Selecione JRE e WASCE
Screen capture of selected locations for JRE and WASCE

Os valores selecionados são:

  • JRE: jdk
  • Application Server installation Directory: C:\Program Files\IBM\WebSphere\AppServerCommunityEdition

Nas demais telas do diálogo New Server, simplesmente aceite os padrões e pressione Next. Ao atingir a tela Add and Remove Projects, pressione Finish. Agora, inicie o servidor da Web para testar sua validade. Clique com o botão direito do mouse na instância que você acabou de incluir na guia Servers e escolha a opção Start. Isso pode levar alguns minutos, seja paciente. A guia Console fechará quando o procedimento estiver concluído. Na guia Servers, você verá que o Server está no estado "Started", conforme ilustrado na Figura 25.

Figura 25. Servidor da Web iniciado
Screen capture of the Server tab with the Web server started

Com o serviço da Web definido e uma instância do servidor da Web ativa e em execução, é possível implementar o serviço da Web no servidor da Web. No Data Project Explorer, clique com o botão direito do mouse no serviço da Web StatusUpdates e selecione Build and deploy. Isso abrirá o assistente Deploy Web Service. Nessa tela, selecione o botão de rádio Server e verifique se v2.1 Server at localhost está selecionado na lista suspensa. Assegure que Register database connection with Web server esteja selecionado e que os protocolos de mensagem REST e SOAP over HTTP também estejam marcados. Quando estiver pronto, verifique se as suas seleções correspondem às ilustradas na Figura 26 e pressione o botão Finish para implementar o serviço da Web.

Figura 26. Diálogo Deploy Web Service
Screen capture of Deploy Web Service dialog

Os valores da implementação selecionados são:

  • Web server, Type: WebSphere Application Server Community Edition, version 2 (all releases)
  • Web server, Server: IBM WASCE v2.1 Server at localhost
  • Data handler, Data handler: JDBC
  • Data handler, Register database connection with Web server: selected
  • Message protocols, REST (Web access): selected
  • Message protocols, SOAP over HTTP: selected
  • Parameters, Name: artifact.contextRoot and Value: MicroblogStatusUpdates
  • Parameters, Name: artifact.soapEngine and Value: APACHE_AXIS_1_4
  • Parameters, Name: artifact.soapEngineDirectory and Value: <Use .jar files installed on Web server>

Parabéns, você não obteve nenhuma mensagem de erro, o seu serviço da Web foi implementado com êxito! Na seção subsequente, você verificará que ele está funcionado como o esperado. Se tiver problemas para implementar o serviço da Web, verifique se usou os nomes de esquemas corretos no script SQL e no procedimento armazenado—essas são as causas mais comuns de falha na implementação.


Testando o serviço da Web do microblog

Agora que o seu serviço da Web está implementado, teste-o para ver se funciona. O Data Studio inclui um utilitário integrado para testar os serviços da Web, no entanto, nesta seção, você utilizará o navegador da Web para verificar se os serviços da Web funcionam. O principal motivo para isso é que, na Parte 2 desta série, você se conectará aos serviços da Web a partir de um aplicativo Adobe Flex, assim, convém ter certeza absoluta de que é possível executar essas APIs fora do Data Studio.

Acredito que o Firefox funciona melhor para exibição de dados XML, assim, tente utilizá-lo se for possível. Outros navegadores podem renderizar os dados de modo um pouco diferente ou obrigá-lo a primeiro fazer o download deles para o seu disco. Com o serviço da Web implementado, navegue até a URL a seguir: http://localhost:8080/MicroblogStatusUpdates/rest/StatusUpdates/getAllUpdates

Se o seu serviço da Web funcionar corretamente, você obterá uma resposta com a ilustrada na Figura 27.

Figura 27. Resposta do método getAllUpdates do seu serviço da Web
Screen capture of response from the getAllUpdates method of your Web service

Agora tente outro método para inserir alguns dados. Abra a seguinte URL: http://localhost:8080/MicroblogStatusUpdates/rest/StatusUpdates/insertUpdate?C_TEXT=It%20Works!&C_DISPLAY=true para retornar uma resposta como a ilustrada na Figura 28.

Figura 28. Resposta do método insertUpdate do seu serviço da Web
Screen capture of response from the insertUpdate method of your Web service

Agora, verifique se a linha foi realmente inserida navegando para a URL do método getAllUpdates uma vez mais. Na parte inferior da resposta, você deverá ver um elemento para a linha que acabou de inserir. Se tudo estiver funcionando corretamente, está pronto. Você criou um serviço da Web completamente operacional.


Resumo

Neste artigo, o primeiro da série, você aprendeu sobre o IBM DB2 pureXML e os serviços da Web. Instalou o DB2 Express-C e criou um banco de dados para o aplicativo de microblog de amostra. Aprendeu a interagir com os dados XML no banco de dados DB2 usando instruções SQL, SQL/XML e XQuery. Depois, instalou a Community Edition e o IBM Data Studio. Criou um script SQL e o procedimento armazenado para acessar os dados status_updates e adicionar novos dados a ele. Aprendeu a como apresentá-los como métodos em um serviço da Web e como implementá-los em um servidor Community Edition (WASCE). Por fim, viu como testar esses métodos usando solicitações RESTful HTTP GET no seu navegador da Web.

Na Parte 2, você construirá sobre o que aprendeu. Com o Adobe Flex, criará uma interface com o usuário de front-end atraente que emprega o serviço da Web criado neste artigo. Aprenderá tudo o que for necessário para criar e executar um aplicativo Flex e reunir dados do serviço da Web, desde a instalação do Flex SDK até o desenvolvimento da interface com o usuário e do código de back-end.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Information Management, Software livre
ArticleID=447804
ArticleTitle=Alavancando o pureXML em um Aplicativo Flex de Microblog, Parte 1: Ativando serviços da Web com o DB2 pureXML
publish-date=11032009