corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

SaaS (Software as a Service): Tutorial do Zillow

O NetBeans IDE oferece um Gerenciador de serviços Web que dá suporte a aplicativos Software as a Service (SaaS). SaaS refere-se a um modelo de entrega de aplicativo de software onde um fornecedor de software desenvolve um aplicativo de software nativo da Web, hospeda e opera o aplicativo para uso por seus clientes via Internet. SaaS é um modelo cada vez mais popular para oferecer funcionalidade de software, já que é econômico em termos de custo e recursos de hardware do cliente. O IDE agora torna mais fácil para desenvolvedores de Java acessar todos os serviços SaaS populares na Web.

Este tutorial mostra como usar o SaaS simples fornecido por zillow.com. Zillow.com é uma empresa de serviço imobiliário online baseada em Seattle, Washington, fundada em 2005 por Rich Barton e Lloyd Frink, antigos executivos da Microsoft e fundadores da Expedia. O Zillow permite que os usuários vejam o valor de milhões de casas em todos os Estados Unidos, não apenas aquelas que estão para venda. Além de dar estimativas de valores de casas, ele oferece vários recursos exclusivos, incluindo o valor de cada casa em um determinado período de tempo (por exemplo, 1, 5 ou 10 anos), vistas aéreas de casas e preços de casas na área. Desde que possa acessar os dados apropriados, ele também fornece informações básicas sobre uma determinada casa, tal como metragem e o número de quartos e banheiros. Os usuários também podem obter estimativas atuais de casas, caso tenha havido alguma alteração significativa.

Neste tutorial, você exibe um gráfico mostrando a média de preços de casas em uma região dos EUA durante 12 meses. Para configurá-lo, primeiro use o Gerenciador de serviços para inserir a operação ZillowRealEstateService.GetRegionChart em um servlet. O IDE manipula a infra-estrutura básica, mas você precisa modificar o código do servlet para extrair a URL do gráfico da região. Este tutorial mostra como usar objetos JAXB para extrair a URL. Esta é a abordagem mais simples.

Conteúdo

O conteúdo desta página se aplica ao IDE NetBeans 6.1

Para seguir este tutorial, você precisa dos seguintes recursos e softwares.

Software ou recurso Versão necessária
NetBeans IDE Pacote de download do Web e Java EE 6.1
Pacote de download Java 6.5
Java Development Kit (JDK) versão 6 ou
versão 5
Servidor da aplicação ou Web compatível com Java EE Servidor Web Tomcat 7.0 e/ou servidor da aplicação GlassFish
Importante: Se você usa Tomcat com este tutorial, consulte
o NetBeans Wiki sobre Tomcat com REST

Registrando para receber a chave de API Zillow

Os serviços Zillow usam a autenticação de chave de API. Inscreva-se no Zillow aqui para receber uma chave de API. Você precisará preencher um formulário de registro, mas o registro é gratuito.

Outros serviços usam autenticação HTTP, assinatura de cabeçalho ou logon do usuário para autenticação. Esses mecanismos serão abordados em futuros tutoriais.

Criando o servlet

O IDE permite que você insira operações SaaS em servlets, serviços RESTful existentes, páginas JSP ou POJOs (plain Java objects). Neste tutorial, você cria uma aplicação Web com um servlet.

Para criar o servlet:

  1. Escolha Arquivo > Novo projeto. Em Categorias, selecione Java Web. Em Projetos, selecione Aplicação Web e clique em Próximo.
  2. No campo Nome do projeto, digite ZillowRegionChart.
  3. Selecione o servidor GlassFish ou Tomcat e Java EE 5. Clique nas opções restantes e clique em Terminar.
  4. Clique com o botão direito do mouse no nó do projeto ZillowRegionChart e selecione Propriedades na janela de contexto. A caixa de diálogo Propriedades do projeto é aberta.
  5. Clique com o botão direito do mouse no nó do projeto e escolha Novo > Servlet. O assistente para Novo servlet é aberto.
    Assistente para Novo servlet com nome de classe ZillowRegionChartServlet e nome de pacote arbitrário
  6. Chame o servlet de ZillowRegionChartServlet. Crie um pacote arbitrário para ele, tal como zillow.regionchart. Mantenha todos os outros padrões e clique em Terminar.

