< Anterior | Próximo >

Lição 2.2: Ligar a Tabela de Funcionários à Origem de Dados do Serviço da Web

O aplicativo My Company Directory exibe uma lista de todos os registros de funcionários atuais no diretório. Os registros são exibidos em um JTable (employeesTable) como colunas ordenadas, incluindo o último nome, primeiro nome, e-mail e ID do funcionário. Para obter os registros para a tabela, você precisa ligar a employeesTable em um objeto de dados retornado pela origem de dados do serviço da Web de amostra.

Visão Geral dos Objetos de Dados, Origens de Dados e Binder

Para obter o objeto de dados local para employeesTable trabalhar, você utilizará o editor visual para incluir uma origem de dados ao aplicativo. A origem de dados conecta-se a um proxy de serviço da Web de amostra e descobre os métodos de serviço disponíveis para o aplicativo. Em seguida, você escolherá o método de serviço getLightEmployeeRecord, disponível da origem de dados. Finalmente, você ligará employeesTable em seu aplicativo aos campos retornados no objeto de dados da linha (lightEmployeeRecordRows).

É possível criar todas essas origens de dados e objetos de dados rapidamente e com facilidade, utilizando as classes de binder internas do Java Visual Editor. O visual editor fornece um conjunto de interfaces e classes genéricas, geradas no projeto ao ligar os componentes visuais aos depósitos de informações do provedor de dados. As classes de binder são geradas por padrão em um pacote denominado jve.generated. O visual editor fornece as classes de binder como uma implementação genérica, que pode ser personalizada e aprimorada adicionalmente para corresponder às necessidades do aplicativo. Este tutorial demonstra a força e a flexibilidade da utilização, mesmo que básica e simples, das classes de binder padrão.

Importante: Antes de iniciar este exercício, é altamente recomendável que você leia os seguintes tópicos da ajuda. Esses tópicos podem ajudá-lo a saber mais sobre a funcionalidade e a lógica por trás dos objetos de dados, origens de dados e binders fornecidos pelo Java Visual Editor:
  • Visão Geral dos Binders de Dados
  • Referência de API do Binder

Para este tutorial, você utilizará uma origem de dados do serviço da Web, diversos tipos de objetos de dados e vários binders em seu aplicativo. Ao incluir instâncias desses objetos em seu aplicativo, o editor visual inclui classes necessárias no pacote jve.generated em seu projeto, onde você possa estender, substituir ou reescrever a lógica da ligação de dados. O Java Visual Editor fornece suporte visual a objetos de ligação, mostrando na área livre da visualização de design os objetos e as origens de dados e conectores que seu aplicativo está utilizando. O visual editor traça linhas entre os componentes, os objetos de dados e as origens de dados para mostrar as ligações atuais a qualquer objeto selecionado.

O diagrama a seguir é uma visão geral simples de como os componentes visuais, binders, objetos de dados e origens de dados interagem. O aplicativo construído neste tutorial ilustra uma utilização um pouco mais complexa e criativa dos binders. Este diagrama não representa exatamente os binders, objetos e origens de dados no aplicativo de amostra em construção.

Figura 1. Esse Diagrama Ilustra um Relacionamento de Amostra entre Componentes Visuais, Conectores, Objetos de Dados e Origens de DadosEsse diagrama ilustra um relacionamento de amostra entre componentes visuais, conectores, objetos de dados e origens de dados

Na Figura 1, cada componente visual possui seu próprio binder, que o associa a um objeto de dados ou, no caso do botão, a uma origem de dados. Os binders para os campos de texto ligam o campo a uma propriedade específica do objeto de dados. Tanto o objeto de dados de linha quanto o objeto de dados neste diagrama obtêm seus dados de chamadas diretas a um serviço na origem de dados. O objeto de dados para os campos de texto utiliza um valor chave a partir da linha selecionada na tabela como seu argumento para chamar Service2, o que retorna um registro completo que, presumidamente, inclui informações adicionais sobre a linha selecionada na tabela. Esse registro completo, por sua vez, é utilizado como argumento para o binder de ação do botão ao chamar Service3, que pode ser um método que atualiza os valores digitados nos campos. Para obter explicações detalhadas dos objetos, binders e origens de dados, siga os links fornecidos anteriormente.

Gerar um Proxy do Serviço da Web em seu Projeto Utilizando o Arquivo WSDL Fornecido

Para trabalhar com o serviço da Web em execução em um servidor, o aplicativo Java requer um proxy Java ou cliente com o qual interagir. Utilizando um arquivo WSDL, é possível gerar um proxy Java no projeto Java, utilizando o assistente Cliente de Serviço da Web. O projeto MyDirectory inclui o arquivo EmployeeDirectory.wsdl, que será utilizado para gerar esse proxy. Após gerar o proxy Java, é possível criar uma origem de dados que representa o serviço da Web e inicia a ligação dos componentes visuais.

