Web Service Especificando Dados Binários, parte 4: Modificando os Arquivos WSDL e de Esquema

Nesta lição você adicionará o arquivo WSDL e o arquivo de esquema à aplicação web. Em seguida, você modificará o arquivo de esquema para interpretar arrays de bytes como Imagens. Você também editará o código-fonte do Web service para localizar corretamente o esquema e o arquivo WSDL. No processo, você é apresentado a várias ferramentas no IDE que o ajudam com os arquivos WSDL e de Esquema.

Você pode aplicar o procedimento desta seção a qualquer Web service JAX-WS para passar qualquer tipo MIME como dados binários. Iniciando um Web service que passe dados binários, como foi criado nas Lições 2 e 3, você personaliza o WSDL e o esquema XML do serviço. No arquivo de esquema XML personalizado, você adiciona um atributo expectedContentTypes="mime_type" ao elemento de retorno dos dados binários. Esse atributo informa ao cliente que os dados binários deverão ser mapeados para um tipo Java (de acordo com o mapeamento de tipo MIME > Java), em vez de para um array de bytes. Neste tutorial, você mapeará os dados binários para java.awt.Image, mas poderá mapear os dados binários para qualquer um dos tipos Java fornecidos na especificação do JAXB 2.0, conforme descrito no Guia do Usuário JAX-WS.

É possível fazer download de uma amostra completa do Web service do Catálogo de Amostras do NetBeans.

Lições Deste Tutorial

O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3 e 7.4
  1. Visão Geral
  2. Criando o Web Service
  3. Codificando e Testando o Web Service
  4. => Modificando os Arquivos de Esquema e WSDL para Passar Dados Binários
  5. Criando o Cliente Swing

Modificando o Arquivo de Esquema e WSDL para Passar Dados Binários

No procedimento a seguir, você cria arquivos WSDL e de Esquema XML modificados para o Web service criado em um tutorial anterior. Os arquivos WSDL e de Esquema modificados permitem que o Web service e os clientes que o consomem façam parsing dos dados da imagem JPEG que são passados como dados binários.

Para modificar os arquivos WSDL e de Esquema:

  1. Na janela Projetos, expanda o nó da aplicação Web FlowerService até chegar ao nó WEB-INF. Clique com o botão direito do mouse na pasta WEB-INF e selecione Nova > Pasta. (Talvez você precise selecionar Novo > Outro e, em seguida, a categoria Outro).
    Os nós do projeto Flower Service com o diretório WEB-INF
  2. Clique em Próximo. A página Nome e Localização será aberta. Nomeie a pasta wsdl.
    Página Nome e localização do assistente Novo Arquivo para nova pasta, mostrando wsdl e localização do nome em web/WEB-INF
  3. Clique em Finalizar. A pasta wsdl é exibida na Janela Projetos.
    Pasta wsdl na Janela Projetos
  4. Expanda o nó Web Services e clique com o botão direito do mouse no nó FlowerService. Selecione Gerar e Copiar WSDL...
  5. A caixa de diálogo Gerar e Copiar WSDL será aberta com uma árvore de navegação. Navegue para a pasta wsdl que foi criada (FlowerAlbumService > Web > WEB-INF > wsdl) e clique em OK.

    Agora, você vê FlowerService.wsdl e FlowerService_schema1.xsd no nó wsdl. Você também vê um novo nó para Códigos-Fonte Gerados (jax-ws).

    Janela Projetos que mostra os arquivos wsdl e de esquema copiados
  6. Explicitamente, faça com que o servidor de aplicações utilize sua própria versão do arquivo WSDL. Caso contrário, o servidor de aplicações gerará seu próprio arquivo WSDL. Abra FlowerService.java e localize a anotação @WebService. Adicione o parâmetro wsdlLocation="WEB-INF/wsdl/FlowerServiceService.wsdl" a esta anotação, como mostrado abaixo:
    @WebService(wsdlLocation = "WEB-INF/wsdl/FlowerService.wsdl")
  7. Modifique o arquivo de esquema FlowerService_schema1.xsd para que especifique o tipo de conteúdo do elemento esperado. Para identificar o elemento de retorno no arquivo de esquema, abra o arquivo de esquema e encontre os tipos complexos getThumbnailResponse e getFlowerResponse:
    <xs:complexType name="getThumbnailsResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="getFlowerResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
    </xs:complexType>
  8. Adicione os atributos a seguir aos dois elementos de retorno (<xs:element name="return".../>):.
    xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"

    Agora você deve ver o seguinte nas mesmas linhas.

    <xs:complexType name="getThumbnailsResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded" xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="getFlowerResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0" xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/>
    </xs:sequence>
    </xs:complexType>
  9. Agora, quando reimplantar o Web service na aplicação de Teste e chamar uma das operações, você verá que uma imagem é retornada corretamente:
    Aplicação Java com ws consumido

Agora que a aplicação de Teste confirmou que as imagens estão sendo retornadas corretamente, você pode criar um cliente Swing para recuperá-las e exibi-las.

Próxima Etapa:

Criando o Cliente Swing

Para enviar comentários e sugestões, obter suporte e se manter informado sobre os mais recentes desenvolvimentos das funcionalidades de desenvolvimento Java EE do NetBeans IDE, inscreva-se na lista de notícias .

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo