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

This tutorial needs a review. You can open a JIRA issue, or edit it in GitHub following these contribution guidelines.

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

netbeans stamp 80 74 73
Figure 1. O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0
  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).

new file wiz folder
  1. Clique em Próximo. A página Nome e Localização será aberta. Nomeie a pasta wsdl .

wsdl folder name location
  1. Clique em Finalizar. A pasta wsdl é exibida na Janela Projetos.

wsdl folder
  1. Expanda o nó Web Services e clique com o botão direito do mouse no nó FlowerService. Selecione Gerar e Copiar WSDL…​

  1. 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).

generated wsdl and schema
  1. 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(serviceName = "FlowerService"*, wsdlLocation = "WEB-INF/wsdl/FlowerService.wsdl")*
  1. 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>
  1. 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>
  1. Agora, quando reimplantar o Web service na aplicação de Teste e chamar uma das operações, você verá que uma imagem é retornada corretamente:

ws tester goodschema

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:

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 nbj2ee@netbeans.org.