Importante: O arquivo WSDL utilizado no exercício assume que você implementou o serviço da Web em uma instalação local do WebSphere Application Server e utilizou a porta padrão para host local (http://localhost:9080). Se você implementou o arquivo EAR de maneira diferente, é necessário editar o arquivo WSDL adequadamente, antes de prosseguir.

Para gerar o proxy Java de serviço da Web no projeto:

  1. No menu principal, clique em Arquivo (File) > Novo (New) > Outro (Other) e selecione o assistente Serviços da Web (Web Services) > Cliente de Serviço da Web (Web Service Client). Se a categoria Serviços da Web não estiver sendo mostrada, selecione Mostrar Todos os Assistentes (Show all wizards).
  2. Utilize o assistente para definir o cliente de serviço da Web:
    1. Na Definição de Serviço (Service definition), digite o arquivo WSDL fornecido em seu projetp MyDirectory: /MyDirectory/EmployeeDirectory.wsdl
    2. No campo Tipo de Cliente (Client type), selecione Java proxy.
    3. Configure a barra deslizante para Implementar cliente (Deploy client).
    4. Certifique-se de que o servidor e o tempo de execução do serviço da Web estejam configurados adequadamente no servidor que estiver sendo executado. Esse tutorial foi testado de acordo com WebSphere v6.0 e WebSphere v6.1 com o tempo de execução IBM WebSphere JAX-RPC.
    5. Certifique-se de que o cliente proxy Java seja a saída para o projeto MyDirectory.

    Assistente Cliente de Serviço da Web

  3. Clique em Concluir (Finish). O assistente Cliente de Serviço da Web gera o proxy Java em um novo pacote (directory.service) no projeto.

Ligar a employeesTable a um Objeto de Dados de Linha Retornado pelo Serviço da Web

Como employeesTable é o primeiro componente visual sendo ligado neste aplicativo, é necessário criar uma origem de dados que aponte ao proxy do serviço da Web de amostra, incluído no projeto. Quando você ligar outros componentes visuais em exercícios posteriores, você reutilizará a origem de dados. Nesta etapa, você inclui a origem de dados do serviço da Web e o objeto de dados lightEmployeeRecordRows.

Para ligar a tabela de funcionários:
  1. Na visualização de Java Beans ou de design, selecione employeesTable. (Certifique-se de não selecionar o pai JScrollPane dele). Uma pequena guia etiquetada Ligação (Bind) é mostrada no topo de employeesTable na área de design.

    Guia Ligação no Canvas Gráfico JTable

  2. Clique na guia Ligação (Bind) no employeesTable. Também é possível clicar com o botão direito em employeesTable e selecionar Propriedades de Ligação (Binding Properties).
  3. Como ainda não há objetos de dados em seu aplicativo, é necessário incluir um novo. Clique em Novo Objeto de Dados da Origem de Dados (New Data Source Data Object).
  4. No campo Tipo de Origem (Source type), selecione Serviço da Web (Web service).
  5. Como você ainda não incluiu a origem de dados do serviço da Web em seu aplicativo, é necessário inclui-la agora. Próximo ao campo Origem de Dados (Data source), clique no botão ..., para abrir a caixa de diálogo Incluir Origem de Dados do Serviço da Web (Add Web Service Data Source), que procura por clientes de serviços da Web ou proxies disponíveis no projeto.
  6. Selecione o serviço da Web EmployeeDirectory e clique em Concluir (Finish). Uma nova origem de dados é incluída no arquivo DirectoryApp.java.

    Caixa de Diálogo Incluir Origem de Dados do Serviço da Web

  7. Na caixa de diálogo Novo Objeto de Dados de Origem de Dados (New Data Source Data Object), selecione getLightEmployeeRecords() no campo Serviço de Origem (Source service) e aceite o nome padrão para o novo objeto de dados: lightEmployeeRecordRows. Nenhum parâmetro é necessário para esse método de serviço. Clique em OK. O novo objeto de dados é criado e exibido na área de formato livre da visualização design.

    Caixa de Diálogo Novo Objeto de Dados da Origem de Dados

    Dica: Como você está ligando uma tabela, a caixa de diálogo Novo Objeto de Dados da Origem de Dados (New Data Source Data Object) exibe apenas os serviços que retornam objetos de dados de linha. Nesse caso, o método getLightEmployeeRecords() é o único serviço disponível que retorna uma matriz de objetos.
  8. Na caixa de diálogo Ligações de Dados da Tabela (Table Data Bindings), selecione o objeto de dados lightEmployeeRecordRows.
  9. Agora, é necessário selecionar as propriedades do objeto de dados lightEmployeeRecordRows que você deseja exibir em employeesTable:

    Caixa de Diálogo Ligações de Dados da Tabela

    1. Clique no botão de seta dupla Botão de Seta Dupla, para incluir todas as propriedades de objetos na lista Colunas da Tabela (Table columns).
    2. Utilize as setas para cima e para baixo para ajustar as colunas na seguinte ordem, de cima para baixo: lastName, firstName, email, employeeID
    3. Renomeie os títulos das colunas: Sobrenome (Last name), Primeiro Nome (First name), E-mail, ID do Funcionário (Employee ID)
      Dica: Após concluir a ligação da tabela, você pode sempre voltar, a qualquer momento, às propriedades de ligação e renomear e reordenar as colunas.
    4. Clique em OK.
Agora o employeesTable está ligado no objeto de dados lightEmployeeRecordRows utilizando um JRowTableBinder. Se você clicar no objeto de dados lightEmployeeRecordRows na área livre, o visual editor traça uma linha do objeto de dados à tabela. Na linha, o JRowTableBinder é representado pelo ícone do binder de tabelaÍcone do Binder de Tabela. Outra linha indica que o objeto de dados utiliza o webServiceDataSource como origem de dados.

Exibição das Linhas do Binder para JTable

Ponto de Verificação da Lição

Avisa as alterações ao projeto e aplicativo. Durante essa lição, você incluiu a origem de dados do serviço da Web, um objeto de dados de linha e um binder que liga employeesTable ao objeto de dados de linha.

Examine o novo pacote (jve.generated), criado no projeto para manter todas as classes de binder geradas pelo editor visual de Java. Observe também o novo pacote (directory.service), que mantém o proxy Java para o serviço da Web. Descreva ou resuma o que foi aprendido nessa lição.

Pacotes no Projeto MyDirectory

Agora, quando você executa o aplicativo My Company Directory, a tabela de funcionários é preenchida pelo serviço da Web com os registros de funcionário existentes.

< Anterior | Próximo >