Criação de um aplicativo JSON e pureXML, Parte 2: Crie um Universal Services para pureXML que exponha JSON

Configure, implemente e teste JSON Universal Services em um armazenamento JSONx

O pureXML Universal Services para JSON (abreviado como JSON Universal Services neste artigo) é um conjunto de operações de banco de dados, incluindo inserção, atualização, exclusão e consulta, apresentadas como serviços da Web. Esses serviços possibilitam a um aplicativo persistir JSON em pureXML e consultá-lo facilmente através de HTTP com o WebSphere Application Server. Aprenda a configurar e testar o JSON Universal Services neste artigo.

3 de novembro de 2009 - Os autores adicionaram a seção Mais informações sobre operações do JSON Universal Services com a Tabela 3 para descrever os parâmetros, codificações e os tipos MIME associados às operações no JSON Universal Services,

Michael Schenker, 软件工程师, IBM  

Michael SchenkerMichael Schenker possui mestrado em ciência da computação pela University of Applied Science, em Leipzig/Alemanha. Ele tem sete anos de experiência profissional na IBM. Durante sua carreira, Michael trabalhou em diversos produtos relacionados a banco de dados, começando como estagiário para trabalhar em DB2 Information Integration com foco em wrappers não relacionais. Ele se uniu à IBM como funcionário em tempo integral no final de 2003. Em 2006, Michael juntou-se à organização de ferramentas de banco de dados e trabalhou na funcionalidade de provedor de serviços da Web do DB2 no IBM Data Studio Developer. Ele ganhou muita experiência em SOA e tecnologias da Web durante esse tempo. Recentemente, Michael uniu-se à equipe de otimização de DB2 para z/OS, mas ainda tem interesse em SOA e tecnologias da Web em (e relacionadas a) DB2.



Susan Malaika, IBM Software Group, Information Management STSM, IBM Japan

Susan MalaikaSusan Malaika é Membro Senior da Equipe Técnica no IBM Information Management Group (parte do IBM Software Group). Suas especialidades incluem XML, Web e bancos de dados. Ela desenvolveu padrões que suportam dados para ambientes de grade no Global Grid Forum. Além de trabalhar como desenvolvedora de software de produtos IBM, ela também trabalhou como especialista em Internet, analista de dados e editora e desenvolvedora de telas. Susan também é coautora de um livro sobre a Web e publicou artigos sobre processamento de transações e XML. Ela é membro da IBM Academy of Technology.



Faton (Tony) Avdiu, CoOp: DB2 Technical Enablement Specialist, IBM  

Photo of Faton (Tony) AvdiuFaton (Tony) Avdiu é ativador de DB2 pureXML (Co-Op) graduado em Engenharia da Computação. Tony está fazendo seu mestrado em Sistemas da Informação na Pace University. Atualmente, ele trabalha para a IBM em tecnologias para armazenar XML em DB2.



27/Nov/2009 (Primeira publicação 27/Nov/2009)

Introdução

Este artigo é o segundo de uma série de três artigos que ilustra como criar um aplicativo pureXML de três camadas que usa dispositivos JavaScript ou OpenSocial. Seguindo as etapas nesse artigo, você apresentará os dados do JSON descritos no primeiro artigo nesta série através do JSON Universal Services.

O JSONx é uma representação de XML canônica sem perda para o JSON que possibilita aos dispositivos e software que suportam XML para operar com o JSON. No primeiro artigo nessa série, fornecemos uma introdução ao JSONx e ilustramos como armazenar JSONx em um banco de dados pureXML. O pureXML possibilita armazenar, indexar e consultar XML através de linguagens como SQL/XML, XQuery e XPath.

O Universal Services para pureXML é um conjunto simples, mas fixo, de operações de banco de dados que permite consultar e modificar XML, armazenado em uma coluna pureXML de um banco de dados DB2®. Essas operações do banco de dados, que incluem inserir, atualizar, excluir e consultar, são apresentadas como serviços da Web, retornando os dados para o cliente como XML. O Universal Services é disponibilizado através de etapas diretas de configuração e implementação. Para mais informações sobre Universal Services, consulte o artigo do developerWorks "Universal Services para pureXML usando Data Web Services" (consulte Recursos para obter o link).

Termos frequentemente usados

  • HTML: HyperText Markup Language
  • HTTP: Hypertext Transfer Protocol
  • JSON: JavaScript Object Notation
  • SOA: Service Oriented Architecture
  • URL: Uniform Resource Locator
  • WAR: Web ARchive files
  • XML: Extensible Markup Language

O JSON Universal Services é similar ao Universal Services, exceto por operar em dados do JSONx armazenados em uma coluna pureXML. Como mencionado anteriormente, as operações do banco de dados incluem inserir, atualizar, excluir e consultar, entretanto, os dados são retornados ao cliente como JSON, em vez de XML.

O JSON Universal Services garante que aplicativos cliente JavaScript (e outros) não reconheçam que um armazenamento XML é usado para persistir JSON. Os recursos XML nativos do DB2 podem ser alavancados com os objetos JSON persistidos, possibilitando visualizar, consultar e manipular os dados com linguagens declarativas como XPath, acelerando drasticamente o tempo de desenvolvimento.

Nesse artigo, abordamos a configuração, implementação e teste do JSON Universal Services em um armazenamento JSONx com base no banco de dados de amostra do DB2 descrito no primeiro artigo dessa série, "Criação de um aplicativo JSON e pureXML, Parte 1: Armazenar e consultar o JSON com o DB2 pureXML" (consulte Recursos para obter o link).

Se precisar de mais detalhes sobre essas etapas, consulte o documento README.pdf do pacote de download do JSON Universal Services para instruções passo-a-passo totalmente ilustradas. (Depois de descompactar o pacote, você encontrará o README.pdf no diretório JSONUniversalServices.)

Pré-requisitos

Antes de instalar o JSON Universal Services, é necessário concluir as instalações descritas no primeiro artigo dessa série. Execute o pacote configurável do JSONx, que criará o banco de dados e registre as funções definidas pelo usuário (UDFs) em Java™ necessárias no DB2. Essas UDFs possibilitam converter JSON em JSONx e vice-versa. Também é necessário ter DB2 9.5 ou 9.7, Java Runtime Environment 1.5.0 e um servidor da Web (como WebSphere Application Server V6.x ou Apache Tomcat V6.x) instalado no seu sistema. Observe que o Java Runtime faz parte da instalação do DB2. Se você não instalou esses produtos, leia o primeiro artigo. Para um link para o primeiro artigo, consulte Recursos.

No primeiro artigo desta série, você criou uma tabela, CUSTOMER, que será usada para instalar e testar seu JSON Universal Services. A Tabela 1 mostra uma visão geral da tabela CUSTOMER:

Tabela 1. Visão geral da tabela JSONXMLADMIN.CUSTOMER
Nome da coluna Tipo de dados Descrição
CID INTEGER ID do Cliente
INFOXML Um registro contendo informações pessoais sobre o cliente
COMMENTVARCHAR(256)Um pequeno identificador textual relativo ao cliente

Agora que você tem os pré-requisitos instalados e a sua tabela foi criada, é possível configurar e instalar o JSON Universal Services para uma coluna pureXML específica.


Instalação do JSON Universal Services

Esta seção presume que você fez o download e extraiu o pacote JSON Universal Services para um diretório de trabalho temporário local. O diretório para JSON Universal Services usado ao longo deste artigo é C:\temp\JSONUniversalServices. Você deve consultar diretórios e arquivos como mostrado na Figura 1.

Figura 1. Conteúdos do pacote de download do JSON Universal Services
Conteúdos do pacote de download do JSON Universal Services

Os diretórios incluem classes, serviços e war. Os arquivos são configure.bat, configure.sh e README.pdf.

Assim que os arquivos e scripts necessários estiverem disponíveis no seu sistema, é possível continuar com a instalação do JSON Universal Services, que consiste basicamente em três etapas:

  • Configurar o JSON Universal Services para ajustar-se à configuração do seu sistema local.
  • Implementar o JSON Universal Services no seu servidor de aplicativo.
  • Testar o JSON Universal Services.

