corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

Serviço Web passnado dados binários, parte 2: Criando o módulo EJB

O objetivo deste tutorial é criar um módulo EJB que exponha dois métodos, o primeiro para fornecer uma única imagem, o segundo para fornecer todas as imagens. Normalmente, as imagens viriam de um banco de dados. Já que a recuperação do banco de dados não é o foco deste tutorial, simplesmente colocamos a imagem em uma pasta resource dentro do nosso módulo EJB.

Tutoriais desta trilha

 O conteúdo desta página se aplica ao IDE NetBeans 6.1
  1. Visão geral
  2. => Criando o módulo EJB
  3. Criando o serviço Web
  4. Testando o serviço Web
  5. Modificando o esquema e os arquivos WSDL para passar dados binários
  6. Criando o cliente Swing
  7. Registrando e otimizando o serviço Web

Criando o módulo EJB

No procedimento seguinte, você cria um Enterprise Java Bean (EJB) que contém as imagens que serão passadas pelo serviço Web como dados binários.

Para criar o módulo EJB:

  1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). É exibido o assistente para Novo projeto. Selecione Módulo EJB na categoria Empresa e clique em Próximo. A página Nome e localização se abre.
  2. Digite FlowerAlbum no campo Nome do projeto. Selecione a localização desejada para esse projeto — use a mesma localização dos outros projetos criados para esse aplicativo ponto a ponto. Mantenha as configurações padrão das outras opções e clique em Próximo. A página Servidor e configuração se abre.
  3. Selecione o servidor da aplicação e a versão do Java EE. Isso deve ser igual para todos os projetos no aplicativo ponta a ponta. O IDE cria um projeto do módulo EJB que se parece com este na janela Projetos:
    Visualização Projetos com o novo projeto EJB
  4. Clique com o botão direito do mouse no nó do projeto FlowerAlbum e escolha Novo > Bean de sessão. Como alternativa, clique com o botão direito do mouse no nó do projeto e escolha Novo > Outro. No assistente para Novo arquivo, escolha Bean de sessão em Empresa. O novo assistente para Bean de sessão aparece.
  5. Chame o bean de sessão de Flower, junto com flower.album como o nome do pacote. Garanta a seleção de Sem estado e Remota. Agora você deve ver o seguinte:
    Assistente para novo Bean de sessão com nome, localização, tipo e interface de sessão

    Clique em Terminar.

    O IDE adiciona um bean de sessão ao nó Pacotes de códigos-fonte, junto com uma interface remota, como mostrado aqui. No nó Enterprise Beans, é adicionado um novo nó para seu novo FlowerBean:


    Visualização Projetos mostrando o novo bean Flower
  6. Clique com o botão direito do mouse no nó FlowerBean e escolha Adicionar > Método comercial. A caixa de diálogo Método comercial se abre.
  7. Digite os valores seguintes na caixa de diálogo Método comercial:

    • Nome: getFlower
    • Tipo de retorno: byte[]

    Clique em Adicionar. Em Nome, digite nome. Deixe os outros valores inalterados. Agora você deve ver o seguinte:
    Caixa de diálogo Método comercial mostrando nome, tipo de retorno e parâmetro

  8. Clique na aba Exceções. Clique em Adicionar. A caixa de diálogo Localizar tipo se abre. Digite ES e selecione IOException (java.io).
    Caixa de diálogo Localizar tipo com IOException escolhido

    Clique em OK. Retorne à caixa de diálogo Método comercial, que mostra IOException.
    Caixa de diálogo Método comercial mostrando IOException escolhido

    Clique em OK. Agora você tem a base de um método em sua classe bean, e uma declaração de método na classe interface remota.

  9. Chame a caixa de diálogo Método comercial novamente. Dessa vez, indique os seguintes valores:
    • Nome: allFlowers
    • Tipo de retorno: List<byte[]>

    Como antes, adicione IOException à aba Exceções. Clique nas caixas de diálogo e o IDE cria o método.

  10. Na classe interface remota, observe que os métodos foram gerados com êxito pelas etapas anteriores:
    @Remote
    public interface FlowerRemote {
    
        byte[] getFlower(String name) throws IOException;
    
        List<byte[]> allFlowers() throws IOException;
    
    }

    Examine a classe bean e observe que os stubs foram criados para os métodos declarados:

    @Stateless
    public class FlowerBean implements FlowerRemote {
    
        public byte[] getFlower(String name) throws IOException {
            return null;
        }
    
        public List<byte[]> allFlowers() throws IOException {
            return null;
        }
    
    }

    Como alternativa, em vez de usar a caixa de diálogo Método comercial, você pode adicionar o código manualmente à classe bean e à classe interface remota. Entretanto, se você usar a caixa de diálogo Método comercial, o IDE adicionará o código à classe bean e à classe interface remota, simultaneamente.

  11. Corrija as importações nas classes bean e interface remota. Em cada classe, coloque o cursor em qualquer lugar no código, clique com o botão direito do mouse para abrir o menu de contexto e selecione Corrigir importações. É aberta uma caixa de diálogo mostrando todas as importações necessárias. Pressione OK e o NetBeans gera as instruções de importação. Como alternativa, pressione Ctrl-Shift-I em cada classe para abrir a caixa de diálogo Importação.

  12. Agora você declarou seus métodos na interface remota e implementou stubs na classe bean.

    A janela Projetos agora deve mostrar dois novos nós no nó Enterprise Beans, dos seus novos métodos, como mostrado aqui:
    Visulaização Projeto com dois nós Enterprise Bean

  13. Preencha a classe bean com o código seguinte, para expor uma única imagem e para expor todas as imagens:
    @Stateless
    public class FlowerBean implements FlowerRemote {
    
        private static final String[] FLOWERS = {"aster", "honeysuckle", "rose", "sunflower"};
    
        public byte[] getFlower(String name) throws IOException {
            URL resource = this.getClass().getResource("/flower/album/resources/"+name+".jpg");
            return getBytes(resource);
        }
    
        public List<byte[]> allFlowers() throws IOException {
            List<byte[]> flowers = new ArrayList<byte[]>();
            for (String flower:FLOWERS) {
                URL resource = this.getClass().getResource("/flower/album/resources/"+flower+".jpg");
                flowers.add(getBytes(resource));
            }
            return flowers;
        }
    
        private byte[] getBytes(URL resource) throws IOException {
            InputStream in = resource.openStream();
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] buf = new byte[1024];
            for(int read; (read = in.read(buf)) != -1;) {
                bos.write(buf, 0, read);
            }
            return bos.toByteArray();
        }
    
    }
  14. Crie um novo subpacote chamado resources. Copie as imagens seguintes para esse pacote:

    Na visualização Projetos, as imagens devem aparecer como mostradas aqui:


    Visualização Projeto mostrando imagens baixadas

    Em seu código, observe que os métodos getFlower e allFlowers usam as imagens deste pacote.

  15. Seu módulo EJB agora está completo! Na próxima seção, você cria um serviço Web que delega para o módulo EJB, a fim de recuperar as imagens nos pontos apropriados no código.

    Próximo passo:

    Criando o serviço Web


    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 .

Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems