FeaturesPluginsDocs & SupportCommunityPartners

Tutorial do serviço Web de ponta a ponta: aplicação Dilbert móvel

Este tutorial descreve como você pode usar o NetBeans IDE para criar uma aplicação cliente móvel que consume um serviço Web. Você criará uma aplicação que pegue a tira cômica do Dilbert diariamente por meio de um serviço Web online ao vivo, converte os gráficos para um formato que economiza espaço e exibe a faixa em um dispositivo móvel.

Neste tutorial, você cria primeiro um cliente de serviços Web em uma aplicação móvel para se conectar serviço DailyDilbert online. Depois, é mostrado como usar o Visual MIDlet Designer para criar graficamente o layout da sua aplicação. Em seguida, você adiciona o código que transforma o formato de gráfico do desenho de GIF para PNG, que é o formato suportado pelos dispositivos móveis. Finalmente, use um emulador para ver a tira diariamente no IDE.

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

Conteúdo

Software necessário para o tutorial

Antes de começar, você deve baixar ou instalar o seguinte software no seu computador:

  • Java Standard Development Kit (JDK) versão 5.0 ou 6.0 (download)
  • A distribuição completa do NetBeans IDE 6.0 (download)
  • Um servidor Java EE 5, tal como GlassFish ou Tomcat, que pode ser instalado junto com o item acima.

Criando o cliente de serviço Web

Primeiro, criaremos um novo projeto de aplicação Web. O projeto conterá nosso cliente de serviço Web.

  1. Escolha Arquivo > Novo projeto. Em Categorias, escolha Web. Em Projetos, escolha Aplicação Web. Clique em Próximo.
  2. Chame o projeto de DilbertWebApplication e escolha Java EE 5, como mostrado abaixo.
  3. Assistente para Nova aplicação Web

  4. Clique em Terminar para deixar o IDE criar a aplicação.

A aplicação é criada e tem a seguinte aparência na janela Projetos:

Aplicação móvel

Usando o assistente para Cliente de serviços Web

Agora, adicionaremos um cliente de serviços Web para consumir o serviço DailyDilbert.

  1. Clique com o botão direito do mouse no nó do projeto DilbertWebApplication e escolha Novo > Cliente de serviços Web. Como alternativa, você também pode selecionar este assistente no assistente para Novo arquivo, como mostrado aqui:
  2. Assistente para Nova aplicação Web

    O assistente Cliente de serviços Web será exibido.

  3. Selecione a URL WSDL e indique a URL seguinte:

    http://www.esynaps.com/WebServices/DailyDiblert.asmx?WSDL

    Observação: o serviço Web está com ortografia incorreta, ele deve ser "DailyDilbert.asmx", enquanto, na verdade, ele é "DailyDiblert.asmx". Lembre-se de escrevê-lo incorretamente, caso contrário, o tutorial não funcionará!

  4. Chame o pacote de dilbert. Agora você deve ver o seguinte:
  5. Assistente para Cliente de serviços Web

  6. Clique em Terminar.

O IDE baixa o arquivo WSDL e cria os artefatos do lado do cliente, que você pode ver na pasta de construção, na janela Arquivos. A janela Projetos exibe a visualização lógica mostrada aqui:

Janela Projetos

Criando o cliente móvel

Nesta seção, criaremos um novo projeto de aplicação móvel. Em seguida, usamos o assistente para Cliente móvel para aplicação Web a fim de conectar a aplicação ao serviço DailyDilbert.

  1. Escolha Arquivo > Novo projeto. Em Categorias, escolha Mobility. Em Projetos, escolha Aplicação MIDP, como mostrado abaixo:
  2. Aplicação móvel

    Clique em Próximo.

  3. Indique DilbertViewer como o Nome do projeto e desmarque a caixa de verificação Criar Hello MIDlet.
  4. Aplicação móvel

  5. Clique em Terminar para criar o MIDlet.

A aplicação móvel é criada e tem a seguinte aparência na janela Projetos:

Aplicação móvel

Usando o assistente para Cliente móvel para aplicação Web

O assistente para Cliente móvel para aplicação Web gera um servlet que se conecta a uma aplicação Web que inclui um cliente de serviço Web.

  1. Na janela Projetos, clique com o botão direito do mouse no projeto DilbertViewer e escolha Novo > Cliente móvel para aplicação Web, como mostrado abaixo:
  2. Aplicação móvel

    Clique em Próximo.

  3. DibertWebApplication deve ser listado como a aplicação Web. Altere o nome Servlet pra DilbertServlet e chame o pacote de dilbert. Para Usos de cliente móvel, selecione Cliente de serviço Web na aplicação Web e selecione DailyDiblert.asmx, como mostrado abaixo:
  4. Aplicação móvel

    Clique em Próximo.

  5. Selecione DailyDilbertImage, como mostrado abaixo:
  6. Aplicação móvel

    Clique em Próximo.

  7. Altere o Nome do cliente para DilbertViewer, em um pacote chamado dilbert, como abaixo:
  8. Aplicação móvel

  9. Clique em Terminar.