Configuração do JSON Universal Services

A configuração dos serviços da Web é obtida através de um script fornecido com o download chamado configure.bat (usuários do Linux®: configure.sh). Esse script é modificado para funcionar com o pacote configurável do JSONx. Portanto, se você modificou o pacote configurável do JSONx, ou decidiu usar um banco de dados diferente, é necessário modificar o script configure.bat antes de executá-lo. Pode ser necessário ajustar alguns parâmetros para adequar-se à configuração do seu sistema local. A Tabela 1 mostra os parâmetros usados nesse script de configuração.

Tabela 2. Visão geral dos parâmetros usados no script de configuração
Nome do parâmetroDescriçãoValor (de acordo com o banco de dados de amostra)
DB2INSTALLDIRCaminho para o diretório de instalação do DB2. C:\Program Files\IBM\SQLLIB
DBSCHEMANome do esquema do banco de dados ao qual pertence a tabela contendo a coluna de XML. JSONXMLADMIN
DBNAME Nome do banco de dados com o qual o Universal Services é usado. JSONSMPL
DBTABLENome da tabela que contém a coluna XML. CUSTOMER
DBPRIMARY Nome da coluna principal da tabela especificada em DBTABLE. Essa coluna pode ser do tipo INTEGER ou VARCHAR. CID
DBCOMMENT Nome da coluna de comentários da tabela especificada em DBTABLE. COMMENT
DBXML Nome da coluna XML da tabela especificada em DBTABLE. É a coluna que contém os dados XML. INFO

Observe que os valores dos três parâmetros na Tabela 2 DBPRIMARY, DBCOMMENT e DBXML, são os mesmos que os nomes da coluna na Tabela 1.

A

Figura 2 mostra o arquivo de configuração depois que ele foi editado, de acordo com os valores fornecidos na Tabela 2. (Consulte uma versão de texto da Figura 2.)

Figura 2. Edição do arquivo de configuração configure.bat
Edição do arquivo de configuração configure.bat

Depois que o configure.bat (usuários do Linux: configure.sh) for modificado com os parâmetros adequados, é possível executar o script que realiza a configuração do JSON Universal Services. O script cria um arquivo Web application archive (WAR) que contém todos os arquivos necessários para o aplicativo da Web JSON Universal Services, e que pode ser implementado no seu servidor de aplicativos. Lembre que o script deve ser executado no processador de linha de comandos do DB2, caso contrário, a execução falha.

Implementação do JSON Universal Services

Como descrito na seção anterior, a edição e execução do script configure.bat cria um arquivo WAR que agora pode ser implementado no servidor de aplicativos. Antes da implementação do arquivo WAR no servidor de aplicativos, é necessário configurar uma fonte de dados no servidor de aplicativos, que habilita o Universal Services a acessar o banco de dados do DB2.

Para configurar a origem de dados, siga o processo de configuração padrão do seu servidor de aplicativos. O único requisito a considerar durante a configuração é o nome da origem de dados, que deve atender ao seguinte padrão: nome jdbc/database. O nome da origem de dados para o exemplo usado neste artigo é jdbc/jsonsmpl. Se precisar de mais informações sobre como configurar uma origem de dados, consulte a documentação para o seu servidor de aplicativos ou leia o documento README.pdf incluso no pacote de download do JSON Universal Services (no diretório JSONUniversalServices).

A segunda etapa é implementar o arquivo WAR real no servidor de aplicativos. Entretanto, devido às diferenças nos artefatos do serviço da Web requeridos pelo WebSphere Application Server V6.x e pelo Apache Tomcat V6.x, o script de configuração cria dois arquivos WAR separados, um para cada servidor de aplicativos.