O servlet se abre em uma aba do editor e o servlet e seu pacote pai ficam visíveis na visualização Projetos, no nó Pacotes de códigos-fonte do projeto.

Aba Projetos no IDE mostrando o servlet e seu pacote pai no projeto ZillowRegionChart

Adicionando a operação GetRegionChart Zillow ao servlet

Use o Gerenciador de serviços para adicionar a funcionalidade SaaS do Zillow em seu servlet. O IDE cuida de toda a infra-estrutura para você.

Para adicionar a operação GetRegionChart:

  1. Abra a aba Serviços no IDE. Expanda o nó Serviços Web. Navegue para a operação GetRegionChart do Zillow.
    Aba Serviços mostrando o nó Serviços Web expandido, mostrando o serviço GetRegionChart do Zillow
  2. No editor, localize o método processRequest em ZillowRegionChartServlet.java. Adicione uma linha vazia no início do bloco de teste. Arraste e solte a operação getRegionChart no bloco de teste de processRequest().
  3. A Caixa de diálogo Personalizar SaaS GET se abre. Você pode indicar os valores reais de cidade, estado e CEP dos EUA ou deixá-los como nulo. (Se você deixar valores nulos, obterá um gráfico da média de preços de casa para todo o país.) Clique em OK.

O IDE gera o código do serviços SaaS GET. Quando isso estiver concluído, o método processRequest() tem a seguinte aparência.


Código do servlet com o bloco de teste getRegionChart inserido, antes da modificação

O IDE também cria dois novos pacotes, org.netbeans.saas e org.netbeans.saas.zillow, contendo a conexão RESTful e as classes específicas do Zillow, respectivamente. A estrutura completa do pacote é mostrada abaixo. O IDE também importa as classes RestConnection e ZillowRealEstateService em seu servlet.

Estrutura do projeto de gráfico da região do Zillow mostrando os pacotes criados pelo IDE depois de arrastar e soltar a operação getRegionChart

Adicionando a chave de API ao projeto

Para que o projeto acesse os serviços do Zillow, você precisa passar a chave de API que obteve quando se registrou. Abra o arquivo zillowrealestateserviceauthenticator.properties e copie e cole na chave de API que você recebeu no email do Zillow que confirmava o seu registro

Modificando o servlet para retornar ao gráfico

O servlet que você criou não produz uma saída útil. Para fazer com que o gráfico da região apareça em um navegador, você precisa extrair a URL do gráfico da String que o serviço do Zillow retorna, a qual está no formato de um arquivo XML. Uma abordagem é analisar o arquivo XML e colar a URL em uma página JSP. Essa abordagem é descrita no artigo Consuming Zillow Web Services de Adam Myatt na NetBeans Zone. Neste tutorial, você usa uma abordagem mais simples envolvendo objetos JAXB.

Para retornar ao gráfico:

  1. Remova a seção de saída comentada do bloco de teste pai no código do servlet. Mova as instruções de inicialização da String e a instrução de resultado do bloco de teste filho para o pai, da seguinte forma:
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String unittype = "dollar";
            String city = null;
            String state = null;
            String zIP = null;
            String width = null;
            String height = null;
            String chartduration = null;
             RestResponse result = ZillowRealEstateService.getRegionChart(unittype, city, state, zIP, width, height, chartduration);
             try {
                zillow.realestateservice.regionchart.Regionchart resultObj = result.getDataAsObject(zillow.realestateservice.regionchart.Regionchart.class);
            //TODO - Uncomment the print Statement below to print result.
            //out.println("The SaasService returned: "+result.getDataAsString());
            } catch (Exception ex) {
                ex.printStackTrace();
            }
    
        } finally {
            out.close();
        }
            }
  2. Modifique a linha de saída //out.println("The SaasService returned: "+result.getDataAsString());. Retire o comentário da linha e altere-o para produzir uma marca HTML <img> em vez de texto. Tenha cuidado para escapar as aspas que irão circundar a URL! A linha agora tem a seguinte aparência:
    out.println("<img src=\""+result.getDataAsString() + "\" />");
  3. Substitua o método result.getDataAsString() na saída por resultObj.getResponse().getUrl(). Você pode usar auto-completar de código para selecionar getResponse() de métodos resultObj diferentes, como mostrado abaixo e, em seguida, usar auto-completar de código para selecionar getUrl() de métodos getResponse.
    Auto-completar de código para métodos resultObj
  4. Altere o bloco de interceptação para interceptar JAXBException em vez de Exception. Você também pode usar um método Logger.getLogger(...) em vez de imprimir um rastreamento de pilha. Você terá que importar as classes relevantes. Veja se você pode usar auto-completar de código e a ação do menu de contexto Corrigir importações para reproduzir o seguinte bloco de interceptação:
    } catch (JAXBException ex) {
        Logger.getLogger(ZillowRegionChartServlet.class.getName()).log(Level.SEVERE, null, ex);
            }

Suas modificações no código agora estão completas! O código final do servlet deve ter a seguinte aparência:

package zillow.regionchart;



import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.bind.JAXBException;
import org.netbeans.saas.zillow.ZillowRealEstateService;
import org.netbeans.saas.RestResponse;


public class ZillowRegionChartServlet extends HttpServlet {

    /**
     * Processes requests for both HTTP GET and POST methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String unittype = "dollar";
            String city = null;
            String state = null;
            String zIP = null;
            String width = null;
            String height = null;
            String chartduration = null;

            RestResponse result = ZillowRealEstateService.getRegionChart(unittype, city, state, zIP, width, height, chartduration);

            try {
                zillow.realestateservice.regionchart.Regionchart resultObj = result.getDataAsObject(zillow.realestateservice.regionchart.Regionchart.class);
            //TODO - Uncomment the print Statement below to print result.
            out.println("<img src=\""+ resultObj.getResponse().getUrl() + "\" />");
            } catch (JAXBException ex) {
                Logger.getLogger(ZillowRegionChartServlet.class.getName()).log(Level.SEVERE, null, ex);
            }

        } finally {
            out.close();
        }
    }
    ...

Executando o servlet do gráfico da região Zillow

A forma mais simples de executar o servlet é clicar com botão direito do mouse no servlet na visualização Projetos e selecionar Executar arquivo. Como alternativa, clique com o botão direito do mouse no nó Projeto e selecione Propriedades. Na árvore Propriedades, selecione Executar. No campo URL relativa, digite /ZillowRegionChartServlet, como mostrado abaixo. Clique em OK e execute o projeto.

Caixa de diálogo Propriedades do projeto ZillowRegionChart mostrando a URL relativa

Quando você executa o projeto com êxito, uma janela do navegador se abre mostrando o Gráfico da região.

Gráfico da região do Zillow no navegador

Mais exercícios

Aqui estão mais algumas idéias para você explorar:

  • Tente valores reais diferentes para cidade, estado e CEP. Execute o servlet novamente.
  • Crie um cliente que permita que você passe a cidade, o estado e o CEP para o serviço e retorne o Gráfico da região correspondente.
  • Use uma página JSP em vez do objeto JAXB para retornar o gráfico, como mostrado neste artigo da NetBeans Zone.


Veja também

Para obter mais informações sobre o uso do NetBeans IDE para desenvolver serviços Web RESTful, SaaS e outros aplicativos Java EE, consulte os seguintes recursos:

Para enviar comentários e sugestões, obter suporte e se manter informado sobre os mais recentes desenvolvimentos dos recursos de desenvolvimento de Java EE do NetBeans IDE, inscreva-se na lista de endereçamento de .