corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

Anexo SOAP binário ponto a ponto 3: Criando o serviço Web

O objetivo deste tutorial é criar uma aplicação Web que contenha um serviço Web. O serviço Web deve delegar para o módulo EJB criado anteriormente para a recuperação de imagens. Portanto, você precisa colocar o módulo EJB no classpath da aplicação Web.

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 serviço Web

No procedimento seguinte, você cria o serviço Web desta trilha de aprendizado. O serviço Web usa o módulo EJB criado anteriormente para recuperar dados binários.

Para criar o serviço Web:

  1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). É exibido o assistente para Novo projeto. Na categoria Web, selecione Aplicação Web. Clique em Próximo. A página Nome e localização se abre.
  2. Digite FlowerService 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. Clique em Terminar. O IDE cria um novo projeto da aplicação Web.
  4. Coloque o módulo EJB no classpath do projeto de aplicação Web, para que o serviço Web que você está criando tenha acesso ao módulo EJB. Primeiro, clique com o botão direito do mouse no nó Bibliotecas da aplicação Web e escolha Adicionar projeto, como mostrado abaixo:


    Menu de contexto do nó Bibliotecas mostrando Adicionar bilbiotecas

    Em seguida, vá para o módulo EJB e selecione-o. Agora você deve ver um novo nó, do módulo EJB, adicionado ao nó Bibliotecas da aplicação Web, como abaixo:


    Nó Bibliotecas mostrando o novo subnó do módulo EJB FlowerAlbum

  5. Clique com o botão direito do mouse no nó FlowerService e escolha Novo > Serviço Web. Como alternativa, escolha Novo > Outro e selecione Serviço Web em Serviços Web no assistente para Novo arquivo. O assistente para Novo serviço Web se abre.
  6. No assistente para Novo serviço Web, digite FlowerService em Nome do serviço Web e flower.album em Nome do pacote. Selecione Criar serviço Web a partir de bean de sessão existente e vá para o módulo EJB e selecione-o, como abaixo:


    Resultado

  7. Clique em OK na caixa de diálogo Explorar enterprise bean. Você retorna ao assistente para Novo serviço Web. Clique em Terminar. O IDE adiciona a infra-estrutura de um serviço Web ao seu aplicativo, que inclui stubs dos métodos obtidos a partir do módulo EJB, como mostrado abaixo:


    Visualização do código-fonte Java do novo serviço de flores

  8. Clique no botão de alternância Design no canto esquerdo superior do editor. O Visual Designer do serviço Web é mostrado, como abaixo:


    Visualização da GUI do designer do serviço Web do novo serviço de flores

    Você pode usar o Visual Designer do serviço Web para ver a estrutura do seu novo serviço Web imediatamente. Além disso, você pode adicionar funcionalidade ao serviço Web, clicando nos botões tais como Adicionar operação. Usando a seção Qualidade de serviço, você pode muito facilmente ativar recursos avançados, tal como a segurança do serviço Web.

  9. Clique no botão de alternância Código-fonte para voltar à visualização Código-fonte. Reescreva a classe para que ela tenha a seguinte aparência:
    @WebService(serviceName = "FlowerService")
    
    public class FlowerService {
    
        @EJB
        private FlowerRemote ejbRef;
    
        @WebMethod(operationName = "getFlower")
        public Image getFlower(String name) throws IOException {
            byte[] bytes = ejbRef.getFlower(name);
            return getImage(bytes, false);
        }
    
        @WebMethod(operationName = "getThumbnails")
        public List<Image> getThumbnails() throws IOException {
            List<byte[]> flowers = ejbRef.allFlowers();
            List<Image> flowerList = new ArrayList<Image>(flowers.size());
            for (byte[] flower : flowers) {
                flowerList.add(getImage(flower, true));
            }
            return flowerList;
        }
    
        private Image getImage(byte[] bytes, boolean isThumbnail) throws IOException {
            ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
            Iterator readers = ImageIO.getImageReadersByFormatName("jpeg");
            ImageReader reader = (ImageReader) readers.next();
            Object source = bis; // File or InputStream
            ImageInputStream iis = ImageIO.createImageInputStream(source);
            reader.setInput(iis, true);
            ImageReadParam param = reader.getDefaultReadParam();
            if (isThumbnail) {
                param.setSourceSubsampling(4, 4, 0, 0);
            }
            return reader.read(0, param);
        }
    
                }

O serviço Web agora está completo, delegando para o módulo EJB e expondo suas imagens.

Próximo passo:

Testando 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