1/39 Serviços Web (Web Services) Emerson Ribeiro de Mello Departamento de Automação e Sistemas Universidade Federal de Santa Catarina 22 de Maio de 2007
2/39 Arquitetura Orientada a Serviços Arquitetura Orientada a Serviços Definição É uma caracterização de sistemas distribuídos, que visa organizar aplicações e sua infra-estrutura, através de um conjunto de interações de serviços que são acessados através de interfaces e protocolos padronizados, tendo como foco processos de negócio.
3/39 O que são serviços O que são serviços Serviços apresentam uma forma diferente de modularidade Representam funções de negócios completas Eles são reutilizados e empregados em novas transações, não em um nível de um programa individual ou até mesmo de uma aplicação, mas no nível da empresa, ou até mesmo através de empresas. Serviços são desenvolvidos para acessos originados por programas e não por usuários finais Aplicação cliente é um programa que invoca os serviços É possível alterar a lógica do serviço sem que haja necessidade de alterar o cliente
4/39 O que são serviços O que são serviços Neutro à tecnologia Invocado através de tecnologias padrões (protocolos, mecanimos de publicação e de busca) amplamente aceitas Fracamente acoplado Não requer o conhecimento prévio de qualquer estrutura interna presente no lado do cliente ou do serviço Localização transparente Informações sobre a definição e localização são publicadas em um repositório e estão acessíveis a uma variedade de clientes, independente da localizações dos mesmos
Definição Serviços Web Aplicativo hábil para processar documentos XML recebidos através de uma combinação de protocolos transporte e de aplicação É um tipo específico de serviço identificado através de um identificador uniforme de recursos, ou do inglês, URI. São independentes de linguagens de programação, sistemas operacionais e das arquiteturas de máquinas Utiliza padrões abertos e amplamente difundidos, como o XML e o HTTP Tecnologia ideal para que as relações de negócios entre empresas (B2B) sejam estabelecidas de maneira simples e dinâmica 5/39
Definição Serviços Web Aplicativo hábil para processar documentos XML recebidos através de uma combinação de protocolos transporte e de aplicação É um tipo específico de serviço identificado através de um identificador uniforme de recursos, ou do inglês, URI. São independentes de linguagens de programação, sistemas operacionais e das arquiteturas de máquinas Utiliza padrões abertos e amplamente difundidos, como o XML e o HTTP Tecnologia ideal para que as relações de negócios entre empresas (B2B) sejam estabelecidas de maneira simples e dinâmica 5/39
6/39 Definição Serviços Web Principal ponto O uso de padrões é o principal atrativo dos Serviços Web XML e WSDL Para descrição de documentos, mensagens SOAP Para transporte das mensagens UDDI Para localização e publicação de serviços
6/39 Definição Serviços Web Principal ponto O uso de padrões é o principal atrativo dos Serviços Web XML e WSDL Para descrição de documentos, mensagens SOAP Para transporte das mensagens UDDI Para localização e publicação de serviços
7/39 Definição Serviços Web São auto contidos Não implica no uso de aplicativos adicionais no cliente ou no provedor No cliente basta uma linguagem de programação que dê suporte ao XML e ao HTTP No provedor só é necessário um servidor de aplicação (Ex: Apache Tomcat) São auto descritivos Cliente e provedor só se preocupam com o formato e conteúdo das mensagens a serem trocadas Abstraindo-se dos detalhes de implementação (fraco acoplamento)
Definição Serviços Web Objetos distribuídos Objetos distribuídos = CORBA, RMI, DCOM Semelhanças linguagem para descrição de interfaces mecanismos para registro e localização de objetos Diferenças Facilidade de estado Ciclo de vida 1 Através de um pedido, uma fábrica cria uma instância de um objeto 2 O cliente executa operações no objeto instanciado 3 Em algum momento posterior, o cliente remove a instância do objeto que não será mais utilizado O uso do HTTP permite aos Serviços Web atravessar firewalls 8/39
Definição Serviços Web Objetos distribuídos Objetos distribuídos = CORBA, RMI, DCOM Semelhanças linguagem para descrição de interfaces mecanismos para registro e localização de objetos Diferenças Facilidade de estado Ciclo de vida 1 Através de um pedido, uma fábrica cria uma instância de um objeto 2 O cliente executa operações no objeto instanciado 3 Em algum momento posterior, o cliente remove a instância do objeto que não será mais utilizado O uso do HTTP permite aos Serviços Web atravessar firewalls 8/39
9/39 Arquitetura Arquitetura de um Serviço Web Endereço Combinação entre protocolo e endereço de rede, utilizado para que um cliente possa acessar um serviço Documento XML Documento que contém informações específicas à aplicação Envelope Encapsulamento que garante que documentos XML sejam processados de forma correta, separando as informações relacionadas a comunicação, dos dados em si
10/39 Arquitetura Serviços Web Serviços Web surgiram para integrar aplicações existentes, não para substituí-las 1 Escolher uma aplicação existente, ou desenvolver uma nova (p.e. em Java) 2 Descrever a interface do serviço para essa aplicação utilizando uma linguagem padrão Web Services Description Language (WSDL) 3 Disponibilizar esse documento (de alguma forma) Universal Description, Discovery and Integration (UDDI) 4 Troca de mensagens XML SOAP
10/39 Arquitetura Serviços Web Serviços Web surgiram para integrar aplicações existentes, não para substituí-las 1 Escolher uma aplicação existente, ou desenvolver uma nova (p.e. em Java) 2 Descrever a interface do serviço para essa aplicação utilizando uma linguagem padrão Web Services Description Language (WSDL) 3 Disponibilizar esse documento (de alguma forma) Universal Description, Discovery and Integration (UDDI) 4 Troca de mensagens XML SOAP
11/39 Arquitetura Colaboração na arquitetura dos Serviços Web 2. Consulta 1. Publica UDDI 3. Obtém a descrição WSDL do serviço WSDL Cliente 4. Efetua a invocação Serviço Web
12/39 Web Services Descritpion Language Descrição dos Serviços Quais são os serviços oferecidos pelo negócio? Como invocar os serviços? Quais as informações necessárias para invocar um serviço? Como cliente e servidor sabem como processar as requisições? Em qual formato o serviço deve enviar as informações para o cliente?
13/39 Web Services Descritpion Language WSDL Linguagem para descrição de interfaces Gramática em XML, extensível, para especificar interfaces de Serviços Web Operações disponíveis Tipos de dados Protocolos utilizados Localização do serviço Independente de plataforma e linguagem Representa um contrato entre o produtor e o consumidor Ambas as partes devem ter acesso ao mesmo documento WSDL para que estas possam interagir
14/39 Documento WSDL Documento WSDL Um documento WSDL é composto por três elementos principais definição dos tipos de dados especifica a estrutura e o conteúdo das mensagens operações abstratas descreve as operações que poderão ser executadas associação dos serviços especifica como mapear as operações nos protocolos de rede utilizados para o transporte Documento WSDL Tipos dos dados das mensagens Operações abstratas Associação dos Serviços Transporte
15/39 Documento WSDL Sub-elementos de um documento WSDL types Definição dos tipos de dados (Ex: inteiros, booleano, tipos compostos, etc.) messages Mensagens que um Serviço Web espera enviar ou receber operation Define como o serviço irá tratar os dados e como deverão ser retornados em uma resposta one-way Serviço recebe mensagem mas não envia resposta request-response Serviço recebe mensagem e envia resposta solicit-response Serviço envia mensagem e recebe resposta notification Serviço envia mensagem sem esperar por resposta
15/39 Documento WSDL Sub-elementos de um documento WSDL types Definição dos tipos de dados (Ex: inteiros, booleano, tipos compostos, etc.) messages Mensagens que um Serviço Web espera enviar ou receber operation Define como o serviço irá tratar os dados e como deverão ser retornados em uma resposta one-way Serviço recebe mensagem mas não envia resposta request-response Serviço recebe mensagem e envia resposta solicit-response Serviço envia mensagem e recebe resposta notification Serviço envia mensagem sem esperar por resposta
15/39 Documento WSDL Sub-elementos de um documento WSDL types Definição dos tipos de dados (Ex: inteiros, booleano, tipos compostos, etc.) messages Mensagens que um Serviço Web espera enviar ou receber operation Define como o serviço irá tratar os dados e como deverão ser retornados em uma resposta one-way Serviço recebe mensagem mas não envia resposta request-response Serviço recebe mensagem e envia resposta solicit-response Serviço envia mensagem e recebe resposta notification Serviço envia mensagem sem esperar por resposta
15/39 Documento WSDL Sub-elementos de um documento WSDL types Definição dos tipos de dados (Ex: inteiros, booleano, tipos compostos, etc.) messages Mensagens que um Serviço Web espera enviar ou receber operation Define como o serviço irá tratar os dados e como deverão ser retornados em uma resposta one-way Serviço recebe mensagem mas não envia resposta request-response Serviço recebe mensagem e envia resposta solicit-response Serviço envia mensagem e recebe resposta notification Serviço envia mensagem sem esperar por resposta
15/39 Documento WSDL Sub-elementos de um documento WSDL types Definição dos tipos de dados (Ex: inteiros, booleano, tipos compostos, etc.) messages Mensagens que um Serviço Web espera enviar ou receber operation Define como o serviço irá tratar os dados e como deverão ser retornados em uma resposta one-way Serviço recebe mensagem mas não envia resposta request-response Serviço recebe mensagem e envia resposta solicit-response Serviço envia mensagem e recebe resposta notification Serviço envia mensagem sem esperar por resposta
15/39 Documento WSDL Sub-elementos de um documento WSDL types Definição dos tipos de dados (Ex: inteiros, booleano, tipos compostos, etc.) messages Mensagens que um Serviço Web espera enviar ou receber operation Define como o serviço irá tratar os dados e como deverão ser retornados em uma resposta one-way Serviço recebe mensagem mas não envia resposta request-response Serviço recebe mensagem e envia resposta solicit-response Serviço envia mensagem e recebe resposta notification Serviço envia mensagem sem esperar por resposta
15/39 Documento WSDL Sub-elementos de um documento WSDL types Definição dos tipos de dados (Ex: inteiros, booleano, tipos compostos, etc.) messages Mensagens que um Serviço Web espera enviar ou receber operation Define como o serviço irá tratar os dados e como deverão ser retornados em uma resposta one-way Serviço recebe mensagem mas não envia resposta request-response Serviço recebe mensagem e envia resposta solicit-response Serviço envia mensagem e recebe resposta notification Serviço envia mensagem sem esperar por resposta
16/39 Documento WSDL Sub-elementos de um documento WSDL porttype Agrupamento lógico de operações (elemento operation) análogo a uma definição de objeto que contém múltiplos métodos binding Descreve como os elementos messages e operation serão mapeados em um protocolo de transporte port Combinação entre o elemento binding e endereço de rede, provendo um endereço único para acessar um serviço service Coleção de elementos port
16/39 Documento WSDL Sub-elementos de um documento WSDL porttype Agrupamento lógico de operações (elemento operation) análogo a uma definição de objeto que contém múltiplos métodos binding Descreve como os elementos messages e operation serão mapeados em um protocolo de transporte port Combinação entre o elemento binding e endereço de rede, provendo um endereço único para acessar um serviço service Coleção de elementos port
16/39 Documento WSDL Sub-elementos de um documento WSDL porttype Agrupamento lógico de operações (elemento operation) análogo a uma definição de objeto que contém múltiplos métodos binding Descreve como os elementos messages e operation serão mapeados em um protocolo de transporte port Combinação entre o elemento binding e endereço de rede, provendo um endereço único para acessar um serviço service Coleção de elementos port
16/39 Documento WSDL Sub-elementos de um documento WSDL porttype Agrupamento lógico de operações (elemento operation) análogo a uma definição de objeto que contém múltiplos métodos binding Descreve como os elementos messages e operation serão mapeados em um protocolo de transporte port Combinação entre o elemento binding e endereço de rede, provendo um endereço único para acessar um serviço service Coleção de elementos port
16/39 Documento WSDL Sub-elementos de um documento WSDL porttype Agrupamento lógico de operações (elemento operation) análogo a uma definição de objeto que contém múltiplos métodos binding Descreve como os elementos messages e operation serão mapeados em um protocolo de transporte port Combinação entre o elemento binding e endereço de rede, provendo um endereço único para acessar um serviço service Coleção de elementos port
17/39 Documento WSDL Elementos que compõem um documento WSDL service port port port porttype porttype porttype operation operation operation operation. operation.... operation. operation operation operation binding... binding binding... binding binding... binding Endereço de rede Endereço de rede Endereço de rede
18/39 Exemplo de documento WSDL Exemplo WSDL: Calculadora.java 1 public class Calculadora{ 2 3 public int soma(int i1, int i2){ 4 return i1 + i2; 5 } 6 7 public int subtracao(int i1, int i2){ 8 return i1 - i2; 9 } 10 }
Exemplo de documento WSDL Documento WSDL elemento message 1 <wsdl:definitions targetnamespace="http://localhost/ Calculadora.jws"> 2 3 <wsdl:message name="subtracaorequest"> 4 <wsdl:part name="i1" type="xsd:int"/> 5 <wsdl:part name="i2" type="xsd:int"/> 6 </wsdl:message> 7 8 <wsdl:message name="somarequest"> 9 <wsdl:part name="i1" type="xsd:int"/> 10 <wsdl:part name="i2" type="xsd:int"/> 11 </wsdl:message> 12 13 <wsdl:message name="subtracaoresponse"> 14 <wsdl:part name="subtracaoreturn" type="xsd:int"/> 15 </wsdl:message> 16 17 <wsdl:message name="somaresponse"> 18 <wsdl:part name="somareturn" type="xsd:int"/> 19 </wsdl:message> 19/39
20/39 Exemplo de documento WSDL Documento WSDL elemento operation 20 <wsdl:porttype name="calculadora"> 21 22 <wsdl:operation name="soma" parameterorder="i1 i2"> 23 <wsdl:input message="impl:somarequest" name=" somarequest"/> 24 <wsdl:output message="impl:somaresponse" name=" somaresponse"/> 25 </wsdl:operation> 26 27 <wsdl:operation name="subtracao" parameterorder="i1 i2"> 28 <wsdl:input message="impl:subtracaorequest" name=" subtracaorequest"/> 29 <wsdl:output message="impl:subtracaoresponse" name=" subtracaoresponse"/> 30 </wsdl:operation> 31 32 </wsdl:porttype>
21/39 Exemplo de documento WSDL Documento WSDL elemento service 33 <wsdl:service name="calculadoraservice"> 34 35 <wsdl:port binding="impl:calculadorasoapbinding" name ="Calculadora"> 36 <wsdlsoap:address location="http://localhost/ Calculadora.jws"/> 37 </wsdl:port> 38 39 </wsdl:service> 40 41 </wsdl:definitions>
22/39 Definição SOAP - Protocolo para troca de mensagens Baseado em XML, encapsula chamadas remotas de procedimento (RPC) sobre outros protocolos Opera sobre protocolos da camada de aplicação (pilha TCP/IP) mas geralmente é tratado como um protocolo de transporte Geralmente adota-se SOAP sobre o protocolo HTTP Mas pode-se usar sobre o SMTP, TCP, UDP, etc.
23/39 Definição Especificação do SOAP A especificação do SOAP é dividida em três partes principais: Envelope SOAP Documento XML formado por elementos que definem os dados que serão trocados entre as aplicações Regras de codificação dos dados Definem como as instâncias de tipos de dados definidos no nível de aplicação devem ser codificadas Convenções RPC Define convenções para representar RPC através de mensagens SOAP
Mensagem SOAP Mensagem SOAP Uma mensagem SOAP consiste basicamente em Envelope Elemento raiz no documento XML que representa a mensagem SOAP Header (opcional) Oferece mecanismos para estender a mensagem Informações de roteamento, segurança, coordenação Body Document - A RPC em si faz parte deste elemento Fault (opcional) SOAP Envelope SOAP Header Header Block... Header Block SOAP Body Body Block... Body Block 24/39
25/39 Mensagem SOAP Exemplo de mensagem SOAP 1 <soapenv:envelope 2 xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope"> 3 <soapenv:body> 4 <m:cidade xmlns:m="http://schemas.exemplo.br/cidade"> 5 <m:nhabitantes>200000</m:nhabitantes> 6 </m:cidade> 7 <n:hotel xmlns:n="http://schemas.exemplo.br/hotel"> 8 <n:estrelas>5</n:estrelas> 9 <n:bairro>centro</n:bairro> 10 </n:hotel> 11 </soapenv:body> 12 </soapenv:envelope>
26/39 Mensagem SOAP Roteamento de mensagens No cabeçalho (header) da mensagem SOAP podem ser definidas informações específicas para nós SOAP intermediários (roteadores SOAP) SOAP Intermediario 1 SOAP Destinatario SOAP Emissor Intermediario 2
27/39 Exemplo: Usando SOAP sobre o HTTP Cabeçalho HTTP do pedido POST /axis/calculadora.jws HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.1 Host: 127.0.0.1 Cache-Control: no-cache Pragma: no-cache SOAPAction: "" Content-Length: 423
28/39 Exemplo: Usando SOAP sobre o HTTP Formato do pedido SOAP <?xml version="1.0" encoding="utf-8"?> <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <soapenv:body> <soma soapenv:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/"> <op1 xsi:type="xsd:int">10</op1> <op2 xsi:type="xsd:int">8</op2> </soma> </soapenv:body> </soapenv:envelope>
29/39 Exemplo: Usando SOAP sobre o HTTP Cabeçalho HTTP da resposta HTTP/1.1 200 OK Set-Cookie: JSESSIONID=7D9BD2428A5F16E7B5FD24C50F904A7A; Path=/axis Content-Type: text/xml;charset=utf-8 Date: Fri, 11 Jun 2004 13:12:45 GMT Server: Apache-Coyote/1.1 Connection: close
30/39 Exemplo: Usando SOAP sobre o HTTP Formato da resposta SOAP <?xml version="1.0" encoding="utf-8"?> <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <soapenv:body> <somaresponse soapenv:encodingstyle= "http://schemas.xmlsoap.org/soap/encoding/"> <somareturn xsi:type="xsd:int">18</somareturn> </somaresponse> </soapenv:body> </soapenv:envelope>
31/39 Introdução Localização dos Serviços Web Para efetuar uma chamada a um Serviço Web é necessário primeiramente conhecer sua interface, semântica de chamada e localização A disponibilização dessas informações pode ser feita de duas maneiras: Divulgação direta entre o provedor e os consumidores do serviço Através de um serviço de diretórios
32/39 Introdução UDDI Serviço para publicação e localização de serviços Publicação, Busca e Integração de Serviços Web Um diretório global de registros de Serviços Web, onde ficam disponibilizadas informações sobre as empresas fornecedoras de serviços Sua implementação consiste em diversos Serviços Web, que provêem uma interface para que os clientes possam interagir com as informações ali armazenadas
33/39 Introdução UDDI Dados e meta-dados dos Serviços Web são armazenados em diretórios UDDI (UDDI registry) E são associados a um identificador único, denominado, UDDI key UDDI key é criado de acordo com regras de classificação especificadas para cada organização Permite aos consumidores realizarem consultas mais granulares Ex: buscar por provedores que forneçam o serviço X dentro de uma determinada localização geográfica
34/39 Diretórios UDDI Diretórios UDDI Não armazenam somente informações relativas à implementação de um serviço É possível armazenar informações relacionadas diretamente à entidade que provê o serviço O modelo de dados do UDDI prevê os seguintes tipos: businessservice descrições sobre as funções de negócio do serviço businessentity informações sobre a organização detentora do serviço bindingtemplate informações técnicas do serviço tmodel outros atributos, como taxonomia geográfica, industrial, mas geralmente contém o WSDL que descreve o serviço
34/39 Diretórios UDDI Diretórios UDDI Não armazenam somente informações relativas à implementação de um serviço É possível armazenar informações relacionadas diretamente à entidade que provê o serviço O modelo de dados do UDDI prevê os seguintes tipos: businessservice descrições sobre as funções de negócio do serviço businessentity informações sobre a organização detentora do serviço bindingtemplate informações técnicas do serviço tmodel outros atributos, como taxonomia geográfica, industrial, mas geralmente contém o WSDL que descreve o serviço
35/39 Diretórios UDDI Implementações de diretórios UDDI A idéia inicial do UDDI: Diretório público de livre acesso para as organizações divulgarem seus serviços Porém, com a adoção dos Serviços Web para integrar aplicações dentro das próprias organizações, surgiu a necessidade de diretórios privados A especificação 3.0 do UDDI prevê os seguintes tipos de diretórios: privado diretório interno, isolado da rede pública afiliado somente clientes autorizados tem acesso ao diretório público acesso aberto e público ao diretório
35/39 Diretórios UDDI Implementações de diretórios UDDI A idéia inicial do UDDI: Diretório público de livre acesso para as organizações divulgarem seus serviços Porém, com a adoção dos Serviços Web para integrar aplicações dentro das próprias organizações, surgiu a necessidade de diretórios privados A especificação 3.0 do UDDI prevê os seguintes tipos de diretórios: privado diretório interno, isolado da rede pública afiliado somente clientes autorizados tem acesso ao diretório público acesso aberto e público ao diretório
36/39 Ferramentas de desenvolvimento Ferramentas de desenvolvimento Diversas empresas estão provendo ferramentas de desenvolvimento para Serviços Web Apache, Sun, IBM, Microsoft, BEA, etc. Diversas linguagens de programação já apresentam suporte ao Serviços Web Java, C++, C#, PHP, Perl, Python Vamos nos conter em duas ferramentas baseadas em Java Java Web Services Developer Pack JWSDP Apache Axis
Ferramentas de desenvolvimento Java Web Services Developer Pack Kit para construção, implantação e para testes de Web Services, assim como para aplicações Web e baseadas em XML Provê implementações para: WSDL, SOAP e UDDI Contém JAXP - Java API for XML Processing JAXR - Java API for XML Registries JAX-RPC - Java API for XML-based RPC SAAJ - SOAP with Attachments API for Java Novo projeto A SUN substituiu o JWSDP pelo projeto GlassFish, sendo este um projeto de código aberto e com participação da comunidade 37/39
Ferramentas de desenvolvimento Java Web Services Developer Pack Kit para construção, implantação e para testes de Web Services, assim como para aplicações Web e baseadas em XML Provê implementações para: WSDL, SOAP e UDDI Contém JAXP - Java API for XML Processing JAXR - Java API for XML Registries JAX-RPC - Java API for XML-based RPC SAAJ - SOAP with Attachments API for Java Novo projeto A SUN substituiu o JWSDP pelo projeto GlassFish, sendo este um projeto de código aberto e com participação da comunidade 37/39
Ferramentas de desenvolvimento Apache Axis Axis basicamente uma implementação SOAP para construção de clientes e servidores Possui um servidor de aplicação pequeno e simples Pode ser utilizado em conjunto com o Tomcat Grande suporte ao WSDL Ferramenta para WSDL Java e Java WSDL Ferramenta para monitoramente de pacotes TCP/IP Axis2 Aprenderam algumas lições com o Axis1 e isso tornou o Axis2 mais robusto e modular Fica mais fácil adicionar novas funcionalidades Porém, o desenvolvimento de uma simples aplicação ficou um pouco mais complexo se comparado com o Axis1 Já possui implementações para as especificações de segurança, coordenação, etc. 38/39
Ferramentas de desenvolvimento Apache Axis Axis basicamente uma implementação SOAP para construção de clientes e servidores Possui um servidor de aplicação pequeno e simples Pode ser utilizado em conjunto com o Tomcat Grande suporte ao WSDL Ferramenta para WSDL Java e Java WSDL Ferramenta para monitoramente de pacotes TCP/IP Axis2 Aprenderam algumas lições com o Axis1 e isso tornou o Axis2 mais robusto e modular Fica mais fácil adicionar novas funcionalidades Porém, o desenvolvimento de uma simples aplicação ficou um pouco mais complexo se comparado com o Axis1 Já possui implementações para as especificações de segurança, coordenação, etc. 38/39
39/39 Ferramentas de desenvolvimento Próxima aula... Assunto Desenvolvendo um Serviço Web Local Laboratório LCITIC Data 29/05/2007 Hora 15:00