Os arquivos WAR podem ser encontrados no subdiretório war, localizado no diretório de trabalho do JSON Universal Services C:\temp\JSONUniversalServices. Em particular, o diretório contém dois subdiretórios: tomcat e was. O diretório tomcat contém o arquivo WAR a ser instalado no Apache Tomcat V6.x, enquanto o diretório was contém o arquivo WAR a ser instalado no WebSphere Application Server V6.x. Para instalar o arquivo WAR no seu servidor de aplicativos, siga o procedimento padrão. Se forem necessárias mais informações, consulte a documentação do seu servidor de aplicativos ou leia o documento README.pdf incluso no pacote de download do JSON Universal Services.

Agora é possível testar o seu conjunto de serviços da Web com a página de teste do JSON Universal Services, que já está disponível através da implementação do arquivo WAR.


Teste do JSON Universal Services

Para garantir que a configuração e a definição do JSON Universal Services no seu sistema local tiveram êxito, é necessário testar esses serviços. A maneira mais fácil de testá-los é usar uma página HTML simples, já disponível no seu servidor de aplicativos, como parte da implementação do JSON Universal Services.

Para acessar a página de teste do JSON Universal Services, redirecione o seu navegador para a URL http://localhost:8080/JSONUniversalServices/testServices.html. Observe que a porta 8080 é usada se a instalação foi feita no Apache Tomcat. Se foi usado um WebSphere Application Server, é preciso usar a porta 9080 para acessar a página. Observe que, dependendo do seu sistema local, pode ser necessário adaptar o nome de host ou porta. Você deve ver a página na Figura 3.

Figura 3. Página de teste do JSON Universal Services
Página de teste do JSON Universal Services

Essa página simples de teste permite inserir, atualizar, excluir e consultar dados JSON, armazenados como JSONx no seu banco de dados. Os serviços da Web são chamados através dos botões fornecidos na página de teste. A Figura 4 mostra a resposta do serviço da Web, depois que chamamos a operação getPrimaryKeys através do botão na página de teste.

Figura 4. Resposta depois que a operação do serviço da Web getPrimaryKeys é chamada
Resposta depois que a operação do serviço da Web getPrimaryKeys é chamada

Os documentos JSON foram convertidos e inseridos na coluna como documentos XML. É possível recuperar esses documentos tanto no formato JSON quanto XML.

Por exemplo, chamando o método getJSONDocumentByKey, você obtém a representação JSON do documento:

Listagem 1. Informações do cliente para Kathy Smith em JSON
{
  "customerinfo" : {
    "cid" : 1000 ,
    "name" : "Kathy Smith" ,
    "addr" : {
      "country"    : "Canada" ,
      "street"     : "5 Rosewood" ,
      "city"       : "Toronto" ,
      "prov-state" : "Ontario" ,
      "pcode-zip"  : "M6W 1E6"
    } ,
    "phone" : {
      "work" : "416-555-1358"
    }
  }
}

Alternativamente, se você chamar o método getXMLDocumentByKey, irá obter o documento XML (formato JSONx) como ele está armazenado no seu banco de dados DB2 pureXML:

Listagem 2. Informações do cliente para Kathy Smith em JSONx
<json:object xmlns:json="http://www.ibm.com/xmlns/prod/2009/jsonx">
  <json:object name="customerinfo">
	<json:number name="cid">1000</json:number>
	<json:string name="name">Kathy Smith</json:string>
	<json:object name="addr">
	  <json:string name="country">Canada</json:string>
	  <json:string name="street">5 Rosewood</json:string>
	  <json:string name="city">Toronto</json:string>
	  <json:string name="prov-state">Ontario</json:string>
	  <json:string name="pcode-zip">M6W 1E6</json:string>
	</json:object>
	<json:object name="phone">
	  <json:string name="work">416-555-1358</json:string>
	</json:object>
  </json:object>
</json:object>

Além disso, essa página fornece outros serviços, como inserir, atualizar, excluir e consultar XML. Leia a seção a seguir e as instruções na página de teste para mais informações.

Saiba mais sobre as operações do JSON Universal Services