Os novos artefatos são criados e a janela Projetos agora exibe a visualização lógica da aplicação, como abaixo:

Aplicação móvel

Criando o Visual MIDlet

Nesta seção, você criará um MIDlet visual e usará o designer para adicionar componentes e conectá-los a entre si.

  1. Clique com o botão direito do mouse no nó do projeto e escolha Novo > Visual MIDlet.
  2. Chame o arquivo de DilbertVisualMIDlet e especifique dilbert como o nome do pacote, como mostrado abaixo:
  3. Aplicação móvel

    Clique em Terminar.

    Um novo arquivo de MIDlet visual é criado e aberto no the Visual MIDlet Designer.

  4. Agora, use a Paleta (Ctrl-Shift-8) para arrastar e soltar um componente Alerta e um componente Tela de espera na tela, da seguinte forma:
  5. Aplicação móvel

    Você pode colocar os componentes em qualquer lugar desejado no designer.

Na próxima seção, criaremos um novo componente e o adicionaremos à paleta. Em seguida, o arrastaremos para o designer. Em seguida, conectaremos os componentes entre si para estabelecer os relacionamentos entre eles.

Criando o componente Tela

Nesta seção, criarmos um componente Tela personalizado para exibir o arquivo gráfico.

  1. Clique com o botão direito do mouse no nó do projeto DilbertViewer e escolha Novo > Outro. Em Categorias, escolha MIDP. Em Tipos de arquivo, escolha Tela MIDP, como mostrado aqui:
  2. Aplicação móvel

    Clique em Próximo.

  3. Indique DilbertCanvas para o Nome de classe MIDP e dilbert para o nome do pacote. Clique em Terminar.
  4. Abra o arquivo recém-criado no IDE e insira o código de forma que ele tenha a seguinte aparência:
  5. package dilbert;
    
    import javax.microedition.lcdui.Canvas;
    import javax.microedition.lcdui.Graphics;
    import javax.microedition.lcdui.Image;
    
    public class DilbertCanvas extends Canvas {
    
        private int coordX,  coordY;
        private int imageWidth,  imageHeight;
        private Image image;
        private int screenWidth,  screenHeight;
    
        /** Creates a new instance of DilbertCanvas */
        public DilbertCanvas() {
            screenHeight = getHeight();
            screenWidth = getWidth();
        }
    
        public void setImage(Image image) {
            this.imageWidth = image.getWidth();
            this.imageHeight = image.getHeight();
            this.image = image;
        }
    
        protected void paint(Graphics graphics) {
            graphics.setColor(255, 255, 255);
            graphics.fillRect(0, 0, getWidth(), getHeight());
            graphics.drawImage(image, coordX, coordY, Graphics.LEFT | Graphics.TOP);
        }
    
        protected void keyPressed(int keyCode) {
            int key = getGameAction(keyCode);
            if (key == DOWN) {
                if (coordY - screenHeight + imageHeight > 0) {
                    coordY -= 10;
                }
            } else if (key == UP) {
                if (coordY < 0) {
                    coordY += 10;
                }
            } else if (key == RIGHT) {
                if (coordX - screenWidth + imageWidth > 0) {
                    coordX -= 10;
                }
            } else if (key == LEFT) {
                if (coordX < 0) {
                    coordX += 10;
                }
            }
            repaint();
        }
            }
  6. Clique com o botão direito do mouse em DilbertCanvas e escolha Construir projeto. Agora você construiu e compilou o componente Tela.

Na próxima seção, adicionamos o componente à paleta e, em seguida, o arrastamos de lá e soltamos no designer.

Adicionando o componente Telas à Paleta

Em seguida, você adiciona o componente Tela à paleta e, em seguida, incorpora o componente Tela à aplicação.

  1. Abra o arquivo DilbertVisualMIDlet no editor e, em seguida, abra a Paleta (Ctrl-Shift-8). Clique com o botão direito do mouse na Paleta e escolha Gerenciador da paleta. O gerenciador da Paleta aparece, como mostrado abaixo:
  2. Aplicação móvel

  3. Clique em Adicionar à Paleta. O assistente para Adicionar à Paleta aparece, como mostrado abaixo, exibindo a aplicação móvel que contém a classe Java que você deseja adicionar à paleta:
  4. Aplicação móvel

    Clique em Próximo.

  5. Selecione dilbert.DilbertCanvas.
  6. Aplicação móvel

    Clique em Terminar.

  7. Verifique se você vê a adição da classe da tela, como mostrado abaixo:
  8. Aplicação móvel