Nesta seção, incluímos a Tabela 3, que descreve os parâmetros, suas codificações e os tipos MIME associados às operações no JSON Universal Services. As operações estão disponíveis através de HTTP GET, HTTP POST com tipos mime de texto simples e codificados para URL.

  • Para operações getDocumentByKey e getXMLDocumentByKey, é possível especificar um id e recuperar os dados armazenados correspondentes em JSON ou XML, respectivamente.
  • Para operações de inserção e atualização, é possível especificar um id para um documento JSON a ser inserido ou atualizado, junto com o novo documento. Se a solicitação for bem-sucedida, você receberá uma contagem de atualização de 1. Caso contrário, receberá uma contagem de atualização de 0.
  • Para operação de exclusão, é possível especificar um id para um documento a ser excluído do armazenamento pureXML. Se a solicitação de exclusão for bem-sucedida, você receberá uma contagem de atualização de 1. Caso contrário, receberá uma contagem de atualização de 0.
  • Para a operação runXMLQuery, é possível fornecer um XQuery ou entrada para um XMLQUERY (parte de SQL/XML) para recuperar conteúdo XML que pode estender-se através de muitos documentos armazenados. Consulte a página de teste para obter alguns exemplos.
Tabela 3. Visão geral das operações do JSON Universal Services
OperaçãoParâmetro de entradaHTTP GET HTTP POST MIME_TYPE application/x-www-form-urlencoded HTTP POST MIME-TYPE text/plain, application/jsonResposta
getDocumentByKeyidid: parâmetro/valor codificado por URL na cadeia de consultasid: parâmetro/valor codificado por URL na mensagemid: parâmetro/valor codificado por URL na cadeia de consultas documento JSON (texto/simples)
getXMLDocumentByKeyidid: parâmetro/valor codificado por URL na cadeia de consultasid: parâmetro/valor codificado por URL na mensagemid: parâmetro/valor codificado por URL na cadeia de consultas representação JSON do documento (texto/xml)
inserçãoid (único)
doc (Documento JSON)
id: parâmetro/valor codificado por URL na cadeia de consultas
doc: parâmetro/valor codificado por URL na cadeia de consultas
id: parâmetro/valor codificado por URL na mensagem
doc: parâmetro/valor codificado por URL na mensagem
id: parâmetro/valor codificado por URL na cadeia de consultas
doc: conteúdo da mensagem POST
Contagem de atualização (texto/simples)
atualizaçãoid
doc (documento JSON)
id: parâmetro/valor codificado por URL na cadeia de consultas
doc: parâmetro/valor codificado por URL na cadeia de consultas
id: parâmetro/valor codificado por URL na mensagem
doc: parâmetro/valor codificado por URL na mensagem
id: parâmetro/valor codificado por URL na cadeia de consultas
doc: conteúdo da mensagem POST
Contagem de atualização (texto/simples)
exclusãoidid: parâmetro/valor codificado por URL na cadeia de consultasid: parâmetro/valor codificado por URL na mensagemid: parâmetro/valor codificado por URL na cadeia de consultas Contagem de atualização (texto/simples)
runXMLQueryconsulta
(XQuery ou entrada para XMLQUERY)
consulta: parâmetro/valor codificado por URL na cadeia de consultasconsulta: parâmetro/valor codificado por URL na mensagemconsulta: conteúdo da mensagem POST documento XML com resultados (texto/xml)

Conclusão

Esse artigo forneceu uma introdução do JSON Universal Services, abrangendo configuração, implementação e teste do JSON Universal Services em um armazenamento JSONx com base no banco de dados de amostra do DB2.

O primeiro artigo dessa série focou na introdução do novo formato JSONx, possibilitando o armazenamento do JSON como XML no banco de dados DB2 pureXML. Também discutiu um caso de uso para o JSON e destacou os benefícios de usar pureXML para armazenar JSON.

O próximo artigo dessa série focará na criação da camada de apresentação com dispositivos Open-Social que contam com o JSONx Universal Services como backend.


Download

DescriçãoNomeTamanho
JSON Universal Services packageJSONUniversal Services.zip3692KB

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, WebSphere
ArticleID=450137
ArticleTitle=Criação de um aplicativo JSON e pureXML, Parte 2: Crie um Universal Services para pureXML que exponha JSON
publish-date=11272009