Usando o componente Tela

  1. Abra o MIDlet visual e a Paleta (Ctrl-Shift-8). Arraste o item DilbertCanvas da categoria Personalizado na Paleta para o designer.
  2. Aplicação móvel

  3. Clique com o botão direito do mouse no componente Tela solto e escolha Novo/Adicionar > comando OK, como mostrado abaixo:
  4. Aplicação móvel

    No Navegador (Ctrl-7), agora você deve ver o seguinte:

    Aplicação móvel

  5. Crie um fluxo entre os componentes, conectando-os da seguinte forma:

    • Conecte a partir do Ponto de início do dispositivo móvel ao componente waitScreen.
    • Conecte a partir do comando Sucesso do componente waitScreen ao componente dilbertCanvas.
    • Conecte a partir do comando Falha do componente waitScreen ao componente alert.
    • Conecte a partir do okCommand do componente dilbertCanvas ao dispositivo móvel.
  6. Neste ponto, você deve ver o seguinte:

    Aplicação móvel

  7. Alterne para a visualização Código-fonte e altere o método getTask() como mostrado abaixo em negrito:
  8.    private byte[] dailyDilbertImage_returnValue;
    
       public SimpleCancellableTask getTask() {
            if (task == null) {
                // write pre-init user code here
                task = new SimpleCancellableTask();
                task.setExecutable(new org.netbeans.microedition.util.Executable() {
                    public void execute() throws Exception {
    
                        if (dailyDilbertImage_returnValue == null) {
                            DilbertViewer client = new DilbertViewer();
                            dailyDilbertImage_returnValue = client.dailyDilbertImage();
                            Image dilbertImage = Image.createImage(dailyDilbertImage_returnValue, 0, dailyDilbertImage_returnValue.length);
                            getDilbertCanvas().setImage(dilbertImage);
                        }
                    }
                });
            // write post-init user code here
            }
            return task;
       }
            

Transformando a imagem

Agora temos uma aplicação cliente para receber a imagem diariamente. Mas a imagem recebida está no formato GIF, que é muito grande para dispositivo móveis com memória limitada. Sendo assim, precisamos transformar a imagem para o formato PNG, que é menor e mais facilmente dimensionado para os muitos tamanhos de exibição diferentes disponíveis para dispositivos móveis.

  1. Abra o arquivo DailyDilbert_Proxy, mostrado abaixo:
  2. Aplicação móvel

  3. Altere o método dailyDilbertImage(), adicionando o código realçado abaixo:
    public byte[] dailyDilbertImage() throws RemoteException, Exception {
        try {
            ByteArrayInputStream in = new ByteArrayInputStream(getService().getDailyDilbertSoap().dailyDilbertImage());
            BufferedImage image = ImageIO.read(in);
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ImageIO.write(image, "png", out);
            return out.toByteArray();
        } catch (java.rmi.RemoteException ex) {
            throw ex;
        } catch (Exception ex) {
            throw ex;
        }
            }

Implantando a aplicação

Primeiro, implantamos a aplicação Web. Em seguida, executamos a aplicação móvel.

  1. Na janela Projetos, clique com o botão direito do mouse em DilbertWebApplication e escolha Implantar > Outro. Depois de um momento, o servidor se inicia, caso ainda não esteja em execução. Em seguida, a aplicação é implantada no servidor. Para vê-la implantada, observe na janela Serviços, como abaixo:
  2. Emulador, exibindo Dilbert.

  3. Clique com o botão direito do mouse no projeto móvel e escolha Executar. A aplicação móvel é executada. Um emulador de dispositivo se abre. Na tela do emulador do dispositivo, clique no botão abaixo de Iniciar. Em seguida, clique no botão Selecionar. A aplicação acessará a internet e retornará a faixa mais recente do Dilbert, como mostrado abaixo:
  4. Emulador, exibindo Dilbert.

Resumo

Este tutorial mostrou como usar o cliente móvel para aplicação Web a fim de criar rapidamente um MIDlet que consome um serviço Web.

Ele também demonstrou como você cria um componente personalizado e o adiciona à sua aplicação por meio do Visual Mobile Designer.



Próximas etapas

Além da documentação da ajuda interna do IDE sobre o desenvolvimento de CDC em Java ME, os tutoriais e os artigos sobre as tecnologias suportados pelo Mobility podem ser encontrados nos seguintes locais:

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by